2010-02-01 69 views

回答

0

正如我們已經寫了一個自定義的主機和用了好幾年,使之成爲真正的應用服務器,我將分享一些我們不得不面臨的挑戰。如果要管理所有細節並將NT服務視爲真正的服務主機,那麼創建一個將WCF服務作爲NT服務管理的自定義主機是一項非常具有挑戰性的任務。挑戰從管理多個Appdomains(每個服務一個)開始,管理服務的狀態,啓動時間,從IDE部署,最糟糕的是激活。你有沒有考慮過如何實現?如果您沒有此功能,則意味着您的所有服務都將始終處於活動狀態並存儲在內存中。 IIS和Appfabric做得非常好,相信我,這很容易實現。另一個挑戰性的部分是管理這個主機的UI和一個可以管理多個主機的UI(在不同盒子上運行的NT服務)。你需要一個發現代理實現?最後,如果您想要以相同的方式管理在自定義主機,IIS和App結構中運行的服務,那該怎麼辦? 在做這樣的實施之前要考慮一下,因爲範圍可能會隱藏在你身上。

+0

謝謝哥們......我們終於從這個要求由於我們的技術人員不良架構決定擺脫作爲項目得到了報廢。我也調查了很多,我同意這是最複雜的要求之一,它也沒什麼意義。 – user263606 2012-07-10 14:28:55

0

我在這裏做類似的事情。

  • 創建Dictionary<key, ApplicationDomain>收集到你的主程序
    • Key:獨特的東西對每個應用領域,如GuidSystem.Type
  • ApplicationDomain類公開的內部屬性來訪問您的AppDomain代理(即它繼承了MarshallByRef類)
  • 載入你的WCF主機置於主程序,所以你會得到該集合訪問
  • 每讓您的服務獲得一些訪問權限,您只需取得該密鑰,訪問您的代理服務器並在您的服務託管商處執行任何您想要的操作。

關鍵點:你的服務必須能訪問所有服務的主機上。