2009-06-03 4 views
1

Ich habe ein Projekt auf meinem Weg: Geräte mit ihrem eigenen System in C geschrieben, und eine Windows-Anwendung für die Verwaltung von Aufgaben (Senden von Konfigurationen, Abrufen aufgezeichneter Daten von Geräten, Überwachung des Gerätezustands). Ich habe Flexibilität bei der Auswahl der Technologie, die ich verwenden werde. Die Anforderungen sind gerade ziemlich unscharf, also sollte es etwas flexibel sein. Das primäre Kommunikationsprotokoll ist TCP. Wir können COM-Ports als Wartungsoption verwenden, wenn die normale Kommunikation beispielsweise aufgrund einer Netzwerkstörung fehlschlägt.WCF-Service und Kommunikation mit Geräten

Ich erwäge die Verwendung eines WCF-Dienstes als "Proxy" zwischen der Anwendung und den Geräten. Die App sendet Daten an den Dienst, der Dienst verarbeitet die Daten und sendet TCP-Pakete an die Geräte (Daten in Paketen sind für Geräte verständlich). Geräte reagieren darauf, TCP-Pakete zurück an den WCF-Dienst zu senden, der die verarbeitete Nachricht an die Anwendung sendet. Ist diese Verwendung von WCF sinnvoll?

WCF kann leicht von webapp zugegriffen werden so neben normalen Windows-Anwendung könnten wir unser System sexy machen, aber ist es das wert? Was denkst du, teilen Sie Ihre Ideen, bitte :)

+0

Als ich mehr über WCF gelesen habe, scheint es nicht gut (oder überhaupt) mit nonWCF-Clients zu funktionieren, also glaube ich nicht, dass mein Szenario mit Geräten, die Daten an den WCF-Dienst senden, funktioniert. Ist das Hinzufügen eines zusätzlichen Socket-Listeners zwischen ihnen eine gute Lösung? – grapkulec

Antwort

1

Wie ich es verstehe, denken Sie über eine Systemarchitektur mit drei Elementen nach. Eine Windows-Anwendung, eine Reihe von Geräten und dann ein zusätzlicher Dienst, der als Proxy oder Vermittler fungiert und die Kommunikation zwischen den beiden vermittelt.

Erste Frage: Gibt es einen Grund, warum die Verwaltungsanwendung keine Verbindung zu den Geräten selbst herstellen kann? Die Windows-App, die für die Verwaltung verwendet wird, sollte in der Lage sein, einen Socket für die Geräte zu öffnen, genauso einfach wie eine andere App. Warum würdest du nicht? Ich denke, eine andere Möglichkeit, dies zu fragen ist, Was ist die Rechtfertigung, den Broker, das dritte Element, in die Architektur einzuführen? Gibt es eine Asynchronität, die Sie einführen möchten? Es ist eine Frage des Umfangs - vielleicht ist die Anzahl der Geräte so groß, dass Sie möchten, dass eine separate App die Kommunikation mit allen verwaltet, anstatt direkt von einer App mit einer Benutzeroberfläche zu verbinden. Geht es um die Netztopologie? Bevor Sie überlegen, welche Technologie Sie im Broker einsetzen möchten, sollten Sie zunächst entscheiden, was Sie dazu zwingt, einen Broker in die Architektur aufzunehmen.

Angenommen, es gibt eine gute Begründung für das dritte Element, dann können Sie sich die Frage stellen, ob WCF eine geeignete Kommunikationstechnologie für dieses Element ist. Sicherlich zwischen zwei Windows-basierten Anwendungen wird WCF gut funktionieren. Wenn sie sich auf demselben Rechner befinden, können Sie eine Named-Pipes-Bindung verwenden und erhalten eine sehr gute Leistung für die lokale Kommunikation. Wenn diese beiden Apps auf verschiedenen Windows-Rechnern verteilt sind, können Sie TCP für eine wiederum sehr gute Leistung bei der Netzwerkkommunikation verwenden.

Sie möchten auch die Verbindung zwischen dem Broker und den Geräten betrachten. WCF kann mit Nicht-WCF-Systemen verbunden werden. Sie müssten einige Erweiterungen auf der WCF-Seite schreiben, um sie mit einem bestehenden System zu verbinden. Aber es ist möglich und ich würde sagen, dass WCF in der Nähe des Mainstream liegt. Siehe this Q for more on that topic.

+0

Bestimmte Teile der Architektur sind Geräte und Verwaltung App, drittes Element - der Broker wie Sie es nennen - ist, sagen wir, aus Gründen der Flexibilität. Das genannte Projekt wird von Grund auf neu geschrieben, sowohl Windows-App (Visual C#, C++) als auch Hardware-Firmware (Plain C), und wir möchten Fehler der Vergangenheit vermeiden (Skalierbarkeit, Flexibilität, harte Wartung, Kommunikation, gewöhnlich) reale IT-Probleme). WCF scheint all diese Probleme anzugehen, also untersuche ich, welche Probleme es erzeugen könnte und welche Boni wir bekommen, wenn wir es als unsere Lösung wählen.Und ich meine echte Boni, keine Marketing-Zellstoff :) – grapkulec

+0

Eine andere Sache ist, dass wir höhere Management mit etwas wie Flash "wir setzen dieses eine intelligente Ding hier und wir können Geräte von Windows-App, vom Web-Browser, vom Handy zugreifen und wir werden kostenlos arbeiten und die Stromrechnungen des Unternehmens bezahlen, wenn Sie es uns erlauben ". Die Firma benutzt Borland seit Ewigkeiten, was cool ist, wenn man überprüfen muss, was passiert, wenn man in Char * hineinwirft, aber sei offen für einen Moment - es gibt keine Möglichkeit, dass Borland jemals besser als ein Visual Studio sein könnte. Es ist also nicht WCF, aber es muss etwas Spektakuläres sein (für Chefs) und relativ einfach mit (für uns) zu arbeiten – grapkulec