2009-01-21 5 views
1

J'apprécierais quelques conseils sur la modélisation des services et des opérations dans WCF.Conception de services et d'opérations dans WCF

J'ai une série de domaines métier, chacun avec des méthodes sur mesure que je veux pouvoir utiliser sur WCF. Je suppose une vue OO serait quelque chose comme:

interface IBusinessDomain1 
{ 
    MyClass1 Method1(...) 
    MyClass2 Method2(...) 
} 

interface IBusinessDomain2 
{ 
    MyClass3 Method3(...) 
    MyClass4 Method4(...) 
} 

Mon inclination naturelle était de faire chaque interface un service et chaque méthode une opération, le problème que j'ai avec cela est que les opérations dans les domaines individuels pourraient bien avoir besoin tout à fait différent configurations de liaison. C'est-à-dire que Method1 peut avoir besoin d'être synchrone, Method2 peut avoir besoin d'être asynchrone. Lors de la définition des services et des opérations pour WCF, une meilleure approche serait de penser en termes de types de données et la façon dont les données doivent être envoyées? Peut-être regrouper les méthodes de tous les domaines d'activité qui devront travailler d'une manière particulière et les avoir dans un service? Je me demande comment d'autres personnes ont abordé des scénarios similaires?

La plupart des tutoriels WCF et des exemples que j'ai vus ont tendance à utiliser des modèles assez triviaux, souvent un service 'calculatrice' proposant des opérations 'add', 'subtract' etc qui partagent la même liaison.

Quelques conseils sur la façon d'aborder la définition de mes services et opérations seraient les plus appréciés, ou juste quelques liens vers d'autres lectures car je ne trouve pas grand-chose.

Merci à l'avance, Est-ce

Répondre

3

Je pense que le regroupement de vos contrats ensemble en ce qui concerne si oui ou non ils sont appelés de manière asynchrone est une mauvaise idée. Vous devriez toujours conserver les groupements logiques pour vos contrats qui ont du sens.

Vous devez également préciser les différentes configurations de reliure que vous pourriez appliquer à vos contrats. Si vous devez appeler une méthode sur un contrat de façon asynchrone sur le client, le service ne doit pas s'en préoccuper, car le client peut choisir de générer un contrat prenant en charge les opérations asynchrones (où vous obtiendrez le Begin * et le End * méthodes sur le contrat que l'usine de canal va générer pour vous). Cependant, si vous faites quelque chose comme si le service renvoyait un jeton que le client renvoyait au service pour vérifier l'état, vous pourriez envisager une interface de rappel, car cela rendra votre conception beaucoup plus propre. Si les différentes configurations de liaison concernent des modifications du point de terminaison (le canal de transport, par exemple), vous pouvez envisager différents contrats pour différents points de terminaison, mais je n'ai pas l'impression que c'est ce que vous recherchez. pour ici.

+0

Merci Casper qui est une réponse utile, m'a donné des choses à lire. – WillH

Questions connexes