2000年6月22日美国微软公司公开了“microsoft.net”。该公司为此原来在日本国内举行了两次新闻发布会。在7月26日~28日期间举行的微软研讨会“tech ed2000”上“microsoft.net”也成了热门话题。.net是用来建立被称为ngws(即下一代windows服务之意)的新一代服务/软件的基本构想。
举个例子,微软制作的.net所描绘的宣传录像片中有这样的一个场面。一个男人出差到外地,在机场租借手机电话。他向该终端插入自己的ic卡后,自动下载他的地址簿和计划簿,随即就变成了他专用的pda(便携式信息终端)。
确实方便,不过如果被告知“这就是.net”,反而把人搞得似懂非懂、糊里糊涂。笔者觉得如果要选一下最近几年微软公开的晦涩难懂的计划,那么.net无疑要名列前茅。
究竟什么地方不易理解呢。笔者认为难就难在他没有能够明确和目前微软推出的概念之间的相互关系。比如.net的基础、分布式应用软件的思想,为了实现这一思想微软本身提供的机制,在此机制上微软或由第三方提供的服务,及实际计划提供的产品是什么样的,等等这些关系一下子人们非常难理清。
建立方案的框架其实就是windows dna2000
不过,仔细考虑后就会发现,.net和过去的概念之间的关系其实非常简单。
在.net中,通过因特网能利用的单功能服务(构造块,biulding block)组合在一起来建立方案。微软本身已宣布向消费者提供门户网站msn.net、办公软件的asp服务office.net等的.net方案及认证服务passport等,用来建立.net方案的基本的构造模块,由于所有这些参杂在一起,所以令人难以理解,其实这一流程正是windows dna2000本身。
为了利用构造模块,使用soap(简单对象访问协议,siple object access protocol)作为通信协议,使用xml(可扩展的标记语言)做为数据格式。也正是从dna2000开始,才提倡通过采用soap/xml组合,使得在windows以外的平台上也能够建造用来建立方案的构造模块。
构造方案的实体如同上述宣传录像带中显示的那样有多种服务。例如只需要插入ic卡就能使用自己的地址簿及计划簿的手机电话服务等。
构成方案的零件就叫做构造模块,他是各种服务的群体。还是以上述手机终端为例,终端读取的ic卡信息并进行用户认证服务,及从个人计算机及手机电话经由网络传递地址簿及计划簿的服务,等就是构造模块的实例。也就是说,在这一手机服务中,建立了一个使用soap/xml,经过认证服务接受认证,然后凭着通过认证的证据从计划簿服务公司通过soap/xml接收用户计划簿的流程。
不再为com而苦恼
通过组合构造模块来建立方案的部分,只是dna2000改了个名字而已,而关于构造模块本身,.net则比dna2000更前进了一步。
在dna2000中表明,使用com(零件对象模型、component object model)、dcom(分布式com)及windows2000 server的com+服务建立构造模块(在dna2000中称为mega服务)。另一方面,在.net中com这一术语消失了。取而代之公开了被称为.net framework用来建立构造块的框架。
com虽然做为术语消失了,不过实际上.net框架的实质是将com+改进的结果。事实上,在.net框架的sdk(软件研发套件)的发行文件中还残留着com+2.0的影子。而com+是在不改动com框架的基础上,改由os方面进行安全性及负荷分散处理等处理,从而减轻了安装时间的运行时间(run time)。
这是因为虽然com本身是个并不太复杂的标准,不过由于存在着众多的约束事项,因此安装时非常费时。而在.net框架中将“交给os处理”部分进一步扩大,从而完全除去在com+中依然残留的com框架。这样一来,就不再需要安装做为com项目的对象了。
目前正在流行这种实现方式。一言以蔽之,就是将com对象变成和java程式相同。也就是说,.net框架的对象,不是被编译成处理器的本地代码(native code),而是被编译成被称为il(中间语言)的虚拟机代码。而在执行时,则由相当于java虚拟机的被称为clr(commom language runtime)的模块将il代码转换成本地代码后执行(实际上只是在第一次才真正转换)。
对象之间的通信不必描述为com,只需描述为普通调入手续即可。只要移植clr就能在windows以外的客户及服务器上运行同一个代码。而且能使用所有研发语言。微软的研发环境visual studio除了在下一个版本中使c/c++、visual basic及新研发的c#对应.net框架以外,目前已有多个第三方加入,将来有可能使用除了java以外的所有主要语言。
在7月11日~14日pdc(专业研发人员会议)上,当美国微软的副社长鲍尔?马里茨(音译)表示“已不再需要(com的典型约束事项)iunknown及guid”时,研发人员们兴奋得鼓掌喝彩,这一点完万能理解,先不去考虑.net框架减轻了研发工作量或和java相似等问题,做为纯粹的软件技术,.net框架确实是个非常有意思的结构。
实际上在公开的.net中还包括用来建立.net方案的多种服务,不过最后在理解了.net的平台部分是windows dna2000和com+以后,就感到“原来他和现有的相比其实没有什么大的改动”。而另一方面,从微软故意将内容搞得晦涩难懂,淡化windows色彩来强调其新意的做法,能感到他们要在因特网时代继续生存下去的坚定意志。(bizit)