我已经在Microsoft堆栈上启动了一个应用程序作为智能客户端(理论上支持WCF / WS),其中一个小型客户端应用程序已部署,其余应用程序在我们的私有云中运行。它唯一真正的依赖是互联网连接,.net 4和Windows操作系统。
我面临着将所有未来发展转换为基于浏览器的架构的压力。根据我所研究过的其他网络应用程序,我担心客户端IT组织可以控制浏览器的方式,它会导致比我真正想要处理的问题更多的问题。
你有做出这种决定的经验吗?在决定使用智能客户端与浏览器时,您考虑了哪些技术因素?哪些资源有助于做出这个决定?
我的应用程序是针对医疗保健提供商(例如医院)的医疗保健应用程序,所以无论我走到哪里,我都要担心医疗保健CIO看着我的肩膀。
答案 0 :(得分:1)
有趣。最初我来自C#winform和WPF Desktop程序员,后来被分配到Web开发。还没有触摸Smart Client,但我认为它应该与Native应用程序几乎相同。根据经验,需要考虑的技术事项是:
多浏览器支持
特别是对于报表和图形处理,如果您的组件没有一些库/插件/框架,那么保持您的应用程序多浏览器将非常困难。特别是在CSS风格和javascript中较少。
客户端编程(javascript)
您将无法使用C#控件创建控件和动画。相反,你必须使用javascript(jquery或其他库)作为交换。 Javascript不是完全OOP,并且是解释语言(没有编译错误),这使得它变得更难(也许有一些像coffeeScript这样我还没有探索过的框架)。此外,它更难以制作,因为它将在流程之间需要服务器请求/响应活动,我将在后面描述。
请求/响应客户端 - 服务器架构
这意味着客户端中的大多数进程都需要请求服务器(请求显示数据,请求修改数据等)。这也意味着你失去了控制事件的能力,即使你使用asp.net webform(它仍然需要一些调整才能使事件发挥作用)。但是我假设你已经使用过WCF,所以这种架构必须那么难。
安全
不要在客户端(隐藏字段,javascript变量等)中保留密码等重要信息。这个概念应该与多租户客户端相同,但是在浏览器中,用户可以自由调试您的网页。
并发和多线程
在浏览器中,多标签页面和并发过程更容易发生。您的代码必须能够处理客户端的多线程。对于服务器端,您仍然可以使用WCF来处理并发。
我的2美分。
答案 1 :(得分:0)
显然,Web应用程序有其自身的挑战。我希望此链接可以在某些方面为您提供帮助:http://msdn.microsoft.com/en-us/library/ee658099.aspx
除此之外,您还需要关注可扩展性和可扩展性等非功能性要求。