浅析Win Vista中的通信专家:Indigo

一个周末的早晨 , 业余编程爱好者小张打开计算机 , 当正在他冲咖啡的时候 , 计算机自动连接上网络 , 开始下载前一天没下载完的电影 。而所用的这个名为X-eMule的软件 , 正是小张利用WinFX中的Indigo平台编写的P2P软件……
如果说Windows Presentation Foundation(Avalon)是在外观之炫上做足了文章的话 , 那么Indigo则是在网络性能上下足了功夫 , 给程序员带来了巨大的方便 。
预言:
Indigo将掀起P2P软件开发热潮
当今最热门的软件开发领域自然非网络应用程序莫属 。随着因特网的普及和各种网络环境的建立 , 许多传统的单机版软件都纷纷加入了网络元素或重新改编为网络版本 , 而完全网络化的新软件更是层出不穷 。为方便网络应用程序的开发 , 一些组织和业界巨头针对各种网络需求提出了一系列标准和技术 , 不过由于标准或技术太多 , 程序员在开发时反而无所适从 。另外 , 尽管.Net使网络开发从系统底层中彻底解放出来 , 但在大多数情况下网络开发仍然是件困难的事情 , 特别是在设计服务程序的时候 。
而Indigo在这方面作了较大改进 , 采用了包括WS-Addressing、WS-Policy、WS-MetadataExchange等在内的新规范和SOAP 消息传输优化机制 。Indigo构建的网络应用程序不仅很容易同其他Indigo程序进行交互 , 而且可以同其他基于SOAP技术构建的、运行在非Windows系统上的网络程序进行交互 。可见Indigo不仅适合于开发B/S结构的应用软件 , 而且同样适用于开发目前十分火爆的P2P程序 。依靠强大的类库 , Indigo将大大降低P2P程序的开发难度 , 很有可能掀起新一波P2P软件开发热潮 , 而这也许就是Indigo对普通程序员最具诱惑力的地方 。
Indigo的重要使命就是让网络间成为无障碍、无差别的通讯平台 , 形形色色的网络应用都能借Indigo之力自由地交互 。虽然这种“大同”的理想实现起来困难多多 , 但Indigo的确正朝这个方向迈进并取得了实质性的进步 。而对那些进行跨平台开发的程序员来说 , Indigo的这个特性一定会让他们感到欣喜万分 。
冲锋陷阵:
Indigo!微软的重要棋子
Indigo提供安全、可靠以及事务化的协作通信功能 , 而这三个重要特性都受到开发者的一致好评 。其内部的基础设施能够大大简化开发者面向服务的编程模式 。在这种开发模式中 , 程序基于异步信息流通构成 , 而Indigo提供大量创建、销毁、处理以及转换的信息技术 , 可谓照顾周到 。对程序员而言 , Indigo最突出的价值就是将微软的各种网络技术统一起来 , 从而使程序员可以在一个平台上完成所有类型网络程序的开发 , 不像以前那样不同的类型必须选择不同的支持平台和工具 。
Indigo还为事务编程提供了重要的支持 。启用了Indigo的Windows版本支持一个基于服务的事务处理管理器 , 该事务管理器可通过System.Transactions框架或 WS-AtomicTransactions协议来访问 。新的System.Transactions框架使整个平台(它支持 SQL Server、ADO.NET、MSMQ、分布式事务处理协调器DTC等)上的事务编程都变得简单高效 。System.Transactions既支持基于ITransaction接口的显式编程模型 , 也支持隐式的编程模型(Indigo自动管理其中的事务处理) 。这两个模型都可用于基于Indigo的应用程序 。可以说 , Indigo在统一各种网络标准上迈出了很有意义的一步 。
【浅析Win Vista中的通信专家:Indigo】目前 , 开发代码名为Indigo的技术已正式命名为Windows Communication Foundation 。综上所述 , Indigo提供的功能和灵活性对所有规模的组织和来自不同背景的开发人员都具有很大吸引力 。它可以用来构建在单一计算机环境、在整个公司的Intranet 或全球的Internet中运行的连接系统 。它适用于各种情况 , 从连接的行业垂直应用程序到交互式多人游戏都适用 。除扩展了.NET Framework 2.0和Visual Studio 2005的功能之外 , Indigo还可与BizTalk Server 2004配合使用已提供代理的和未经代理的应用程序到应用程序通信 。
对于大部分人来说 , Indigo是看不见的 , 只有程序员才会与它打交道 。Indigo最主要受益人群将是目前使用微软开发工具Visual Studio.Net的开发人员 。据行业分析师的说法 , 如果Indigo能够实现微软的蓝图 , 那么它的影响将是巨大的 , 而且有可能是.Net在同Java等架构竞争中决定胜负的一枚棋子 , 难怪微软会在Indigo上下如此大的功夫 。而作为程序员 , 自然是乐见和乐用其成 。
Indigo架构:配备精良的装甲师
作为 Windows Vista 的核心支柱之一 , Indigo就像一个配备精良的装甲师 , 为Web协议、构建连接系统等提供了良好的支持 。Indigo极大地简化了构建下一代连接系统的方法 。它通过三个架构设计原则来实现此目的 。
1.对大量 Web 服务协议的内置支持
目前Web服务技术为运行在不同平台的应用程序之间提供了交互性操作的支持 。然而 , 当前的Web服务技术通常是在没有端到端安全和可靠通信保证的情况下提供此相互操作的 。Indigo通过对“WS- * ”架构的内置支持提供了安全、可靠、协商过的相互操作 。对于开发人员来说 , 这极大地减少了达到异类相互操作所需的基础结构代码量 。对于企业来说 , 这意味着在组织内部和外部与客户、伙伴和供应商交互的能力 , 而不管他们使用的是什么平台 。由于Indigo的基本通信机制是SOAP , 因此Indigo应用程序可与大量运行于各种上下文环境的其他软件进行通信 。如图2所示 , 基于 Indigo 构建的应用程序可与下列所有程序进行交互:
●运行于同一Windows计算机上不同进程中的Indigo应用程序 。
●运行于另一Windows计算机上的Indigo应用程序 。
●基于其他技术构建的应用程序 , 如基于Java 2企业版 (J2EE) 构建的、支持标准Web服务的应用程序服务器 。这些应用程序可以运行在 Windows 计算机上 , 也可以运行在采用其他操作系统(如 Sun Solaris、IBM 的 z/OS 或 Linux)的计算机上 。
2.隐式使用面向服务的开发原则
多年以来 , 开发人员和组织努力构建适应业务发展速度的软件 。面向服务的开发原则利用关于构建高适应性软件的基础结构最佳做法来赢得这个挑战 。Indigo是从无到有构建的用来提供隐式面向服务应用程序开发的首批Web服务技术 。对于企业来说 , 这使得构建有弹性的和在出现变动时易于管理的IT基础结构变得更为容易 。
3.用于构建连接系统的单个API
从传统意义上来说 , 以前开发人员必须使用多种技术才能构建连接系统 。这不仅需要他们了解不同的API , 并且很难将来自不同技术的功能结合成一个解决方案 。Indigo为开发所有类型的连接系统提供了一个统一的 API 。它结合并扩展了现有的Microsoft技术(ASMX、.NET Remoting、.NET Enterprise Services、Web Services Enhancements 和 System.Messaging)的功能 , 以提供能提高开发人员产量并降低投放市场所需时间的高效开发框架 。
Vista发展动态:3D桌面终成现实
微软在上周的专业开发者大会(PDC)上发布了Windows Vista build 5219 , 它充分利用了Windows Presentation Framework(Avalon)在技术上的优势 , 创造出了更美观、有趣的用户界面 , 当用户使用组合键“Win 空格”时 , 即可显示3D桌面(图1) , 令用户在多个应用程序间切换更为方便 。另外还在开始菜单中嵌入了一个搜索框供用户搜索整台PC或者Internet的内容 。同时还增强了安全和管理功能 , 比如默认打开用户账号保护等 。


图 1
Vista小游戏也“升级”
随着Windows Vista Beta2发布日期的临近 , Vista中内置的小游戏也升级了!通过截图 , 我们很容易发现Vista中小游戏的画面比以往任何一个版本的都要精美 , 光是看看图片 , 已经让人爱不释手了(图2、图3) 。
图 3




图 4