.net winform和webform之间的通信

时间:2010-04-09 16:17:56

标签: .net

我需要让webform与winform进行通信并返回到webform。这样做的原因是它已经存在一个webform软件,现在需要一个仅适用于winforms的.net组件的行为。我们尝试过使用Process.Start和shell.execute但是使用这种方法软件挂起或响应时间太长。 webform也需要从网络中的客户端PC调用,我认为这会增加另一个问题,因为不可能从webform remotelly调用文件的执行,但我对这个技术问题不太了解

我们已经阅读了一些关于在网络表单中嵌入winform,将数据从winform发送到webform等的文章,我们想知道推荐的方法(如果有的话)用于处理这样的情况

1 个答案:

答案 0 :(得分:1)

如果您可以访问WinForms应用程序的源代码,那么最好的方法是从那里提取所需的代码并将其直接合并到WebForms应用程序中。

如果WinForms和WebForms应用程序都需要使用此代码,那么您应该将两者共享的代码重构为单独的类库(DLL),然后由两个应用程序使用。< / p>

如果您只拥有Windows应用程序的EXE,并且它是.Net应用程序,则可以使用Reflection创建和使用在那里定义的对象。

如果它不是.Net EXE,再见并感谢所有的鱼(除非它是COM,在这种情况下再见并感谢所有的鱼)。

更新:我从来没有尝试过这个,我推荐它,但我假设您基本上希望能够使用Windows窗体Web应用程序中基于可视化组件(即您希望在浏览器中显示此内容)。

您可以将原始WinForms项目中的每个Form重建为随后位于网页上的ActiveX控件。此链接描述如何在.Net中创建基本ActiveX控件:

http://www.codeproject.com/KB/cs/CreateActiveXDotNet.aspx

我现在不知道ActiveX控件的浏览器支持(我知道还有一些),这种方法肯定不适用于非Windows操作系统。此外,您必须处理在每台客户端计算机上部署和安装可视组件(并且您需要检查此控件的许可协议 - 它几乎肯定会明确禁止此类使用)。

理论上,这可行。 ActiveX控件可以或多或少地执行或使用常规表单可以使用的任何内容(受权限等限制)。