簡體   English   中英

使用WebRole將WCF服務部署到非Azure Hoster

[英]Deploy WCF Service with WebRole to non-Azure Hoster

我有一個帶有一個WebRole和一個WorkerRole的WCF服務,用於與Azure數據庫進行通信。 此服務部署到Windows Azure雲中。 一切正常。

但現在,我有一個(或多或少學術性)問題:是否可以將此服務部署到另一個托管服務商,而不是Azure雲。 如果是,則必須更改程序的哪些部分以及在其他托管環境中需要哪些軟件(即IIS)。

這個問題的背景是:我的客戶想知道他是否獨立於Azure雲。

非常感謝你的回答!

簡單的答案

直接在Visual Studio中運行代碼時(即不在模擬器中)會發生什么?

答案很長

在Azure中創建角色時,Visual Studio會向項目添加一個繼承RoleEntryPoint的類。 該類包含OnStart,OnStop和Run的函數。

對於WebRole,此類不是必需的,實際上創建的對象與ASP.NET應用程序位於一個單獨的進程中。 如果您在此處有任何代碼,則需要在內部(或其他雲)上運行它時將其放在其他位置。 也許是Windows服務,也許是Global.asax?

至於WorkerRole,它還有一個RoleEntryPoint,但這是你的應用程序的主要入口點。 在這種情況下,您可以在Visual Studio中創建一個新的Windows服務項目,並重用相同的邏輯。 無論您在“運行”功能中添加了什么代碼,您都可以轉移到共享DLL,可以從WorkerRole或Windows服務訪問該DLL。

至於其他Azure功能(blob,隊列,表,SQL數據庫,訪問控制服務,服務總線等等),這些仍可以從Azure外部使用,或者您可以為每個功能尋找替代方案。 為了便於說明,您可以這樣做:

隊列 - > MSMQ

Blob - >文件系統

SQL數據庫 - > SQL Server

如果使用Inversion of Control模式,則可以抽象出這些技術的實現,使您的應用程序不知道正在使用哪種底層技術。 這使得切換實現(和雲供應商)變得非常容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM