2010-04-09 84 views
1

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

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

+0

你的问题不清楚。 – SLaks 2010-04-09 16:19:36

+0

为什么不把代码放在dll中并引用该dll? – 2010-04-09 16:21:19

+0

我想他想使用WinForms专用控件。 – SLaks 2010-04-09 16:25:06

回答

1

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

如果此代码需要由WinForms和您的WebForms应用程序使用,那么您应该将代码重构为一个单独的类库(DLL),然后由这两个应用程序使用。

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

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

更新:我从来没有尝试过这一点,我推荐它,但我假设你基本上要能够在Web应用程序中使用基于Windows的形式可视组件(即你想让这个东西在浏览器中显示出来)。

您可能能够将原始WinForms项目中的每个Form重建为位于网页上的ActiveX控件。此链接介绍如何在.NET中创建一个基本的ActiveX控件:

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

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

理论上,这是可行的。一个ActiveX控件可以或多或少地做或使用任何常规窗体可以(受权限等)。

+0

我可以访问winforms源代码,但不能访问winform中使用的winforms组件源代码。顺便说一下,这是一个可视化组件 – Pablo 2010-04-09 16:29:26

+0

@Pablo:你是否真的能够像在该示例中创建一个ActiveX控件?我很想知道它是否真的有效。 – MusiGenesis 2010-04-10 15:50:43