c# – 企业Web应用程序架构的最佳解决方案,它使用硬件和本地资源以及大量数据输入表单

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

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

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

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

>使用WPF技术
>使用Clickonce
>使用Pure html Active X(意思是asp.net,非常重的javascript& Write Active X)
>在IE中托管Windows窗体控件

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

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

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

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

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

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

哪一个是不错的选择&什么?
还有其他解决方案吗?
任何想法都可以帮助.

非常感谢.

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

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

编辑

一些有用的链接

> Learning WPF with BabySmash -Manually Managing ClickOnce and some more Designer Goodness
> Deploying a WPF Application (WPF)
> Silverlight, Wpf Web App (xbap) or Click Once? Pros and Cons

点赞