.NET 中上下文的概念
生活随笔
收集整理的這篇文章主要介紹了
.NET 中上下文的概念
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉自:http://tech.sina.com.cn/s/2009-11-16/18071134973.shtml 在.NET 中,上下文(Context)的概念貫穿著.NET的很多核心內容.他提供了類似運行環(huán)境的服務和內容.在.NET中,基于上下文攔截的技術一直是很隱晦的,沒有很多的文檔說明。然兒,基于上下文的攔截的技術卻提供了很好很強大的功能。使我們能方便是實現類似 AOP 的編程模式。.NET3.0 中的WCF更是大量使用了上下文攔截技術。 在.NET 中,組件服務通常的顆粒是域(Domain)和上下文(Context).其中,在域中提供的服務通常只有'同步域'.當然,.NET 中也提供了很多COM+服務,但需要被服務的組件(類)直接或間接繼承自ServicedComponent(被服務的組件)..NET中提供的COM+ 服務全部在命名空間System.EnterpriseServices中,在其中,提供了諸如消息隊列,即時激活,對象池...等服務. 在使用.NET 開發(fā)時,我們都知道我們使用任何一種.NET支持的語言編寫的代碼都是托管代碼.所謂托管代碼生成的IL語言只能運行在CLR中.并且享受CLR提供的垃圾回收,托管堆...等.但是,Windows在為我們的IL運行提供一個進程時,并不知道所謂的托管環(huán)境,Windows只負責提供進程,在進程中沒有托管環(huán)境的概念.在Windows 進程和IL之間,域提供了橋梁的作用。在Windows進程中,所有域共享CLR提供的諸如垃圾回收,托管堆,和JIT,加載和卸載程序集等服務。也就是說,我們所有的IL代碼必須運行在域中,當然,當我們啟動一個.NET程序時,會創(chuàng)建一個默認的域來加載和運行我們的.NET程序,并提供托管堆。我們也可以創(chuàng)建新的域。所以,每個Windows 進程可以宿主多個域。在.NET中,對象是不能夠跨域直接引用的,每個.NET對象都是他所屬的域所屬的托管堆被創(chuàng)建的。對象的跨域訪問,必須使用代理 (Proxy),并且對象是可以被封送的(直接或間接繼承自MarshalByRefObject),跨域訪問對象就是所謂的遠程訪問 (Remoting)。 在.NET中域的粒度仍然很大,如果我們不顯式的創(chuàng)建新的域,通常我們程序中的所有組件(類),都運行在同一個域中。在.NET中,上下文(Context),提供了比域粒度更小的運行環(huán)境。域可以有多個上下文,但一個上下文只能屬于一個域。 和域一樣,我們的 .NET組件(類)也必須運行在不同的上下文中,只不過不同的上下文提供不同的上下文服務,每個域中也有一個默認的上下文,默認的上下文但是不提供任何的服務。上下文最大的好處是讓我們可以使用上下文攔截技術,為被宿主在上下文的組件(類)提供自定義的服務。這樣,我們就可以實現所謂AOP編程。我們可以把AOP中所謂的管道工作作成服務,添加到上固定的下文服務中,這樣每個對這個上下文中的組件(類)的調用,都將被攔截,然后把服務(管道方法)添加到組件(類),就好象把服務(管道方法)織入(AOP術語)到組件(類)中.
轉載于:https://www.cnblogs.com/lanru/archive/2010/08/29/1812141.html
總結
以上是生活随笔為你收集整理的.NET 中上下文的概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js 中 document.create
- 下一篇: ASP.NET中常用的三十三种代码