Question

Je suis en train de construire une application WinForms sur laquelle je devrai travailler "localement". (tout comme Microsoft Word, enregistrer et ouvrir des fichiers à partir du système de fichiers) et également dans un environnement multi-utilisateur (communication avec un serveur du réseau, via TCP / IP).

En termes d'architecture, je pense à ces couches logiques:

  • Présentation (formulaires Windows)
  • Service
  • Accès aux données

Mon plan est de créer le "service". superposer un service WCF. Ainsi, lorsque l'application fonctionne dans " local " mode, j'hébergerais le service WCF dans le processus de présentation (exécutable). La présentation serait un hôte de service ET un client en même temps. Il accèderait à la couche de service à l’aide d’un proxy WCF, en indiquant "localhost".

Lorsque l'application est dans un environnement réseau, j'aimerais héberger le même service WCF dans un "Service Windows / NT". processus sur une autre machine et Presentation communiquerait avec elle en utilisant le même proxy WCF qu'en mode local.

C’est-à-dire que pour Presentation, j’aurais une seule API.

En théorie, cela a l'air bien. Cependant, j'aimerais connaître votre opinion sur toute cette affaire. Est-ce une mauvaise pratique d’utiliser WCF de cette manière, en ayant serveur et client dans le même processus? Voyez-vous une autre façon / meilleure de le faire?

Une autre question (peut-être non liée) est la suivante: puis-je héberger et utiliser un service WCF dans le même exécutable Windows Forms si je tagète l'installation du profil client .NET Framework?

J'apprécie vos commentaires:)

Était-ce utile?

La solution

Je dirais que ce n’est pas mal du tout d’héberger serveur et client dans le même processus - c’est ce que l’on appelle la communication inter-processus! : -)

Pour le scénario local, j'utiliserais la liaison NetNamedPipe, aussi rapide que possible, pour "sur machine". communication uniquement.

Pour le scénario réseau local, passez simplement à NetTcpBinding - très rapide et efficace également.

Devrait fonctionner comme un charme.

Selon cette page sur le profil du client .NET Framework , pratiquement tout le contenu de WCF doit être pris en charge sur le profil du client:

  

Fonctionnalités WCF supportées par le .Net   Profil client cadre

     

La communication Windows suivante   Les fonctionnalités de la fondation sont supportées par   Profil client .NET Framework:

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

Marc

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top