Frage

Wir haben mehrere Dienste, von denen jeder im Idealfall unabhängig voneinander arbeiten sollen. Die primäre Nutzung der Dienste ist unser Webapp zu unterstützen. Wir sind für den besten Weg, die Suche zu verwenden iBatis mit diesen Diensten.

Unser erster Ansatz war ein Projekt mit dem SqlSessionFactory haben und alle Service-Implementierungen dieses Projekt für den Datenzugriff verwenden. Dies bedeutet, dass Projekt auf alle Dienste ab (wir mussten separate Service und impl Kreis Abhängigkeit beseitigen) für die Datenobjekte, und es enthält alle SQL-Karten. Der Vorteil wäre eine Instanz SqlSessionFactory jederzeit sein, und eine Config zu verwalten. Obwohl, wenn ein Dienst wie für junits verwendet wird, oder ein anderes Dienstprogramm, alle SQL-Karten unabhängig geladen werden, und alle Dienste sind eine Abhängigkeit.

Ein weiterer Ansatz wäre zu haben sein jeder Dienst seine eigene ibatis config und Instanz SqlSessionFactory haben. Dies würde die Notwendigkeit für das Mekka der Abhängigkeiten auf dem Datenzugriffs Projekt, sondern Mittel mehr Instanzen von SQLFactory auf der Webapp vermeiden.

ich wie der zweite Ansatz, obwohl ich sehe gut und schlecht in beide.

Was würden Sie tun? Was Sie hinzufügen oder von meinem Argument wegzunehmen?

Bitte Hilfe !!!

War es hilfreich?

Lösung

Obwohl ich glaube, dass die Stärke des ersten Argument verweist auf die Schwäche von SOA im Allgemeinen, ich glaube, dass, wenn Sie SOA tun, besiegt sie der ganze Zweck dann aufeinander alle Dienste voneinander abhängig zu machen.

Wenn Sie SOA tun, werden Sie den Kompromiss von ineffizienter Ressourcennutzung zum Zweck der Entkopplung und Trennung der Komponenten zu akzeptieren.

Andere Tipps

Ehrlich gesagt, es einfach halten, bis Sie eine Performance-Engpass finden oder Ihre Anwendung zu groß wird. Das heißt, es sei denn, Sie Dienstleistungen erwarten unabhängig auf ihren eigenen Zeitplan aktualisiert werden.

Wo ich arbeitet, gibt es gemeinsamen Code, der bei allen Anwendungen gemeinsam genutzt wird. Es kommt alles aus der gleichen Quelle, ist aber unabhängig in jede Anwendung integriert. Dies ist wahrscheinlich nicht die beste Lösung, aber zumindest macht es einfach gemeinsamen Code zu modifizieren, mit aus sich Gedanken über eine separate Anwendung bereitgestellt werden. Und es ermöglicht gemeinsamen Code zu ändern, da mehr Anwendungen eingeführt werden, mit bisher eingesetzten Anwendungen heraus zu bewirken.

Wenn beide Lösungen anwenden können, haben Sie wahrscheinlich alle Ihre Dienste auf derselben JVM ausgeführt werden. Meiner Meinung nach sollte man denken, die Komponenten in separater JVMs laufen. Ein echter Service Component Architecture ist eine, wo man mehrere Komponenten (EJBs zum Beispiel) haben, dass Lauf in einer Cluster-Umgebung und miteinander reden in einem lose gekoppelten bemannten (durch JMS zum Beispiel, oder Webservices oder RMI, etc). Jede Komponente ist unabhängig und möglicherweise läuft in einem Remote-Server.

In diesem Fall würde ich verwendet natürlich den zweiten Ansatz. Aber wenn Ihre Anwendung diese Entkopplung nicht benötigen, sollten Sie den ersten Ansatz verwenden, da es mehr Speicher effizient ist.

Es ist schließlich eine Frage, was Ihre Anwendung wirklich braucht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top