Frage

Ich erstelle eine WinForms-Anwendung, in der ich sie "lokal" (genau wie Microsoft Word, Speichern und Öffnen von Dateien aus dem Dateisystem) und auch in einer Multi-User-Umgebung (kommunizieren mit einem Server im Netzwerk, arbeiten muss. über TCP/IP).

In Bezug auf die Architektur denke ich an diese logischen Schichten:

  • Präsentation (Windows -Formulare)
  • Service
  • Datenzugriff

Mein Plan ist es, die "Service" -Sicht zu einem WCF -Dienst zu machen. Wenn die Anwendung im "lokalen" Modus arbeitet, habe ich den WCF -Dienst im Präsentationsprozess (ausführbar) hosten. Die Präsentation wäre gleichzeitig ein Service -Host und ein Kunde. Es würde mit einem WCF -Proxy auf die Serviceschicht zugreifen, die auf "Localhost" verweist.

Wenn sich die Anwendung in einer Netzwerkumgebung befindet, möchte ich denselben WCF -Dienst in einem "Windows/NT -Dienst" in einem anderen Computer hosten, und die Präsentation würde mit demselben WCF -Proxy wie im lokalen Modus mit ihm kommunizieren.

Das heißt, für die Präsentation hätte ich nur eine API.

Theoretisch sieht das gut aus. Ich möchte jedoch Ihre Meinung zu dieser ganzen Sache kennen. Ist es eine schlechte Praxis, WCF auf diese Weise zu verwenden und einen Server und Client im gleichen Prozess zu haben? Können Sie eine alternative/bessere Möglichkeit sehen, dies zu tun?

Eine andere (vielleicht nicht verwandte) Frage lautet: Kann ich einen WCF -Dienst in denselben Windows -Formularen hosten und konsumieren, wenn ich die Installation des .NET -Framework -Clientprofilprofils markiere?

Ich schätze deine Kommentare :)

War es hilfreich?

Lösung

Ich würde sagen, es ist überhaupt keine schlechte Übung, im selben Prozess Server und Client zu hosten - es wird die Inter -Process -Kommunikation genannt! :-)

Für das lokale Szenario würde ich die NetnamedPipe -Bindung verwenden - schnell wie die Hölle, nur für "On -Machine" -Kommunikation.

Wechseln Sie für das LAN -Szenario einfach auf nettcpbinding - sehr schnell und effizient.

Sollte wie ein Zauber arbeiten.

Entsprechend diese Seite Im Clientprofil des .NET Framework sollte so ziemlich das gesamte WCF im Client -Profil unterstützt werden:

WCF -Funktionen, die vom .NET Framework -Clientprofil unterstützt werden

Die folgenden Funktionen der Windows Communication Foundation werden vom Clientprofil von .NET Framework unterstützt:

* All of WCF is supported except for Cardspace and web hosting.
* Remoting TCP/IP channels are supported.
* Asmx (Web Services) are not supported.

Marc

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