Question

Nous avons plusieurs services, dont chacun devrait idéalement fonctionner indépendamment les uns des autres. L'utilisation principale des services est de soutenir notre webapp. Nous recherchons la meilleure façon d'utiliser Ibatis avec ces services.

Notre première approche, était d'avoir un projet avec le SqlSessionFactory et ont toutes les implémentations de service utilisent ce projet pour l'accès aux données. Cela signifie que projet dépend de tous les services (nous avions au service et impl séparé pour éliminer la dépendance du cercle) pour les objets de données, et il contient toutes les cartes sql. L'avantage serait une instance de SqlSessionFactory à tout moment, et une configuration à gérer. Bien que si un service est utilisée comme pour junits ou certains autres services publics, toutes les cartes SQL sont chargés Quoiqu'il en soit, et tous les services sont une dépendance.

Une autre approche serait d'avoir chaque service ont sa propre configuration ibatis et instance de SqlSessionFactory. Cela éviterait la nécessité de haut lieu de projet sur dépendances d'accès aux données, mais des moyens de plusieurs cas SQLFactory sur la webapp.

Je aime la deuxième approche, bien que je vois bien et du mal dans les deux.

Que feriez-vous? Qu'est-ce que vous ajoutez ou enlevez de mon argumentation?

S'il vous plaît Aide !!!

Était-ce utile?

La solution

Bien que je pense que la force de vos premiers points d'argument à la faiblesse de la SOA en général, je pense que si vous faites la SOA, il va à l'encontre tout le but de puis faire tous les services interdépendants les uns des autres.

Si vous faites SOA, vous acceptez le compromis entre l'utilisation des ressources plus inefficace à cause du découplage et de l'isolement des composants.

Autres conseils

Honnêtement, rester simple jusqu'à ce que vous trouviez un goulot d'étranglement ou votre application devient trop importante. Autrement dit, à moins que vous attendez des services à être mis à jour indépendamment sur leurs propres programmes.

Là où je travaille, il y a un code commun qui est partagé entre toutes les applications. Tout vient de la même source, mais est construit de manière indépendante dans chaque application. Ceci est probablement pas la meilleure solution, mais au moins il est facile de modifier le code commun avec des se soucier d'une application séparée en cours de déploiement. Et il permet un code commun au changement que d'autres applications sont introduites, avec des applications à effectuer précédemment déployées.

Si les deux solutions peuvent demander, vous avez probablement tous vos services fonctionnent sur la même machine virtuelle Java. À mon avis, vous devriez penser à l'exécution des composants séparés JVMs. Véritable Service Component Architecture est celui où vous avez plusieurs composants (EJB, par exemple) qui font fonctionner dans un environnement en cluster et parler les uns aux autres dans un couplage lâche habité (par JMS par exemple, ou Webservices ou RMI, etc.). Chaque composant est indépendant et peut-être fonctionne dans un serveur distant.

Dans ce cas, j'utiliser bien sûr la deuxième approche. Mais si votre application n'a pas besoin de ce découplage, vous devez utiliser la première approche, car il est plus efficace mémoire.

Il est après tout, une question de ce que votre demande a vraiment besoin.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top