Frage

Wir haben ein paar Projekte, bei denen es darum geht, eine Anwendung zu erstellen, die vielleicht zu 50 % aus benutzerdefinierten Funktionen besteht, dann aber beispielsweise ein Wiki, ein Forum und andere Komponenten einbezieht, bei denen es sich um „Räder“ handelt, die bereits erfunden wurden und die wir nicht haben Ich möchte von Grund auf neu schreiben.

Diese Drittanbieteranwendungen verfügen normalerweise über eigene Datenbanken, Designs und Authentifizierungssysteme.Meiner Erfahrung nach sind Dinge wie ein Single-Sign-On oder ein gemeinsames Thema oder das Markieren/Suchen über Entitäten in mehreren Unter-Apps hinweg ziemlich herausfordernde Probleme.Was sind einige der Best Practices für diese Art von Integrationsprojekten?

Bisher bestand unser Ansatz darin, Ihre Komponenten sorgfältig auszuwählen und diejenigen auszuwählen, die über eine klar definierte API verfügen, vorzugsweise über HTTP (wie REST oder SOAP), obwohl das nicht immer möglich ist (wir haben keine anständige gefunden). Forum, das so funktioniert).Gibt es Vorschläge, die man jedem geben kann, der dies versucht, was bei vielen von uns heutzutage immer häufiger der Fall ist?

War es hilfreich?

Lösung

Stellen Sie sicher, dass die Schnittstelle zwischen Ihrer Anwendung und der Drittanbieteranwendung oder -bibliothek so beschaffen ist, dass Sie sie für alle Fälle problemlos durch etwas anderes ersetzen können.In einigen Fällen handelt es sich bei der Software von Drittanbietern möglicherweise nur um eine Implementierung einer Standard-API (Java macht dies häufig mit JDBC, JMS, JNDI usw.).In anderen Fällen bedeutet dies, dass die Drittanbieterbibliothek in eine von Ihnen erstellte API eingebunden wird.

Natürlich gibt es Zeiten, in denen man diese Idee verwerfen und Dinge eng in die Software von Drittanbietern integrieren muss.Stellen Sie nur sicher, dass Sie Ihre Anwendung WIRKLICH an diesen Drittanbieter binden möchten.Sobald Sie diesen Weg eingeschlagen haben, ist es WIRKLICH schwer, umzukehren und Ihre Meinung zu ändern.

Andere Tipps

Wenn Sie sich für Open-Source-Bibliotheken entscheiden, wählen Sie solche mit einer guten Lizenz aus.Ich habe auf die harte Tour erfahren (beim Versuch, eine Anwendung als OEM zu erstellen), dass viele Unternehmen vor Lizenzen wie LGPL zurückschrecken.Ich werde nicht näher auf die Gründe eingehen, aber sie bevorzugen Lizenzen im Apache-, BSD- oder MIT-Stil.

Wählen Sie Werkzeuge aus, die es schon seit einiger Zeit gibt.Schauen Sie sich die Community an und stellen Sie sicher, dass sie aktiv ist.Sehen Sie, was andere Leute verwenden, und verwenden Sie diese Tools.

Wählen Sie Technologien aus, die gut zusammenarbeiten.Ich habe eine Anwendung zusammengestellt, die ORM und Webdienste verwendet.Spring Framework + Apache CXF + JPA für das ORM haben einen schönen Technologie-Stack geschaffen.Alle Werkzeuge, die ich verwende, lassen sich in Spring einfach zusammenbinden, sodass sie problemlos zusammen verwendet werden können.Das Letzte, was Sie tun möchten, ist, Tools auszuwählen, für deren gemeinsame Verwendung Sie eine Menge Code schreiben müssen.

Wählen Sie Technologien, die auf Standards basieren.Wenn die Bibliothek oder das Tool ausfällt, können Sie auf diese Weise problemlos zu einer anderen wechseln, die denselben Standard verwendet.

Donald Knuth sagte, dass modifizierbarer Code noch besser sei als wiederverwendbarer Code. Wenn es also keine API gibt, sollten Sie nach einer Open-Source-App suchen, die gut geschrieben ist und daher angepasst werden kann.

Was Datenbanken und Anmeldesysteme und andere Programmierteile betrifft (ich verstehe nicht, wie z. B.(Themen könnten von Vorteil sein) können Sie je nach den Umständen auch versuchen, Dinge so zu verpacken, dass das Modul glaubt, es sei eigenständig, aber tatsächlich mit Ihrem Code kommuniziert.

Mein Ansatz bestand darin, für einige Kernfunktionen Code von Drittanbietern zu verwenden.Ich verwende beispielsweise Subsonic für meinen Datenzugriff, Devexpress-Komponenten für die Benutzeroberfläche und Peter Blum Data Entry Suite für die Dateneingabe und -validierung.Subsonic ist Open Source, für die Steuerelemente von Devexpress Peter Blum ist der Quellcode gegen eine zusätzliche Gebühr erhältlich.Es wäre für mich unmöglich, die Funktionalität dieser Steuerelemente zu erhalten, wenn ich versuchen würde, sie selbst zu schreiben.

Dieser Ansatz ermöglicht es mir, mich auf die benutzerdefinierten Funktionen meiner Anwendung zu konzentrieren, ohne mir Gedanken darüber machen zu müssen, wie ich auf die Datenbank zugreife oder wie ich eine bearbeitbare Baumliste erstelle, die hübsch aussieht.Sicher, ich habe kein vollständig konfiguriertes und funktionierendes Forum, aber ich weiß, dass ich eine SQL-Datenbank für meine App verwenden werde und nicht versuchen muss, verschiedene Datenspeicherkomponenten zum Zusammenarbeiten zu bringen.Ich habe kein Wiki, aber ich weiß, wie man die Devexpress-UI-Komponenten verwendet, und die Formatierung und Validierung der Dateneingabe ist mit den Steuerelementen von Peter Blum ein Kinderspiel.Mit anderen Worten: Erlernen Sie Tools (und wählen Sie diese natürlich sorgfältig aus), die die Entwicklung all Ihrer Projekte beschleunigen. Dann können Sie sich auf Teile Ihrer Anwendung konzentrieren, die angepasst werden müssen.

Ich mache mir keine allzu großen Sorgen, ob es Open Source ist oder nicht, solange der Quellcode verfügbar ist.Wenn es Open Source ist, spende ich für das Projekt.Wenn es sich um eine kommerzielle Komponente handelt, zahle ich einen fairen Preis.Auf jeden Fall tragen die Tools dazu bei, dass das Programmieren Spaß macht und die Ergebnisse datenintegriert sind und großartig aussehen.Wenn ich ein Wiki oder ein Forum entwickle, weiß ich, dass ich sie nahtlos zusammenarbeiten lassen kann.Schließlich gibt es alle von mir genannten Tools schon seit langer Zeit und sie wurden von herausragenden Entwicklern mit hervorragendem Ruf geschrieben.

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