2016-06-20 15 views
0

Es gibt dieses Design-Problem, das ich bei der Arbeit herausfinden möchte. Würde einige Eingaben schätzen.Desing-Muster zum Entwerfen einer Java-Bibliothek

Wir haben eine Core-C-Anwendung, die als Interface-Engine fungiert, damit mehrere Geräte miteinander kommunizieren und Nachrichten in verschiedenen Formaten austauschen können. Diese Anwendung wird auf einem Server installiert und eine Vielzahl von Geräten kann die Kommunikation mit diesem Server initiieren und Nachrichten austauschen. Jetzt versuchen wir, den Anwendungsbereich dieser Anwendung zu erweitern, indem wir eine Web-Schnittstelle für eine Teilmenge von Operationen zur Verfügung stellen - hauptsächlich die Vielzahl von Geräten überwachen, die mit dem Server verbunden sind.

Die Architektur, die ich im Hinterkopf habe, ist eine Java-Bibliothek zu schreiben, die verwendet werden kann, um mit der Kern-C-Anwendung zu sprechen. Erstellen Sie anschließend eine REST-API, die Aufrufe an diese Java-Bibliothek sendet. Auf diese API wird von der Front-End-Anwendung weiter oben im Stapel zugegriffen. Ich bin auf der Suche nach Vorschlägen, welches Designmuster für diese Bibliothek verwendet werden soll. Die Kernaufgabe, die es tut, ist die Überwachung einer ganzen Reihe von verschiedenen Geräten, die miteinander kommunizieren. Jede Hilfe wird geschätzt.

+0

Wenn Sie ins Internet gehen, nehmen Sie sich etwas Zeit, um Spring-Boot zu betrachten. Microservices würde für diese Situation gut funktionieren. Außerdem können Sie Ihr Web-Backend vom Backend trennen, das die Kommunikation implementiert, und plötzlich öffnet es sich für viele andere Anwendungen. – Kieveli

Antwort

1

Die Kernaufgabe, die es tut, überwacht eine ganze Reihe von verschiedenen Geräten, die miteinander kommunizieren.

Alles, was Sie tun müssen, ist ein interface zu verwenden!

interface Device { /* put methods that will be used to monitor the devices */ } 

class FooDevice implements Device { /* ... */ } 

class BarDevice implements Device { /* ... */ } 

// ... 

Die Architektur, die ich im Sinne habe, ist eine Java-Bibliothek zu schreiben, die verwendet werden können, um den Kern C-Anwendung zu sprechen.

Falls Sie nicht wissen, die Java Native Interface mit der einfachste (und wahrscheinlich der einzige) Standard Weg, dies zu tun.

+1

JNI ist die Standardmethode, aber nicht die einzige Möglichkeit, systemeigenen Code aus Java zu verwenden. Sie können beispielsweise auch [JNA] (https://en.wikipedia.org/wiki/Java_Native_Access) verwenden, das einfacher als JNI sein soll. – Jesper

+1

Tatsächlich, wenn Leistung wichtig ist, ist es besser, [JNR] (https://github.com/jnr/jnr-ffi) anstelle von JNA zu verwenden. JNR so schnell wie JNI, weil es Bytecode-Generierung verwendet, während JNA Reflektion verwendet. In der gleichen Zeit JNR so einfach wie JNA. – SerCe

Verwandte Themen