シンプルな WinForms アプリを ASP.Net Web アプリに移行しようとしています。WinForms アプリは、基本的に複雑な単純な C アプリのプレゼンテーション レイヤーにすぎず、COM 相互運用機能を介してレガシ コードと対話します。私は、ASP.Net、javascript、jQuery についてはある程度の経験があり、WinForms と相互運用については多くの経験があるため、基本的なことは知っています。設計上の決定を下す必要があるだけです。
現在のアプリの外観は次のとおりです。
変更して再コンパイルできるレガシー C (C++ でさえない) コードがたくさんありますが、移植はオプションではありません。これはビジネス+データレイヤーです。好きなように呼んでください。これをレガシー コードと呼びます。
レガシ コードを起動すると、プレゼンテーションとユーザー インタラクションに使用される COM サーバーがインスタンス化されます。プレゼンテーション データはシリアル化されて、この COM オブジェクトに送信され ( 「I'm send you some output.」 )、サイクリック ポーリング ( 「Do you have some input for me?」 ) によってユーザー インタラクションが実現されます。最も美しい解決策ではありませんが、地獄のように簡単です。
COM オブジェクトは、実際には COM として公開された .NET 2.0 WinForms アプリです。このアプリは、.NET Remoting を介して他の .NET アプリにも一部の機能を公開しますが、これもそれほど重要ではありません。
システムはかなり複雑ですが、WinForms アプリは実際には対話のみに使用されるため、Web への切り替えは非常に簡単です。私が確信していないのは、Web サーバー <---> レガシー コードの相互作用を行うための最良の方法です。
(既に .NET Remoting を実装しているため) 最初に思いつくのは、ローカルの .NET Remoting を介して WinForms 機能を Web パーツに公開し、レガシ コードと Web アプリの間のある種のプロキシのように動作させることです。実際には、フォームなしでコミュニケーション部分だけが必要です。その場合、Web アプリは .NET Remoting を介して (ローカルで) この機能にアクセスする必要があります。
Web アプリが .NET Remoting を使用してローカルで別のアプリと通信するのは賢明ですか? また、アプリを Windows サービスに変更することもできますが、その機能を COM を介してレガシ コードに公開することはできますか?
これを達成するためのより良い方法は何でしょうか? 必要に応じて、レガシー コードにいくつかの変更を加えることもできます。