日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

.NET上下文拦截

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

轉載于:https://www.cnblogs.com/cwy173/archive/2009/11/13/1602766.html

總結

以上是生活随笔為你收集整理的.NET上下文拦截的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。