我正在尝试将简单的 WinForms 应用程序迁移到 ASP.Net Web 应用程序。WinForms 应用程序基本上只是复杂的纯 C 应用程序的表示层,并通过 COM 互操作与遗留代码交互。我在 ASP.Net、javascript、jQuery 方面有一定的经验,并且在 WinForms 和互操作方面有很多经验,所以我知道基础知识,我只需要做出设计决定。
该应用程序现在的外观是这样的:
有一堆遗留的 C(甚至不是 C++)代码可以更改和重新编译,但移植不是一种选择。这是业务+数据层,随便叫什么。我将其称为遗留代码。
启动时,遗留代码会实例化一个用于演示和用户交互的 COM 服务器。演示数据被序列化并发送到这个 COM 对象(“我正在向你发送一些输出。”),并且通过循环轮询(“你有一些输入给我吗?”)来实现用户交互。不是最漂亮的解决方案,但非常简单。
COM 对象实际上是作为 COM 公开的 .NET 2.0 WinForms 应用程序。这个应用程序还通过 .NET Remoting 向其他 .NET 应用程序公开了一些功能,但这也不是那么重要。
虽然系统比较复杂,但是WinForms app确实只用于交互,所以切换到web还是很容易的。我不确定做 Web 服务器 <---> 遗留代码交互的最佳方式是什么。
我想到的第一件事(因为我已经实现了 .NET Remoting)是通过本地 .NET Remoting 将 WinForms 功能公开给 Web 部件,使其充当遗留代码和 Web 应用程序之间的某种代理。我实际上只需要沟通部分,没有表格。在这种情况下,Web 应用程序必须通过 .NET Remoting(本地)访问此功能。
让 Web 应用程序使用 .NET Remoting 在本地与另一个应用程序通信是否明智?此外,我可以将应用程序更改为 Windows 服务,但我仍然能够通过 COM 将其功能公开给旧代码吗?
实现这一目标的更好方法是什么?请注意,如果需要,我还可以对遗留代码进行一些修改。