Question

Je suis en train de migrer une application simple WinForms à une application web ASP.Net. app WinForms est fondamentalement seulement une couche de présentation pour une application simple complexe C, et interagit avec le code existant par COM Interop. J'ai une expérience modeste ASP.Net, javascript, jQuery, et beaucoup d'expérience dans WinForms et Interop, donc je connais les bases, j'ai juste besoin de prendre une décision de conception.

La façon dont l'application semble maintenant est la suivante:

  1. Il y a un tas d'héritage C (même pas C ++) du code qui peut être modifié et recompilé, mais le portage est pas une option. Ceci est la couche d'affaires + données, appelez ce que vous voulez. Je vais parler comme code existant .

  2. Au démarrage, le code existant instancier un serveur COM qui est utilisé pour la présentation et l'interaction de l'utilisateur. Les données de présentation est sérialisé et envoyé à cet objet COM ( « Je vous envoie une sortie. » ), et l'interaction utilisateur est obtenue par interrogation cyclique ( «Avez-vous une entrée pour moi ? "). Pas la plus jolie solution, mais simple comme l'enfer.

  3. COM objet est en fait une application .NET 2.0 WinForms exposée comme COM. Cette application expose également certaines fonctionnalités à d'autres applications .NET grâce à .NET Remoting, mais ce n'est pas si important aussi.

Bien que le système est assez compliqué, app WinForms est vraiment utilisé pour l'interaction que, donc il est assez facile de passer à la page Web. Ce que je ne suis pas sûr est ce qui est la meilleure façon de faire le serveur Web <---> interaction code existant.

La première chose qui me vient à l'esprit (depuis que je l'ai déjà .NET Remoting mis en œuvre) est d'exposer la fonctionnalité WinForms à la partie Web via .NET Remoting local, ce qui en fait agir comme une sorte de proxy entre le code existant et application web. Je voudrais en fait besoin que la partie de la communication, sans formes. Dans ce cas, l'application Web devrait accéder à cette fonctionnalité via .NET Remoting (localement).

Est-il sage d'avoir une application web communiquer localement à une autre application en utilisant .NET Remoting? De plus, je pourrais changer l'application à un service Windows, mais je serais encore capable d'exposer ses fonctionnalités via COM au code existant?

Quelle serait une meilleure façon d'y parvenir? Notez que je peux aussi faire quelques modifications au code existant si nécessaire.

Était-ce utile?

La solution

Je pense qu'un aspect important pour vous est le seul userness d'une application WinForms et la sessionness multi-utilisateurs du web.

Il y a 10 ans, je participais à plusieurs projets web où nous courions la logique métier comme des objets COM (VB6) dans MTS et plus tard COM +. Laisser les objets COM appartiennent à des sessions étaient un non-non, parce que si les utilisateurs viennent et laissent beaucoup que vous pourriez finir avec beaucoup de ressources liées dans les objets COM inutilisés, mais vivants.

Je suggère que vous regardez dans l'exécution de vos objets COM dans les services de composants. Il pourrait ne pas être la solution, mais il vaut la peine d'explorer.

Putting objets COM dans les services de composants est aussi proche que vous pouvez obtenir à la rédaction d'un service Windows qui est accessible par COM - quelque chose que je toucherais pour tous les x en y: où x est la nourriture et y favori est un lieu favori

.Net Remoting est merveilleux, mais surtout intéressant en tant que dispositif de communication. Je ne sais pas si vous allez diviser ce dans de nombreux serveurs, cela ressemble à une application interne de l'entreprise. Je n'ai pas assez de détails pour être plus précis.

Autres conseils

Il semble que vous devriez essayer de chercher loin simplement réutiliser votre code simple WinForms sur l'infrastructure ASP.NET. Cela signifie que vous aurez probablement pas besoin de re-écrire le code de l'interface utilisateur, mais il suffit d'utiliser tel quel sur une infrastructure de WinForms sur émulation web.

S'il vous plaît voir ma suggestion immédiate d'un cadre qui fait exactement: http://www.visualwebgui.com/landing/wow.aspx

J'espère que cette aide ...

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