代码之家  ›  专栏  ›  技术社区  ›  andy

将数据推送到.NET中的未知Web服务

  •  0
  • andy  · 技术社区  · 15 年前

    嘿,伙计们,这是我的要求:

    我有一个中央应用程序接收来自其他应用程序的请求,做一些事情,然后将数据返回到该应用程序。以最简单的形式,这些数据将是一个XML文档。

    现在,在设计阶段,这个中央应用程序不知道其他哪些应用程序会发出请求。

    每次中央应用程序收到请求时,它也会收到一个URL,告诉中央应用程序其Web服务地址(见下文),因此中央应用程序知道将数据推送到哪里:

    http://someapp1.com/UpdateData
    http://someapp2.com/UpdateData
    

    现在,我想使用SOAP或者某种RESTful实现,最好不要使用WCF。

    我的问题是:

    1. 使用SOAP,如果接口都相同,我可以在运行时动态地更改服务URL吗?
    2. 如果可以的话,我该如何以一种宁静的方式发布大量的XML呢?
    2 回复  |  直到 15 年前
        1
  •  1
  •   Michael Dausmann    15 年前

    第一点)当然可以更改Web服务代理在运行时所说的端点。我相信它看起来像这样…

    ws.Endpoint.Address = new System.ServiceModel.EndpointAddress( newurl )
    

    在您的情况下,显然您的“中央应用程序”将调用代理,因为它将数据发送回您的“请求者/接收者”。

    当您请求者/接收者提交请求时,它将使用代理来调用中心应用程序,但我猜在这种情况下,它不需要是动态的(只有一个“中心应用程序”对吗?)

    第2点)不确定这样做最聪明的方法是什么。当然,默认情况下,从WCF Web服务发送/接收的消息始终是XML。如果希望服务约定保持不变,则需要一个包装器对象来包含数据。我想您可以尝试创建一个对象,该对象有一个“有效载荷”成员可以保存您的数据。

    希望这有帮助

    迈克尔

        2
  •  1
  •   Jay    15 年前

    中央应用程序的工作是一个非常长时间运行的过程吗? 否则,为什么中央应用程序不公开只返回结果作为响应的Web方法,而不启动新的调用?

    someapp1调用central.getmydata(param)…中央进程…someapp1从中心接收SOAP响应

    这也将有助于分离您的系统,该系统现在已设置为使许多应用程序知道Central的API,Central知道它应该将什么发送到这些其他应用程序中的每一个。