Frage

Wir sind auf einen neuen Middle-Tier-Dienst einsteigen, die internen Client-Systeme in einigen zugrunde liegenden Datenspeichern zu erstellen und zu aktualisieren und Abfrage Datensätze ermöglicht. Der Dienst wird aggregieren so viele wie drei separate zugrunde liegende Datenspeicher. Für die Zwecke dieser Frage annehmen:

Datenspeicher # 1: Proprietary XML-Datenbank
. Datenspeicher # 2: Off the shelf relationale Datenbank
. Datenspeicher # 3:. Flachdateispeicher (Dateien als binär gespeichert)

Die Kunden wissen nicht (noch Pflege), die Datenspeicher sie abfragen / udpating. Der neue Dienst wird diese Entscheidung treffen. Meine Frage ist: Soll mein API XML oder Objekte aussetzen? Z.B. Die neue API wird eine Add-Methode hat. Unter der Annahme, dass unser System ein Auto Speichersystem ist, dann ist die Add-Methode der API kann wie folgt aussehen:

AddNewCar( CarObject car )

oder, es könnte wie folgt aussehen:

AddNewCar( string carXml )

Nun, obwohl die zweite Methode schwach bei Eintrag eingegeben wird, wird die XML sofort als Minimum gegen Schema validiert werden.

Der neue Service wird in C # geschrieben wird (noch nicht auf der Version entschieden, aber wahrscheinlich 3 / 3.5 mit WCF). Kunden der API könnten C # / VBA / VB.Net / C ++ / Java).

Jede weitere Details informieren Sie mich bitte. Dank


Update: Beachten Sie, dass der API auch XML über einen Nachrichtenbus veröffentlichen. Z.B. wenn ein neues Auto hinzugefügt wird, wird das Auto XML veröffentlicht werden, so dass jeder, der in neuen Autos interessiert ist, wird benachrichtigt.

War es hilfreich?

Lösung

würde ich sagen, ein Objekt API aus. Obwohl nicht für die in einem anderen Beitrag oben genannten Gründe -., Dass XML auszusetzen, was zu einem festen Format, das schwieriger zu ändern

Argumentieren, eine API von stark typisierten Geschäftsobjekten ist so schwierig, wie XML zu ändern - beides erfordert erneut Kompilierung und neu Gebäude. Also das ist nicht der Grund, warum Sie sollten XML verwerfen.

Der Grund - IMNSHO - ist, dass der Grad der Abstraktion. Auf der API-Ebene, sprechen Sie in Bezug auf welche Geschäftsobjekte oder Dienstleistungen, welche Aktionen, welche anderen Business-Objekten durchführen. Daher muss die API in Bezug auf Business-Objekte sprechen.

Wie in einem anderen Beitrag erwähnt hier schon, man kann immer die Business-Objekte mit XML-Darstellungen zurück. Halten Sie die XML-Darstellungen Ihrer Geschäftsobjekte und Services auf einer niedrigeren Ebene der Abstraktion, die Ihre API werden Sie die Flexibilität von XML bieten, während gleichzeitig so dass Sie eine höhere Level-API erstellen, die gute Semantik hat.

Andere Tipps

Sie sollten nicht die XML freizulegen, wie dies Ihr Format behebt und alle zukünftigen Entscheidungen können Sie sich über Infrastruktur konfrontiert. Ich würde immer gehen, um die stark typisierte Route, die Ihnen richtig abstrakt Ihre Implementierung weg von der Nutzung zu gewährleisten.

Wenn Sie die XML-Route und finden Sie heraus, teilweise durch die Entwicklung, dass der XML aus irgendeinem Grunde zu ändern, wird es viel schwieriger, alle Anwendungen Ihrer API zu ändern, dieses Problem zu beheben, als wenn Sie stark typisierten die API und versteckte das XML Detail hinter den Objekten.

Sie sollten die API-Objekte und nutzt WCF erstellen einen XML-API zur Verfügung zu stellen, wenn nötig.

Sie sollten eine API-Objekte erstellen und dann eine Web-Service-Schnittstelle um diese API erstellen (zB für Java würden Sie auf Ihrer Schnittstelle verwenden Java2WSDL und wsdl2java dann ein Skelett serverseitige Implementierung oder clientseitige Implementierung erstellen ich bin sicher, dass eine entsprechende Methodik in WCF existiert), dass alle anderen Systeme abfragen können.

Wie Sie mehrsprachige Kunden haben, denke ich, ein Web-Service die beste Wahl ist, und (die Business-Logik Implementierung ignoriert wird) ist nur wenige Minuten von der Arbeit auf Ihre API. Sie können Ihre WSDL-Datei oder XSD-Dateien zu allen Client-Software-Entwickler verteilen, die sie dann einfach und schnell an Ihrem System-Schnittstelle.

Gewiß ist der stongly getippt Ansatz am einfachsten von einer Endbenutzer-Entwickler Perspektive sein wird, das ist das, was ich würde es vorziehen. Wenn jedoch letztlich alles hinter den Kulissen zu XML-Format konvertiert oder Sie unsicher sind, weicht nähern Ihre Kunden nehmen, würde ich empfehlen, auf jeden Fall beide unterstützt.

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