2010-04-20 6 views
2

En ce qui concerne l'orientation service, notre équipe est impliquée dans de nouvelles conceptions d'applications. Nous sommes constitués d'un groupe de 4 développeurs et d'un manager (qui sait quelque chose sur la programmation et les systèmes distribués). Chacun ayant sa propre opinion sur la conception du service. Il s'agit d'un système distribué: une interface utilisateur (application Web) accédant aux services dans un serveur dédié (à l'intérieur du pare-feu), pour obtenir les opérations logiques métier. donc nous avons eu 2 principales que je Approches liste ci-dessus:Meilleure approche pour concevoir un système orienté service

services modulaires

Avoir de nombreux modules, chacun composé d'un service (WCF). Exemple: namespaces SystemX.DebtService, SystemX.CreditService, SystemX.SimulatorService

Un service unique

Toute la logique métier est centralisée dans un service unique. Exemple: SystemX.OperationService. L'application Web appelle le même service pour toutes les opérations.

Selon vous, quoi de neuf? Ou avoir une autre approche est préférable pour ce scénario?

Répondre

1

Un service Web est une interface. L'invocateur ne se soucie pas du fonctionnement d'un service, il a simplement besoin de connaître les arguments à fournir et les résultats à attendre. Donc, une multitude de services simples et discrets est probablement préférable. Derrière leurs interfaces, ils peuvent tous se joindre à un grand ensemble de logique métier. On s'en fout?

En pratique, l'apprentissage de ces services partagera certains éléments de la fonctionnalité SystemX et comportera des éléments qu'il utilisera seul. Certains peuvent combiner des éléments de SystemX et SystemY. Si SystemX et SystemY sont des applications héritées, il ne sera peut-être pas possible de les changer, nous devons donc travailler avec eux tels qu'ils sont. Dans d'autres scénarios, il est possible d'exposer imposer la modularité sur eux.

+0

c'est vrai .. L'interface devrait être simple. en dessous de cette interface, vous pouvez tout mettre dans Business Logic qui se soucie vraiment? –

+0

En séparant les implémentations, vous pouvez localiser et réduire l'impact de tout changement potentiel futur. Par exemple, les modifications apportées à DebtService ne nécessitent pas de test de régression de CreditService car elles peuvent être mises à jour individuellement sans s'influencer les unes les autres. – crowne

+0

@APC - De cette façon (rejoindre la logique métier), nous tombons dans le problème exposé par @crowne: avoir à faire des tests de régression dans les deux services exposés. Mais en les séparant, il est nécessaire de faire des changements dans de nombreux endroits. – Erup

Questions connexes