非接触配置
一年前,我不愿意涉及除基于Web(即HTML、ASP.NET等)之外的其它项目。现在,我接触了好几个Windows表单应用程序的开发。这些应用程序的用户是网络用户,它们用到了NTD技术。有些人喜欢把NTD与Java Web Star相对比,它们在某些方面也确实有相似之处;不过,NTD技术提供了完整的可配置的代码访问安全机制(code access security,CAS),就这一点来说,它的功能比Java Web Start更强大。
代码访问安全(CAS)
按照微软的说法,CAS是“通用语言(common language)所提供的一种机制,被管理的代码由安全策略授予一定的许可,许可是强制的,限制了代码所允许执行的操作范围”。
为了充分获取NTD的优点,理解CAS是必不可少的,这是因为在Internet上展开的应用程序需要在客户机器上获得必要许可才可以正确执行。
非接触展开的例子
让我们看看一个例子,其中可执行代码驻留在本地机器的Web server中。CAS给予驻留在本地机器上的所有可执行代码以全部权限。这与从另一台机器上下载可执行代码的情况不同。所以当你配置(deploy)你的应用程序时,你将配置http://localhost。
假设CodeConference.com希望允许用户使用Windows应用程序来注册会议。该应用程序暂时不再做任何有用的事也不与server进行通信,因为它请求Web服务。该应用程序只是简单的给出了一个带有按钮的页面,当你点击按钮时,它显示出“Hello”。一旦该程序编译后,可执行的 CodeConferenceRegistration.exe将作为一个IIS server被拷贝。用户可以在IE地址栏中输入http://localhost/CodeConferenceRegistration.exe浏览该可执行代码的效果。
IE可以识别.exe扩展名,可执行代码通过http下载,通用语言在运行时刻执行该程序。当然,在没有正确配置的情况下,CAS将限制她的运行。
仍有怀疑
不可避免的,那些宣称Java Applets以及Java Web Start已经尝试过配置计划但这两者都没有成功的人会怀疑它不会占据很大的市场份额。持怀疑态度的人提出问题本身并没有错,但是现在的情况和Java Applets出现时的情况不太相同了。
由于Applets需要较高的带宽(那时的情况和现在不同,家庭宽带网尚不普及),所以它没有推广开来。此外,用来实现客户端和服务器通信的技术也没有 Web服务那样成熟。NTD的另一个缺点就是它要求客户端机器上也安装.NET框架。而由于.NET应用程序需要在运行时使用通用语言,偏偏大多数客户端机器又没有安装.NET框架。但随着时间的流逝,情况正在好转。
