【问题标题】:WCF programming with SoapUI使用 SoapUI 进行 WCF 编程
【发布时间】:2014-01-24 12:58:32
【问题描述】:

我正在尝试我的第一个 WCF 程序,并且我正在使用 SoapUI 来模仿第三方的主机。我有一个基本问题和一个编程问题,假设我对第一个问题的假设是正确的。

基本问题 这个第三方给了我他们的 .wsdl,我可以将其加载到 SoapUI 中。我的假设是,使用他们在 SoapUI 中的 Web 服务定义语言 - SoapUI 正在模拟他们将在稍后某个时间推出的实际服务。 所以我应该使用我的 Windows 服务作为“客户端”向 SoapUI 发送消息,对吗?

背景信息:我的 windows 服务最终需要能够向这个位于不同服务器上的主机服务发送肥皂消息。我还需要托管我自己的 WCF 服务,以便第三方服务可以在需要时向我发送消息。 - 但是一旦我完成了客户端部分,我会处理这个问题

另一个问题:我在 MSDN 上看到的所有示例都使用 WCF 库。还有 WCF 服务应用程序项目类型。 哪一个适合我正在尝试做的事情?

流程 我的解决方案中有一个 Windows 服务。然后我添加了一个 WCF 服务应用程序,并在我的 Windows 服务中添加了一个服务引用,以引用我的新 Web 服务。 为了将消息实际发送到 SoapUI,我什至需要这样做吗?我想我只需要托管这个 WCF 服务,我就可以从他们(第三方的)服务接收消息。 p>

如果我是正确的,我只需要创建一个 WCF 客户端。 但是, 在 MSDN 上的示例中。他们的解决方案中有一个 Client/Host/ 和 WCF Lib。在客户端中有对 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 服务,这样我就可以实例化客户端并向第三方服务发送消息,对吗?

【问题讨论】:

    标签: .net wcf web-services soap soapui


    【解决方案1】:

    我对 SoapUI 不太熟悉,但我的理解是它允许您通过充当客户端来测试 Web 服务,并调用可用的服务。它可能是在嘲笑该服务,但我对 SoapUI 还不够熟悉,无法用任何级别的智能来解决这个问题。如果第三方还没有发布他们的服务,我不确定他们是如何为您提供 WSDL 的,并且在您有服务要测试之前担心客户端实现没有多大意义。当然,如果 SoapUI 可以模拟该服务,那么您就可以开始了。

    WCF 库只不过是作为 DLL 的 WCF。这个 DLL 需要以某种方式托管,如果您使用的是 Windows 服务,那么 WCF 库就可以了。 WCF 服务应用程序是托管 WCF 服务的 ASP.NET 网站 - 如果您使用 IIS,WCF 服务应用程序将是一个很好的起点,但您不是,所以坚持使用 WCF 服务库。

    由于 WCF 库本身不可用,因此需要托管它。这就是您引用的示例具有托管部分和客户端部分的原因 - 需要托管库才能使用 WCF 服务。

    因此,对于项目的第一部分(将消息发送给第三方),您的所有 Windows 服务需要的是对该服务的引用,因为它充当客户端。

    对于第二部分,您需要从第三方接收消息,那么您需要在您的 Windows 服务中托管您自己的 WCF 服务。

    简而言之,不需要托管客户端功能 - 只需托管 WCF 服务本身。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-01
      相关资源
      最近更新 更多