不改變中間層,如何玩轉 .NET 的遠端處理功能?

OneAPM官方技術部落格發表於2015-12-17

原文連結: https://msdn.microsoft.com/enus/library/aa289846(v=vs.71).aspx

Visual Studio .NET 2003

該方案展示了傳統系統與託管程式碼的整合方法,以及這些傳統系統如何使用核心 .NET 遠端服務。具體點說,該方案展示了在不改變中間層應用程式的前提下,如何利用 .NET 的遠端處理功能,將 .NET Web 應用與現存 Windows DNA 中間層架構結合起來。

如果你有現成的 Windows DNA 架構,並決定使用 ASP.NET 中的某些特性,但同時想保留在中間層 COM+ 業務和資料物件所做的「投資」,你可以用以下方式部署分散式架構。此外,正如下圖中顯示,使用者服務系統 ASP.NET 程式碼、使用者服務等等)完全獨立於中間商業服務網路之外。

該方案的優點是:無需修改中間層程式碼。你現在可以關閉所有此前用於 Windows DNA 架構方案的 DCOM 埠,同時獲得公共語言執行時(CLR)、Web Forms 和 ASP.NET 效能提升等優勢。

要實現此方案(下面所描述的安裝執行步驟),需要:

  • 在 Web和應用程式伺服器上安裝 .NET Framework

  • 在應用程式伺服器上建立一個 Web 工程

  • 將 remoting.cfg 檔案複製到該 Web 工程的根目錄中

  • 將呼叫方程式集(assembly)複製到新建 Web 架構下的 \bin 目錄下。

  • 修改 Web伺服器(客戶端)的 web.config 檔案以便使用Http/Binary格式。具體細節請參考 .NET Remoting

注意:對於 TCP/Binary,需要 exe 而非 Web 工程,並且這一點在安裝說明中沒有涉及。

關鍵點

Fitch 和 Mather 7.0 示例使用 HTTP/Binary 而非 HTTP/SOAP。之所以使用 HTTP,是因為需要通過80埠防火牆。之所以 Binary 而非 SOAP 是受效能影響。對於大量的資料,Binary 效能優於 SOAP。因此,如果處理大量資料(例如陣列、資料集和資料表),使用 Binary 格式。如果處理小塊資料,使用 SOAP 或者 Binary 格式並無多大差別。處理整數型資料亦然。如果遠端呼叫是通過80埠從半可信位置發起,建議使用 SSL和 IPSec 以確保通訊的安全。

註釋: 該案例僅用於演示說明在 Fitch 和 Mather 7.0 環境下,.NET 遠端處理與遺留 COM+ 元件的組合使用方法。在實踐中,如果通訊是橫跨整個廣域網(WAN),這種方案事實上是一個糟糕的設計。在本例中,分散式伺服器僅用於演示 .NET 遠端服務。對於 Fitch 和 Mather 7.0,這不是一種可取的分散式方案。此外,在本案例中,.NET Framework 必須安裝在應用程式伺服器上。

方案: .NET 與傳統系統整合

不改變中間層,如何玩轉 .NET 的遠端處理功能?

安裝

下面的安裝過程展示了上圖描述的多主機安裝案例。

注意:該方案假設資料庫安裝在一個獨立的伺服器上。

執行安裝:

  1. 確保所有的裝置上都安裝了 .NET Framework.
  2. 在 Web 伺服器(點選檢視單個裝置配置方法)上安裝 FMStocks7.MSI 或在應用程式叢集控制器( Application Center Cluster Controller)上安裝 FMStocks7 。
  3. 開啟命令提示符並更改包含 Fitch 和 Mather 示例的目錄。預設目錄為:\machinename[安裝了Visual Studio .NET的驅動盤]:\Program Files\Microsoft Visual Studio .NET 2003\Enterprise Samples\FMStocks7。
  4. 至此,可以在單個伺服器或整個應用程式中心叢集上安裝 BLL:

單個伺服器

  • 在命令提示符上輸入:

fms.exe deploy RemoteMachine=MachineX Path=c:\FMStocks7_GAM Components=GAM

注意:更改引數以便其適合你的配置環境。輸入 fms.exe 且不加引數會出現幫助。該過程會將應用程式的 GAM 安裝到獨立的遠端伺服器上。

在輸入以上命令後,將會看到以下操作: ``` Stopping IIS

Creating Directories

Generating Configuration files

...

Starting IIS

Upon completion you should see:

Deployment successful ``` 應用程式中心叢集

a. 在命令提示符上輸入: fms.exe deploy RemoteMachine=MachineX Path=c:\FMStocks7_GAM Components=GAM RemoteUser=MachineX\jdoe RemotePassword=password Cluster=nnn.nnn.nnn.nnn

注意:僅當在叢集上部署時,才會使用叢集引數。MachineX 必須作為叢集控制器。該一過程會將應用程式的 GAM 安裝到應用程式中心叢集上。

b. 請驗證應用中心是否在應用管理控制檯成功部署。在輸入上述命令後,將看到以下操作: ``` Stopping IIS

Creating Directories

Generating Configuration files

...

Starting IIS

Upon completion you should see:

Deployment successful 或者,你可以新增以下命令列以複製程式中心叢集中的 Web 主機,正如前面的影像所示: fms.exe replicate ```

提示:在實際情況中,你可能希望通過其他方式自動化 Web 主機複製過程。例如,一個彈出對話方塊詢問是否需要複製,或者使用管理控制檯的管理單元。

c. 啟動應用程式並檢視其版本號頁面,驗證安裝是否成功。版本頁面會顯示安裝了BLL、DAL 和 GAM 的主機名稱。其中 GSM 應該安裝在 MachineX 上。

安全要求

Fitch 和 Mather 示例必須安裝在具有本地安全策略組 FullTrust 許可權的的位置。本地驅動屬於具有 FullTrust 許可權的「Zone-MyComputer」安全策略組,而網路共享和對映網路驅動器則屬於具有 LocalIntranet 許可權的「Zone – Intranet」安全策略組。因此,如果你將示例安裝到網路共享或者網路驅動器下,就必須給相應位置授予 FullTrust 許可權。

  1. 右擊桌面上的IE瀏覽器圖示,在快捷選單中選擇「屬性( Properties)」。
  2. 選擇「安全(Security)」標籤。
  3. 將網路共享或對映網路驅動器新增到裝置可信站點。 注意:可信站點屬於「Zone–Trusted」安全策略組。預設情況下,該策略組具有 Internet 許可權而非 FullTrust 許可權。
  4. 開啟命令提示符並通過以下命令授予可信站點 FullTrust 許可權:caspol -chggroup 1.5 FullTrust

OneAPM 助您輕鬆鎖定 .NET 應用效能瓶頸,通過強大的 Trace 記錄逐層分析,直至鎖定行級問題程式碼。以使用者角度展示系統響應速度,以地域和瀏覽器維度統計使用者使用情況。想閱讀更多技術文章,請訪問 OneAPM 官方部落格

相關文章