2010-03-03 120 views
6

我在.NET 3.5中创建了一个Windows窗体可执行文件,它使用dll与扫描检查的计算机进行通信。我最终将需要从可执行文件移动到可以完成相同任务的Web窗体。这将是几个月后,但我现在想开始做研究,因为我以前没有这样做过。我将需要使用ActiveX以通过Web窗体与设备进行通信。我以前也没有这样做过。从Windows窗体切换到Web窗体

我想保留现有可执行文件的功能,而不必重写大部分的可执行文件,尽管我明白其中的一些需要重写。我已经研究了ActiveX以及如何使用它,但是我想知道是否有人有类似的情况。你做什么将一个exe文件转换成一个web程序?那里有好的,具体的消息来源,我可以忽略这些消息可以指出我对这种情况的正确方向吗?有没有什么建议可以帮助我减少错误?我为之工作的公司在此之前没有任何其他人已经完成了这项工作,所以我必须自学一切需要做的事情。

在此先感谢。

+0

你能解释为什么它需要成为一个Web表单?这是部署/流行语符合性/跨平台性的问题吗? – 2010-03-03 15:51:27

+0

这不是一个简单的问题,可以在不知道您已经编写的程序的复杂性的情况下进行回答。无论如何,我真的希望你的代码能够充分考虑问题,因为在原始项目完成之后,听起来管理层对你提出了这样的要求,而不是在最初知道最有用的时候。 – 2010-03-03 15:52:45

+0

这不太可能奏效,除非您可以将检查扫描机连接到您的Web服务器。如果没有,开始学习Javascript和Internet Explorer的安全模型。 – 2010-03-03 15:54:08

回答

5

这是关注点与n层设计分离的地方。希望你的UI层与你的域模型松散耦合。如果是这种情况,您可以编写Web的第二个IU层。而不必根本改变你的领域模型。然后你可以编译每个场景。

*注意 - 在实际使用中,我一直需要扩展业务领域来解决第二个用户界面的一些问题,但这些修改通常很小,并指出了我无论如何都紧密结合的地方。


你可以考虑另一种选择是建立在你的业务域代码中的Web服务层。然后编写一个Web应用程序,通过这些Web服务调用与您的域模型进行通信。这可能会影响性能,并不是我的首选方法。尽管如果你没有一个设计良好的应用程序,你可能会发现它更易于管理。

0

通常,将winforms转换为webforms是很有可能的,尽管通常是一个缓慢的开发过程。即使您拥有世界上最干净的域图层,每次都会丢弃网页中的对象,这意味着Web域图层通常与桌面域图层的写法截然不同。

但是,在你的情况下,设备 - 服务器通信会变得非常困难。

你看过xbap吗?这基本上是一种将WPF应用程序部署到网页中的方法。它需要你的客户安装正确版本的.NET,但它将成为你最简单的途径,特别是考虑到你可以在WPF中托管winforms ...

+0

我会研究xbap,但我不相信我会被允许在我们现有的环境中使用它。 – Aaron 2010-03-03 16:17:32

1

“我想保留功能我现有的可执行文件,而不必重写它的大部分“

一般来说,如果你提取尽可能多的逻辑到自己的程序集/ DLL,你可以重复使用你想要的任何UI框架。只要确保你没有做任何特定的UI(抛出对话框等)。

0

你可以在Silverlight 4中看一看,

http://silverlight.net/getstarted/silverlight-4-beta/

它包含了许多功能,ASP。NET Web窗体没有。

如果你的团队可以接受ActiveX之类的东西,为什么不使用Silverlight 4呢?唯一的缺点是SL4仍处于Beta版。