2014-01-24 54 views
0

我正在嘗試我的第一個WCF程序,並使用SoapUI模仿第三方的主機。我有一個根本性的問題以及一個編程問題,假設我對我的第一個問題的假設是正確的。使用SoapUI進行WCF編程

基本問題這個第三方給了我他們的.wsdl我能夠加載到SoapUI中。我的假設是,在SoapUI中使用他們的Web服務定義語言 - SoapUI正在嘲笑他們實際的服務,而這些服務將在稍後發佈。 所以我應該使用我的Windows服務作爲'客戶'發送消息到SoapUI,對不對?

背景信息:我的Windows服務最終需要能夠發送肥皂消息到這個坐在不同服務器上的主機服務。我還需要託管自己的WCF服務,以便第三方服務可以在需要時向我發送消息。 - 但我會處理一旦我完成了客戶端部分

另一個問題:我在MSDN上看到的所有示例都使用WCF庫。還有WCF服務應用程序項目類型。 哪一個適合我想要做的?

過程我在我的解決方案中有一個Windows服務。然後我添加了一個WCF服務應用程序,並在我的Windows服務中引用了我的新Web服務中添加了一個服務引用。 我甚至需要爲SoapUI實際發送消息做到這一點嗎?我想我只需要爲我從他們的(第三方)服務接收消息而託管這個WCF服務。

如果我對此正確,我只需要製作一個WCF客戶端。 但是,在MSDN上的示例中。他們的解決方案有一個客戶端/主機/和WCF庫。並且在客戶端中有對WCF Lib的引用。然後,它實例化「圖書館的客戶端」

Sub Main() 
     ' Step 1: Create an instance of the WCF proxy 
     Dim Client As New CalculatorClient() 

     'Step 2: Call the service operations. 
     'Call the Add service operation. 

     Console.WriteLine("******** This is the Client **********") 


     Console.WriteLine("Enter a Double") 
     Dim value1 As Double = Console.ReadLine() 
     Console.WriteLine("Enter another Double") 
     Dim value2 As Double = Console.ReadLine() 

     Dim result As Double = Client.Add(value1, value2) 
     Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result) 

     'Call the Subtract service operation. 
     result = Client.Subtract(value1, value2) 
     Console.WriteLine("Subtract({0},{1}) = {2}", value1, value2, result) 

     'Call the Multiply service operation. 
     result = Client.Multiply(value1, value2) 
     Console.WriteLine("Multiply({0},{1}) = {2}", value1, value2, result) 

     'Call the Divide service operation. 
     result = Client.Divide(value1, value2) 
     Console.WriteLine("Divide({0},{1}) = {2}", value1, value2, result) 

     ' Step 3: Closing the client gracefully closes the connection and cleans up resources. 
     Client.Close() 

     Console.WriteLine() 
     Console.WriteLine("Press <ENTER> to terminate client.") 
     Console.ReadLine() 
    End Sub 

所以這讓我相信,即使我不是從第三方服務接收消息規劃的新實例,我仍然需要到主機一個WCF服務,所以我可以添加服務引用到我的Windows服務,所以我可以實例化一個客戶端併發送消息到第三方服務,這是否正確?

回答

1

我沒那麼熟悉了SoapUI,但我的理解是,它可以讓你通過充當客戶機來測試Web服務,並調用可用的服務。它可以被嘲諷的服務,但我還沒有與了SoapUI熟悉,以解決與智力的任何水平。如果第三方還沒有公佈他們的服務,我不知道他們是如何提供你一個WSDL,它不會使一個很有意義擔心客戶端實現,直到你有一個服務來測試對抗。當然,如果SoapUI可以嘲笑這項服務,那麼你很好。

WCF庫只不過是WCF作爲DLL。這個DLL需要以某種方式託管,如果你使用的是Windows服務,那麼WCF庫就足夠了。 WCF服務應用程序是一個ASP.NET網站託管WCF服務 - 如果你使用的是IIS,WCF服務的應用將是一個很好的起點,但你沒有,所以與WCF服務庫堅持。

由於WCF圖書館本身並無法使用,需要對其進行託管。這就是您引用的示例具有主機部分和客戶端部分的原因 - 爲了使WCF服務消耗,需要託管庫。

因此,對於項目的第一部分(將消息發送給第三方),所有Windows服務需求都是對該服務的引用,因爲它充當客戶端。

對於第二部分,您需要從第三方接收郵件,然後您需要在Windows服務中託管自己的WCF服務。

簡而言之,客戶端功能不需要託管 - 只需要託管WCF服務本身。