微軟的遠程處理框架.NET Remoting - 1
發表時間:2024-02-10 來源:明輝站整理相關軟件相關文章人氣:
[摘要]微軟的.NET Remoting提供了一種允許對象通過應用程序域與另一對象進行交互的框架。本文將通過兩個具體的代碼例子介紹它的特性,通過.NET Remoting,兩個應用間的通信將變得非常簡單,使用上也相當靈活。 最近幾年來,在計算機世界中,關于“向外擴展”(scale-out)與“向上擴展...
微軟的.NET Remoting提供了一種允許對象通過應用程序域與另一對象進行交互的框架。本文將通過兩個具體的代碼例子介紹它的特性,通過.NET Remoting,兩個應用間的通信將變得非常簡單,使用上也相當靈活。
最近幾年來,在計算機世界中,關于“向外擴展”(scale-out)與“向上擴展”(scale-up)的討論不斷,并且有向scale-out轉化的趨勢。在以前,當計算機跟不上應用對性能的要求時,人們將會購買一臺更好更昂貴的機器,這就是scale-up,而scale-out則是通過在網絡中加入更多的機器來解決這個問題,這樣就無需更換整個系統。通過將計算的負擔分配在多個系統中,整個系統就有了更高的可用性。
如果將這個scale-out的意念更推進一步,我們可能會發現:為什么要將諸如信用卡驗證和運送跟蹤的處理放在我們的系統呢?如果能夠調用售賣者的應用來直接得到這些服務,豈不可以做得更為簡單嗎?如果能做到這一點,我們就可以擴展自己程序的功能,而無需再加入額外的硬件。值得注意的是,這樣做將會另ISV(獨立軟件開發商)的角色由一個軟件提供者,轉變為一個服務提供者。
這個想法很好,但是目前的技術要實現它的話,存在著不少的問題。DCOM在跨防火墻工作時會有問題。DCOM是建立在私有協議上的,而CORBA存在有多種不同接口的問題。如果將DCOM和CORBA放在一起工作呢,就更麻煩了。
為了實現這個scale-out的想法,我們需要一個組件技術,它可以跨越多種類型的網絡和多種協議無縫地工作。遠程.NET就可以做到這一點。
這個無縫的交互是通過使用XML和SOAP來實現的。不過,它并沒有認定SOAP進行組件交互的唯一方法,它也并沒有認定HTTP或者TCP/IP是用來連接這些服務的網絡協議。這樣可令遠程架構更加靈活,并且可適應協議和網絡的變化。
.NET架構是使用channel對象將應用連接在一起的。.NET架構提出了兩種channel,它們是:
System.Runtime.Remoting.Channels.TCP
System.Runtime.Remoting.Channels.HTTP
TCP channel和現有的DCOM非常類似,可提供很高的性能,在機器都處在一個內部網絡時,可選用TCP channel,而HTTP channel使用HTTP協議,可讓應用在Internet上交互。由于它使用的是HTTP協議,它可以很容易地做到負載均衡,并且能通過防火墻。