在过去的几年时间里我们见证了软件开发团队从Windows开发平台到Web开发技术(包括HTMLASPJSPDHTMLColdFusion和PHP等等)的大规模迁移直到目前为止Web开发的好处还没有受到批评
最近微软公司的NET平台发布了一个名为非接触配置(No Touch DeploymentNTD)的新技术NTD技术会让大批开发者从Web开发回到Windows窗体开放——NTD应用程序可以在Internet上运行而无需接触用户机器它提供了Web开发的所有优点而无需牺牲用户界面设计也没有Web开放所带来的困难现在天平又开始向微软公司这一侧倾斜了你的下一个项目可能完美合适NTD
Web开放的优点
在介绍复杂的NTD技术之前让我们先讨论一下Web展开模型的优点和缺点它的优点主要体现在两个方面配置的成本和目标机器
配置成本
配置Windows应用程序相对来说要付出更多的努力Windows应用程序在初始安装随后的升级以及对客户机器的总体管理等方便的成本是驱动我们选择Web程序的原因之所在
目标机器不受影响
Web展开模型使得客户机器的性能对Web应用程序的影响很小(即瘦客户)只要考虑客户端的浏览器就可以了这一点非常有利因为它不要客户安装任何软件就可以运行应用程序由于目标机器不被触及用户在运行他/她不太信任的应用程序时也不会感觉别扭它降低了成功运行某个程序所需要经验的要求
第三个好处就是它的开发是平台无关的与各种浏览器之间战争无关但是专有技术(如HTML扩展COMActiveX和XML数据岛等)极大破坏了这个优势事实上除非你的网站全部用HTML实现否则你的开发必须针对特定浏览器然后期望其它浏览器也支持你的Web应用程序
Web开发的缺点
Web应用程序所带来的优点并不是没有付出代价的实际上Web应用程序也有几个很明显的缺点如有限的用户体验(user experience)很难让人信服Web可以提供比Windows应用程序更丰富的用户界面Web目前已有的控件和Windows比起来是非常有限的在Windows应用程序中实现滑动块控件spin框和颜色框很容易但是在Web应用程序却是另一回事了
非接触配置
一年前我不愿意涉及除基于Web(即HTMLASPNET等)之外的其它项目现在我接触了好几个Windows表单应用程序的开发这些应用程序的用户是网络用户它们用到了NTD技术有些人喜欢把NTD与Java Web Star相对比它们在某些方面也确实有相似之处不过NTD技术提供了完整的可配置的代码访问安全机制(code access securityCAS)就这一点来说它的功能比Java Web Start更强大
代码访问安全(CAS)
按照微软的说法CAS是通用语言(common language)所提供的一种机制被管理的代码由安全策略授予一定的许可许可是强制的限制了代码所允许执行的操作范围
为了充分获取NTD的优点理解CAS是必不可少的这是因为在Internet上展开的应用程序需要在客户机器上获得必要许可才可以正确执行
非接触展开的例子
让我们看看一个例子其中可执行代码驻留在本地机器的Web server中CAS给予驻留在本地机器上的所有可执行代码以全部权限这与从另一台机器上下载可执行代码的情况不同所以当你配置(deploy)你的应用程序时你将配//localhost
假设希望允许用户使用Windows应用程序来注册会议该应用程序暂时不再做任何有用的事也不与server进行通信因为它请求Web服务该应用程序只是简单的给出了一个带有按钮的页面当你点击按钮时它显示出Hello一旦该程序编译后可执行的CodeConferenceRegistrationexe将作为一个IIS server被拷贝用户可以在IE地址栏中输入浏览该可执行代码的效果
IE可以识别exe扩展名可执行代码通过http下载通用语言在运行时刻执行该程序当然在没有正确配置的情况下CAS将限制她的运行
仍有怀疑
不可避免的那些宣称Java Applets以及Java Web Start已经尝试过配置计划但这两者都没有成功的人会怀疑它不会占据很大的市场份额持怀疑态度的人提出问题本身并没有错但是现在的情况和Java Applets出现时的情况不太相同了
由于Applets需要较高的带宽(那时的情况和现在不同家庭宽带网尚不普及)所以它没有推广开来此外用来实现客户端和服务器通信的技术也没有Web服务那样成熟NTD的另一个缺点就是它要求客户端机器上也安装NET框架而由于NET应用程序需要在运行时使用通用语言偏偏大多数客户端机器又没有安装NET框架但随着时间的流逝情况正在好转