.NET 描述了兩種編程模型
在技術層面上,.NET平臺的基礎包括:擴展置標語言,也就是我們熟悉的XML;簡單對象操作協議(Simple Object Access Protocol ,SOAP);以及將未來的Internet 視為面向各種設備的服務的觀念。這些高層次的描述主要是面向這個新的模型中最明顯的方面——也就是實現Web服務的部分。
然而,在內部,.NET平臺建筑于.NET架構之上,.NET架構提供了實現這些概念的API的底層機制。.NET架構也經歷了.NET本身的問題——就是它被用于描述太多的事情了。特別是,.NET 描述了兩種新的不同的編程模型,他們構成了概念的基礎:這就是Web服務編程模型(Web services programming model )以及系統編程模型(system programming model)。
企業一定要認識到,組成.NET的是兩個相互獨立的編程模型。Web服務編程模型與底層的系統編程模型是相互獨立的。這些編程模型可以也應該分別使用。
.NET Web服務編程模型 .NETWeb服務編程模型大體上就是通過Internet的各種標準來實現各種接口。這是一組以Internet標準為基礎的松散的模型,使用HTTP和其它的協議作為主要的通訊機制,同時,使用了XML,SOAP,Web服務描述語言(Web Services Description Language,WSDL),以及通用描述,發現,集成(Universal Description, Discovery, and Integration , 簡稱UDDI)。最初,多數這種編程模型的使用將采取請求/應答的模式。
在2003年,Web服務的主要形式將是組件調用以及信息推送,這些在所有Web服務中占到75%以上。更長遠的未來,我們認為“協調組織”了的工作流或者服務將成為Web服務的主力,很多這些編程模型已經出現了,比如SOAP和其它一些出現在.NET以前的技術,而且這些技術現在就是可用的,在正式的.NET產品以前就有了。
作為日益增多的Web服務體系的一種,.NET架構提供了與底層的系統API以及組件模型無關的編程模型。這也體現了Microsoft和其它一些公司在上個世紀90年代對分布式計算的看法,并且通過一個簡單的方法借助Internet得到了實現。服務以服務器上的程序的方式來實現,這些程序使用標準的協議與調用的程序進行對話。
如果需要在一個系統中的一個進程中進行跨組件通訊,或者是跨越.NET架構系統或多個進程進行跨組件通訊,.NET架構可以使用SOAP或者或者是二進制協議進行通訊。如果進行跨系統環境(比如,和非.NET架構系統)進行組件通訊,.NET架構可以只使用SOAP。在一個系統上運行的程序和服務仍然使用COM,不過以后慢慢將會變成使用.NET中的新類。
理論上,這些程序還可以是在UNIX上實現的Enterprise JavaBeans ,不過Microsoft沒有為此提供什么幫助。但是要記住.NET Web服務編程模型是不依賴.NET 系統編程模型的。
.NET 系統編程模型 作為.NET平臺的一部分,Microsoft也建立了新的系統編程模型,同樣在.NET架構上得到了實現。.NET 系統編程模型在長遠看將最終取代COM以及Windows API,這個現在還沒有定名的模型使用了新的基礎類。
.NET 架構(.NET Framework )包含了Microsft 新的通用語言運行時(Common Language Runtime , CLR),可以支持新的編程模型,并且首次將真正的面向對象的類結構作為了運行時環境的一部分。COM的界面為開發者提供的功能在.NET 架構中也是可用的。
.NET 系統編程模型是Microsoft私有的,雖然有些部分被開放,這要歸結于歐洲計算機制造商聯合會(European Computer Manufacturers Association , ECMA) 在C#標準化方面的努力。.NET 系統編程模型還包含了一些類和機制,可以將現存的程序轉化為Web服務,這樣可以簡化Web服務的開發,雖然這樣的設置并不是十分有必要。
Microsoft的主席Bill Gates 將這種向.NET平臺的遷移比作和從DOS到Windows一樣意義重大。不過我們覺得更加準確的比較應該是這種遷移類似于Win16向Win32 的遷移。在向Windows的遷移中,DOS下的程序立刻成為了過去,而Win16的應用則在很大程度上和Win32兼容。
另一個比較好的比較是把.NET比作當初Mirosoft實現自己的Java時的情況,當時Microsoft將Java類和組件包裝為COM組件,Microsoft了解到了將兩種模型相互映射的好處,現在Microsoft開始發展這個還沒有名字的新的組件模型,他們再次將新舊模型進行了映射和包裝,舊模型就是COM,Microsoft在這里的真正意圖之一是去掉對Jav
|