2012-04-11 20 views
6

Aus persönlichen und universitären Forschungsgründen denke ich über den Aufbau eines einfachen CRM mit einer serviceorientierten Architektur nach. Seine Bedeutung ist nur die Architektur selbst zu erklären, nicht die kommerzielle Nutzung.Vorschläge für serviceorientierte Architektur

Ich dachte an die Implementierung eines CRM, das einen einfachen Analyseservice und Kundenpflege bietet (Benutzerspeicherung, persönliche Kommentare und einige andere Dinge).

Die Architektur, die ich Gestaltung definiert bin: - WebGUI (ein Kunde von den anderen Diensten) - AnalyticsService (ein Dienst, der Daten empfängt, analysiert und sammeln es) - CustomerCareService (ein Dienst, der auf RESTful-APIs verwendet CRUD-Operationen anwenden).

Jeder Dienst hat seine eigene Datenbank und ist völlig unabhängig von anderen. Sie legen eine öffentliche Schnittstelle offen. Die Schnittstelle muss natürlich eine Art von Authentifizierung bereitstellen, um unautorisierte Anfragen zu verweigern. Die Vorteile, die ich in dieser Art von Architektur erklären möchte, sind die Möglichkeit, alle Dinge unabhängig zu machen und sie zu kombinieren, um neue Dienste anzubieten (zum Beispiel, wenn es einen OrderService für die Abwicklung von Bestellungen gäbe, wäre es einfach) um es mit dem Kunden unter Verwendung der öffentlichen APIs zu kombinieren). Der große Vorteil für mich ist, dass es einfach genug ist, andere Clients zu erstellen, die diese Dienste nutzen.

Ich weiß nicht, was ist eine gute Authentifizierungsmethode, das könnte einfach zu implementieren, ich bin mir auch nicht sicher, wie diese APIs (verwenden Sie XML oder plain REST APIs mit GET/POST-Daten). Ich habe mit Amazon, PayPal und anderen Unternehmens-APIs gearbeitet, sie scheinen REST-Dienste zu verwenden (paypal verwendet einen hässlichen _cmd-GET-Parameter, während Amazon eine bessere URI verwendet), um zu wissen, was zu tun ist, aber etwas über SOAs zu lesen XML. Natürlich muss ich auch berücksichtigen, dass die Weboberfläche in der Lage sein muss, den angemeldeten Benutzer zu erkennen, die Berechtigungen (Token oder was auch immer) zu erhalten und diese mit Diensten zum Anzeigen von Informationen zu nutzen. Also ich bin mir nicht sicher, SOA ist die Art von Architektur, die ich wirklich aufbaue ... ist es SaaS statt SOA? Ich denke, es wäre besser, RESTful-Anwendungen zu verwenden, mit JSON oder etwas ähnliches, um es zu implementieren (ich bin kein großer Fan von XML, ich finde es zu ausführlich).

Aus Gründen der Klarheit Ich bin Listing hier meine Fragen:

  1. Ist diese Art von Architektur genannt SOA oder SaaS (oder beides)?
  2. Was ist eine gute Implementierung für das, was ich erhalten möchte? (bitte erläutern Sie es so detailliert wie möglich)
  3. Welche Art von Authentifizierung ist besser geeignet für einen Client (Benutzer-Token vs OAuth oder ähnlich)
  4. Haben Sie Vorschläge für diese Art von Projekt?

Ich habe ungefähr 3 Monate, um es zu tun, also kann ich etwas wirklich Komplexes nicht tun (neben der Tatsache, dass es für einen einzelnen Programmierer nicht realistisch wäre).

Ich kenne Python (WSGI-Frameworks), Ruby on Rails, C/C++ und andere Sprachen (.net ausgeschlossen) und ich möchte es in einer Linux-Umgebung (MySQL oder Postgres oder sogar ein NoSQL, wenn Sie Haben Sie einen Vorschlag für die richtige Wahl), könnte ich auch mehrere Sprachen kombinieren, die diese Dienste unabhängige Programme sind.

Was ich hier möchte, ist ein guter Standpunkt und ein guter Vorschlag.

Danke!

Antwort

1

Ich würde SaaS als Geschäftsmodell und nicht als Architektur definieren; Wie bei allen Geschäftsdomänenanforderungen wird es jedoch die Systemarchitektur beeinflussen, aber das ist es selbst nicht. Was Sie definiert haben, ist eine serviceorientierte Architektur.

Ihre Aussage "unabhängig und die Fähigkeit, sie zu kombinieren, um neue Dienste anzubieten" ist die wesentliche nicht funktionale Designanforderung, die SOA vorschlägt.

Gute Implementierung für SOA ist über gut definierte und flexible Schnittstellen, mit sehr klare Abgrenzung der Verantwortlichkeiten. Es ist jedoch schwierig, darüber zu schreiben. Der Beweis ist im Essen; Bietet es diese flexible Wiederverwendung? Mein Vorschlag besteht darin, SOA-Entwurfsmusterressourcen zu lesen und die definierenden Merkmale in Bezug auf den geeigneten Kontext zu verstehen. Wenden Sie dann das Prinzip der einheitlichen Verantwortung an, um eine angemessene Abstraktionsebene zu erreichen. c.f. (Domain) Space Based Architecture ist eine Art von SOA Meta-Muster.

In Bezug auf die Autorisierung, empfehle ich, den Service-Ansatz zu verfolgen, verwenden Sie ein verteiltes Verzeichnis Services System wie Open LDAP, und beachten Sie, dass völlig in Ordnung für Service bietet und Benutzer ihre eigenen Anmeldeinformationen haben und Sie Public-Private-Schlüssel verwenden können zum Signieren von Nachrichten.

Der Hauptvorschlag Studie ist und aus der Erfahrung anderer lernen:

+0

Danke, tolle Antwort! Du hast es richtig gemacht, dass Ressourcen sehr hilfreich sind, ich habe auch ein paar Bücher gekauft, es ist ein sehr interessantes Geschäft! –

0

SOA Kräfte nicht XML zu verwenden.

Derzeit dominieren Web-Technologien und definieren Zukunft. So haben wir in meiner Firma JSON RESTful Services als Grundlage gewählt. Und SOA als Prinzipien.

Es gibt keinen Sinn Sprachen vorzuschlagen, weil der Zweck von SOA und guter Umsetzung ist - jede Sprache oder Rahmen zu ermöglichen,

(FYI verwendet wird, verwenden wir Java mit Spring MVC-basierten Web-Diensten, Node.js, PHP)

Verwandte Themen