Microsoft.NET的最初想法是希望进行接近操作系统平台的定制开发,当然,这是指使用Windows(目前是 XP、ME和2000)。Visual Basic和C#是.NET平台上最重要的开发语言,并且它们不能在其他平台上运作。而基于Java的J#和.NET平台也是互不兼容的。Microsoft声称有许多开发商在开发与.NET common language runtime (CLR)相合作的语言,但直到今天,我们看到CLR还只是一个Windows“版”的技术。这就说明存在一个重要的互用性问题,因为每种编程语言(根据定义来划分)都有其各自特定的数据类型和数据结构。
仅凭一个简单的HTTP连接是无法实现互用性的,因为程序是在操作系统之上的编程语言抽象层中进行开发的。.NET和J2EE平台上的开发编程语言有着本质上的区别(.NET比较私有化而J2EE则更开放)。另一个重要的区别是对.NET来说,开发环境和操作系统是由同一开发商所提供的。.NET和J2EE针对分布式应用程序有着不同的、不相兼容的二进制通讯协议(binary communication protocols):它们分别是.NET remoting和Remote Method Invocation/Internet Inter-Orb Protocol (IIOP)。
在编程语言行为(programming language behavior)、本地分布式计算协议、数据类型和结构,以及从操作系统服务中分离(isolation)等方面的不同都会对互用性产生影响。除非所有人都使用相同的编程语言、操作系统和应用程序,否则你还是需要了解各种复杂的互用性问题,以及哪种方案更值得去研究。
SOAP规范定义了从HTTP到TCP/IP数据传送的消息格式,WSDL规范定义了如何描述一个Web service,而UDDI则定义了如何注册(register)和发现(discover)Web service描述。SOAP和WSDL是位于World Wide Web Consortium (W3C)底层的标准。W3C还负责定制HTML和XML领域的各种规范。
另外,W3C还为Web Services Architecture Working Group提供赞助,该组织负责开发一个用于包含基本规范的Web service参考架构(reference architecture)。Web service规范和实现它们的底层平台是完全独立开的,这和HTTP与HTML之间的情况相似,同时它们能在.NET和J2EE平台上运行的很好。
Web Services Architecture Working Group还制定了一些扩展规范(extended specification),比如在安全性、协调(orchestration)和事务处理方面的规范。用来实现这些规范的产品并不是很多,因此在这里我就不详细地介绍了,除非说到一些更为复杂的互用性问题,因为你必须了解Web service交互的每个部分是否支持其他规范,以及它们支持哪些规范。但从到目前为止的经验来看,即使是最基本的Web service规范也试图向互用性挑战,这是因为Web service技术存在于一个高级的抽象层中,它包括两种主要的交互方式(interaction style),每种都有其各自考虑的范围。