企业Web应用程序架构的最佳解决方案,使用硬件和设备。当地资源和重数据录入表格

时间:2011-06-10 16:14:08

标签: c# .net wpf web-applications

我们有一个APP,它使用很多本地资源,比如windows打印API,windows注册表,一些Active X连接到POS设备(支付金钱和收据,价格从APP发送),条形码打印机打印标签,RFID设备阅读&写一些数据。该应用程序使用.Net framework 3.5编写,并使用.Net框架的一些新功能(例如:WCF)。应用程序中的表单是非常重的形式(其中7个是必不可少的),每种形式,有超过100个文本框,组合,单选按钮,面板和&许多其他控件,根据用户的需要显示或隐藏,禁用或启用,填充和放大许多次清理过。

用户完成工作后,大部分打印件自动发送到之前选择的打印机,标签大部分由条形码打印机打印,RFID&如果需要,可以调用POS设备。

问题是现在我们需要一个基于此版本的网络版。原因是有一个管理部门需要在线了解任何交易(有一个仪表板软件)。在WIN APP版本中,我们使用WCF发送&接收新数据(类似复制的事情)。

根据我的搜索,有3种(甚至4种)实现这一目标的方法,如下所示。

  1. 使用WPF技术

  2. 使用Clickonce

  3. 使用Pure html + Active X(意思是asp.net,非常繁重的javascript和写入活动X)

  4. 在IE中托管Windows窗体控件

  5. WPF的XBAP 很好,但是: 它需要将所有dll下载到本地机器和然后启动应用程序。每次将新版本上载到服务器时也会发生这种情况。 dll的大小约为5meg。 还存在用户可以反汇编dll的风险。此外,我们需要签署程序集以便能够使用win API,并且用户需要将该站点添加到其安全站点。

    主要的缺点是WPF实际上并不在Web架构中,我的意思是,dll会在客户端进行计算。服务器仅负责保存实体(并进行一些验证)。 参考https://stackoverflow.com/tags/web-applications/info

    的ClickOnce: 根本不知道,我们可以将App(WPF版本或Windows窗体版本)部署为clickonce应用程序,但服务器仅负责更新新版本的软件。

    Pure web& HTML + Active X : 这是耗时的工作,一切似乎都没问题,但实际上我们需要成为JQuery& AJAX大师&我认为大部分时间花在调试javascript上。由于页面中的Active X控件,IE也可以只运行App @ all。

    IE中的Winform : 根本不是一个好的选择,但我们可以做到这一点,输出仅适用于IE,也是渲染的UI,风格非常糟糕。

    还有另一种方式,可能是黑客攻击,当我们用纯网络开发时,我们可以编写一些WCF服务来做硬件部分(与硬件,本地资源和其他东西进行通信) )&将它们安装在客户端上(例如使用cassini运行)。因此,当我们需要例如使用硬件和本地资源(POS,RFID,注册表和其他),我们可以通过Web服务调用(指向本地主机)从我们的站点调用它们。

    其中哪些是不错的选择&什么? 还有其他解决方案吗? 任何想法都可以提供帮助。

    非常感谢

2 个答案:

答案 0 :(得分:1)

我不确定我是否正确理解了您的所有要求。在我看来,您只需要一个跟踪交易的服务组件。而不是将所有内容重写为WPF / SL,为什么不修改当前的应用程序(您没有提及所使用的技术,也不能修改它)将任何事务记录到服务端点。

服务端点将事务记录在数据库中(例如,通过https的WCF,在SQL Server中存储数据)。从那里,您可以在您提到的仪表板软件中公开信息,或者您可以使用 ASP.NET MVC <创建您自己的报告应用程序 /强>

答案 1 :(得分:1)

最干净的解决方案可能是将WPF用于表示层(Silverlight将需要额外的一步来访问本地计算机)点击一次(因为您正在考虑点击一次并不意味着您的服务器现在只是一个分发机制,如果我错了你也可以纠正我,但你也可以将.Net运行时作为click-once分发包的一部分包含在内)

另外,因为它的WPF并不意味着所有您的业务逻辑需要与客户端一起下载,id收集您的业务逻辑服务器端,至少是敏感的东西并通过wcf调用它 - 具有安全性你的选择-。

修改

一些有用的链接