Frage

Ich bin über eine „Server“ Anwendung zu schreiben, die verantwortlich ist, mit externer Hardware zu sprechen. Der Antrag wird von Anforderungen von Clients verarbeiten. Die Clients senden eine Nachricht an den Server, und wenn der Server ist momentan beschäftigt mit Sachen mit der Hardware zu tun die neuen Nachrichten werden in einer Warteschlange gespeichert werden, die später verarbeitet werden.

Der Kunde hat auch die Möglichkeit, einen Antrag zu stornieren (wenn es in der Server-Warteschlange ist.). Wenn die Server-Anwendung mit der Hardware fertig ist es in der Lage sein, das Ergebnis zurück an den Client zu senden, die den Auftrag angefordert.

Die Server- und Client-Anwendungen können oder nicht auf dem gleichen PC sein. Alle Entwicklung wird in .NET (C #) 2005 durchgeführt.

Also, meine Frage ist: Was ist der beste Weg ist, dieses Kommunikationsproblem zu lösen

MSMQ? SEIFE? WCF? Remoting? andere?

War es hilfreich?

Lösung

Remoting

Wenn alle Entwicklung in .NET 2005 durchgeführt wird, ist der beste Weg, Remoting zu gehen. http://en.wikipedia.org/wiki/.NET_Remoting

Andere Tipps

Angenommen, Sie .NET 3.0 oder höher, dann werden Sie wahrscheinlich wollen WCF als Kommunikationskanal nutzen können - die Schnittstelle konsistent ist, aber es ermöglicht es Ihnen, einen geeigneten Transportmechanismus zu verwenden, je nachdem, wo der Client und Server sind in Bezug auf jede andere - so können Sie wählen, SOAP oder MSMQ oder ein binäres Format oder anderen gegebenenfalls nutzen (und können Ihre eigene Rolle, wenn erforderlich). Es umfasst auch die Notwendigkeit für Zwei-Wege-Kommunikation.

die Nachrichten auf dem Server Queuing wahrscheinlich als separates Problem angesehen werden soll -. Vor allem der Notwendigkeit, zu Nachrichten in der Warteschlange entfernen

Wenn Clients und Server-Prozesse auf der gleichen Maschine sind, denke ich, Named Pipes gibt Ihnen die schnellste Roh-Byte-Übertragungsrate. Wenn die Prozesse in der verschiedenen Maschinen sind, müssen Sie Sockets basierten Ansatz verwenden.

Remoting ist angeblich sehr langsam. basierend auf dem Ziel OSes, die Sie planen, um die Lösung zu implementieren auf Sie Optionen wie WCF et.all jedoch der Aufwand dieser Protokolle haben könnten, ist etwas, was man sehen, während die Entscheidung möge.

MSMQ würde einen Sinn machen, auch wenn es dann Sicherheit und Bereitstellungsüberlegungen sind. Sie könnten einen Service-Bus buchen (z s NServiceBus oder Masstransit) und es gibt auch SQL Server Service Broker, die helfen könnten (und kann auch durch einen Service-Bus als Transportmittel verwendet werden).

WCF wäre eine andere Sache zu sehen, aber das ist wirklich die across-Netzwerk-Transport, so dass Sie würde wahrscheinlich immer noch wollen die WCF ruft eine Nachricht auf dem Server-Warteschlange zu stellen.

Ich empfehle Remoting nicht, weil es schwer ist, eine Trennung von Bedenken zu halten, und bevor Sie es wissen, dass Sie ein wirklich gesprächig Schnittstelle zu entwickeln, ohne es zu merken. Ferngespräche sind teuer in relativen Zahlen, so sollten Sie die Nachrichten ziemlich grobkörnig zu halten versuchen. WCF würde meine Empfehlung sein. Nicht zuletzt, weil Sie es einrichten können einen HTTP-Transport zu verwenden und viel Einsatz und Sicherheit Kopfschmerzen zu vermeiden.

Das .NET Framework bietet mehrere Möglichkeiten, um mit Objekten in verschiedenen Anwendungsbereichen, die jeweils entwickelt, um mit einem bestimmten Maß an Know-how und Flexibilität im Auge zu kommunizieren. Zum Beispiel hat sich das Wachstum des Internet XML-Web-Services eine attraktive Methode der Kommunikation gemacht, da XML-Webdiensten über die gemeinsame Infrastruktur des HTTP-Protokolls und SOAP-Formatierung gebaut werden, die XML verwendet. Dies sind öffentliche Standards und kann verwendet werden, sofort mit den aktuellen Web-Infrastrukturen, ohne sich Gedanken über zusätzliche Proxy oder Firewall-Probleme.

Nicht alle Anwendungen sollten mit irgendeiner Form von XML-Webdienst gebaut werden, allerdings nur, wenn wegen der Performance-Probleme im Zusammenhang mit SOAP-Serialisierung über eine HTTP-Verbindung.

Auswahl von Kommunikationsoptionen in .NET hilft Ihnen, welche Form der Kommunikation zwischen Objekten Sie für Ihre Anwendung entscheiden.

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