成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

WCF服務寄宿相關使用概念詳解

開發 開發工具
我們在這篇文章中將會通過一個簡單的示例為大家詳細解讀WCF服務寄宿的一些基本內容,希望大家可以從中獲得到一些幫助。

WCF開發工具是一個建立于.Net Framework 2.0基礎上的一個功能強大的開發插件,那么如何才能正確的應用這一插件來幫助我們在實際開發中獲得幫助呢?這首先就需要我們來熟練掌握一些應用技巧,比如今天為大家介紹的WCF服務寄宿的相關內容。

在默認的情況下,基于IIS的服務寄宿是通過一個特殊的HttpModule實現的,其類型為System.ServiceModel.Activation.HttpModule,是一個定義在System.ServiceModel程序集中的內部類型。HttpModule的定義大體上如下面的代碼所示,我們很清楚地看到其實現的原理:將實現WCF Service請求處理的邏輯注冊到HttpApplication的PostAuthenticationRequest事件中。

  1. internal class HttpModule : IHttpModule   
  2. {   
  3. //其他成員   
  4. public void Init(HttpApplication context)   
  5. {   
  6. context.PostAuthenticateRequest += new EventHandler
    (HttpModule.ProcessRequest);   
  7. }   
  8. private static void ProcessRequest
    (object sender, EventArgs e)   
  9. {   
  10. //服務請求處理實現   
  11. }   

System.ServiceModel.Activation.HttpModule是一個特殊的HttpModule,說它特別是因為當HttpModule注冊到HttpApplication的PostAuthenticateRequest事件處理程序執行后,不會再將請求進一步分發給后續的請求處理步驟。換句話說,就HttpApplication從BeginRequest到EndRequest整個請求處理的生命周期來說,對于基于.svc文件的請求僅僅延續到PostAuthenticateRequest階段。我們可以通過一種簡單的方式來證明這一點。

假設我們有一個WCF服務寄宿需要通過IIS進行寄宿,并把WCF服務相應的.svc文件定義在一個對應于某個IIS虛擬目錄的ASP.NET Website中。現在我們為之添加一個global.asax,在該global.asax,我通過如下的代碼注冊了HttpApplication處理請求的前三個事件:BeginRequest、AuthenticateRequest和PostAuthenticateRequest,當這3個事件觸發后,將一段代表當前事件的名稱寫入EventLog中。

  1. <%@ Application Language="C#" %>   
  2. <%@ Import Namespace"System.Diagnostics"%>   
  3. <script runat="server">   
  4. void Application_BeginRequest(object sender, EventArgs e)   
  5. {   
  6. string message = string.Format("BeginRequest Event is 
    raised at {0}", DateTime.Now);   
  7. EventLog.WriteEntry("Application", message, 
    EventLogEntryType.Information);   
  8. }   
  9. void Application_AuthenticateRequest(object sender, EventArgs e)   
  10. {   
  11. string message = string.Format("AuthenticateRequst Event 
    is raised at {0}",DateTime.Now);   
  12. EventLog.WriteEntry("Application", message, 
    EventLogEntryType.Information);   
  13. }   
  14. void Application_PostAuthenticateRequest(object sender, EventArgs e)   
  15. {   
  16. string message = string.Format("PostAuthenticateRequest 
    Event is raised at {0}", DateTime.Now);   
  17. EventLog.WriteEntry("Application", message, 
    EventLogEntryType.Information);   
  18. }   
  19. </script> 

如果我們上面的說法成立的話,只有HttpApplication的最初3個事件被觸發。此外,HttpModule注冊的操作會先于定義在global.asax的Application_PostAuthenticateRequest方法執行,那么在整個服務調用過程中,只有Application_BeginRequest和Application_AuthenticateRequest這兩個方法會被執行。這一點我們可以從EventLog得到證實。當我們通過執行案例7-2中的代表客戶端應用程序后,EventLog中WindowsLog的Application分組中,會多出兩個日志項目(之前已經將日志清空)。#t#

日志的內容正是我們在Application_BeginRequest和Application_AuthenticateRequest方法中定義的日志文本。可見僅僅這兩個方法被成功執行,Application_PostAuthenticateRequest方法卻沒有被執行。可以想象,后續的事件也不可能被觸發。

到現在為止,我們僅僅是介紹了如何處理基于.svc文件的請求,并沒有說明.svc文件對應的WCF Service是如何被寄宿的。WCF服務寄宿發生在對服務.svc文件的***次訪問,具體的實現很簡單:ServiceMode根據請求的目的地址加載相應的.svc文件,通過解析定義在<%ServiceHost%>指令的Factory和Service屬性得到ServiceHostFactory和Service的類型(Factory默認為System.ServiceMode.ServiceHostFactory),通過反射創建繼承自基類System.ServiceModel.Activation.ServiceHostFactoryBase的ServiceHostFactory對象。***通過ServiceHostFactory創建的繼承自基類System.ServiceModel.ServiceHostBase的ServieHost對象對Serivce進行WCF服務寄宿。

責任編輯:曹凱 來源: CSDN
相關推薦

2010-02-26 16:05:14

寄宿WCF服務

2009-12-21 17:05:59

WCF自托管宿主

2010-02-23 16:32:29

WCF服務

2010-03-01 09:19:10

WCF編碼規范

2009-12-21 15:33:07

WCF集合元素

2010-02-22 17:34:39

WCF依賴屬性

2010-02-24 17:17:04

WCF宿主環境

2010-02-25 13:54:48

WCF安全參數

2010-03-01 16:31:58

WCF實現SOA

2010-02-23 17:55:24

WCF雙向通信

2009-12-29 17:25:36

Silverlight

2009-12-22 10:16:54

WCF服務狀態

2010-01-26 18:00:07

Android屏幕元素

2009-12-22 16:36:38

WCF重載

2010-02-26 09:50:57

WCF傳輸安全機制

2010-02-26 17:51:16

Silverlight

2010-03-02 17:35:20

WCF服務加載

2010-01-06 19:22:43

.NET Framew

2010-01-05 10:29:43

.NET Framew

2010-01-05 16:15:05

.NET Framew
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩视频国产 | av色在线| 国产黄色小视频在线观看 | 一区二区三区四区在线播放 | 国产一区二区三区欧美 | 国产精品日日做人人爱 | 久久久精品一区 | 国产一级成人 | 日韩精品中文字幕一区二区三区 | 久久激情视频 | 91精品国产综合久久福利软件 | 美女天天干天天操 | 日本精品一区二区三区在线观看视频 | 亚洲一区二区三区高清 | av电影手机在线看 | 91精品国产综合久久精品 | 毛片a级毛片免费播放100 | 男女午夜免费视频 | 国产一区二区久久久 | av大片在线 | 欧美电影一区 | 国产成人精品一区二区三区网站观看 | 免费一级黄色 | 黄色成人免费看 | 国产一级在线观看 | 久久久国产精品 | 做a视频 | 成人在线视频免费观看 | 亚洲精选一区二区 | 久久久www成人免费精品 | 精区3d动漫一品二品精区 | 亚洲国产精品第一区二区 | 国产成人精品亚洲日本在线观看 | 国产做a爱片久久毛片 | 国产高清一二三区 | 久久精品国产一区二区电影 | 久久不卡视频 | 91在线导航 | 在线国产视频 | 亚洲欧美日韩在线 | 国产激情精品 |