2012-04-16 81 views
2

我有一個我創建的WCF服務,現在需要集成到另一個項目中。我希望第二個項目能夠託管這個服務(這是一個Sitecore實現,並且從維護的角度來看更容易),而不是單獨維護服務。這些項目採用不同的解決方案。即使代碼在另一個項目中,第二個項目是否可以提供服務?我知道我需要引用DLL,但除此之外,我不知道如何設置服務。我認爲我需要某種部分實現的服務,但這是我的知識程度。如何在另一個項目中託管一個項目的WCF服務?

另一個皺紋 - 服務是用VB寫的,而第二個項目是C#。這應該不重要,因爲我通過DLL引用所有的服務代碼,但我想我會提到它。

UPDATE 我忘了提的一件事是我希望服務也可以作爲Web服務提供給其他應用程序。因此,該服務將站在第二個應用程序內,以便第三個應用程序可以調用該服務。我不知道這是否會影響到目前爲止的任何迴應。

回答

0

您不需要在主機項目中部分實現該服務。請記住,WCF服務在技術上只是另一個.NET類。暴露它只是引用類的類型或.svc文件的ServiceHost代碼(如果通過IIS公開)。和VB/C#不會有任何區別。

3

如果您的WCF服務被編譯爲一個DLL,它應該是添加一個參考,並簡單:

static void Main(string[] args) 
{ 
    ServiceHost host = new ServiceHost(typeof(MyService)); 
    host.Open(); 

    Console.ReadLine(); 
    host.Close(); 
} 
+0

我更新了我的原始請求,並提供了一條重要的缺失信息。我希望第二個應用程序將服務公開給其他應用程序,這就是爲什麼我假設需要在第二個應用程序中公開該服務的某個實際.svc文件的原因。 – gfrizzle 2012-04-16 14:43:02

+0

該服務由運行ServiceHost的受管進程公開。這可以是Windows服務,應用程序應用程序或IIS。如果您在IIS中託管服務,則需要使用.SVC文件。 – 2012-04-16 14:54:08

+0

如果按照我的示例使用exe文件,則需要從您的服務中複製App.config的相關位(的內容) – GazTheDestroyer 2012-04-16 14:59:05

1

該服務由它運行ServiceHost的託管過程中暴露出來。

這可以是Windows服務,應用程序應用程序或IIS。

如果您在IIS中託管服務,則需要使用.SVC文件。

如果您不在WCF中託管,您應該創建一個app.config文件,它將告訴WCF運行時您希望如何公開您的服務。爲此,請使用<System.ServiceModel/>配置部分。

服務託管後,它可以被任意數量的客戶端應用程序使用。

相關問題