微軟的遠端架構.NET Remoting(1)
來源:互聯網
上載者:User
微軟的.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協議,它可以很容易地做到負載平衡,並且能通過防火牆。