.NET Remoting 體系結構 之 在 ASP.NET 中駐留遠端伺服器

hungerW發表於2013-12-22

     迄今為止,所有伺服器示例都是執行在自駐留(self-hosted)的.NET 伺服器上。自駐留的伺服器必 須手動啟動。.NET Remoting 伺服器也可以在許多其他的應用程式型別中啟動。在 Windows 服務中, 伺服器可以在系統啟動時自動啟動,此外,程式可以通過系統賬戶的證書執行。

  ASP.NET 對.NET Remoting 伺服器有一種特殊支援。ASP.NET 可用於自動啟動遠端伺服器。與 可執行的駐留應用程式相反,駐留在 ASP.NET 中的.NET Remoting 在配置時使用不同的檔案,但語 法相同。

  為了使用 IIS(Internet Information Server,Internet 資訊伺服器)和ASP.NET 中的基礎結構,必須 建立一個派生自 System.MarshalByRefObject 類的類,該類具有預設的建構函式。不再需要以前為服 務器建立和註冊通道所使用的程式碼;這些程式碼所做的工作可以由 ASP.NET 執行庫完成。此外,也必 須在 Web 伺服器上建立一個虛擬目錄,該目錄對映到儲存 Web.config 配置檔案的目錄上。遠端類的 程式集必須駐留在子目錄 bin 中。

  可以使用 IIS MMC 配置 Web 伺服器上的虛擬目錄。選擇 Default Web Site 並開啟 Action 選單, 就可以建立一個新的虛擬目錄。

  Web 伺服器上的 Web.config 配置檔案必須放在虛擬網站的主目錄中。使用預設的 IIS 配置,將 使用的通道會偵聽埠 80:

1 <configuration> <system.runtime.remoting> <application> <service> <wellknown mode="SingleCall" type="Wrox.ProCSharp.Remoting.Hello, RemoteHello" objectUri="HelloService.soap" /> </service> </application> </system.runtime.remoting> </configuration> 

  現在,客戶端使用下面的配置檔案就可以連線到遠端物件上。在這裡必須指定遠端物件的 URL, 這個 URL 包括 Web 伺服器 localhost、Web 應用程式的名稱 RemoteHello(該名稱在建立虛擬網站時 指定)、遠端物件 HelloService.soap(在檔案 Web.config 中定義)的URI。因為埠號 80 是HTTP 協議 的預設埠,所以不必指定它。不指定<channels>部分表示使用 machine.config 配置檔案中延遲載入 的HTTP 通道:

<configuration>
 <system.runtime.remoting> 
<application> 
<client url="http:/localhost/RemoteHello">
 <wellknown type="Wrox.ProCSharp.Remoting.Hello, RemoteHello" url="http://localhost/RemoteHello/HelloService.soap" />
 </client>
 </application> 
</system.runtime.remoting> 
</configuration> 

 

相關文章