【问题标题】:Simple XML-RPC Web Service简单的 XML-RPC Web 服务
【发布时间】:2016-05-19 22:03:27
【问题描述】:

我需要实现一个简单的 XML-RPC Web 服务以与 Shopatron API (http://developer.shopatron.com/api) 一起使用,特别是 Ready Order 下载部分 (http://developer.shopatron.com/ReadyOrderDownload)

第三方(Shopatron)会将一些 XML 包数据转储到 URL。我只需要处理它。

我已将 Nuget Package xmlrpcnet (https://www.nuget.org/packages/xmlrpcnet) 安装到我的网站项目中。

我的问题:我需要向我的 VS 项目网站添加什么类型的 Web 服务才能使这变得简单易行?

我想要一个:

  1. 通用处理程序 (ashx)
  2. Web 服务 (asmx)
  3. WCF 服务 (svc)
  4. 其他?

额外问题:我可以使用一个好的测试工具将 XML-RPC 示例包“发布”到我的本地开发网站吗?

【问题讨论】:

    标签: .net xml web-services wcf xml-rpc


    【解决方案1】:

    我认为更好的选择是按照推荐的(今天)方式使用 WCF 来创建 Web 服务。使用 WCF 基础结构创建服务允许您在 IIS、WAS(win 服务)、控制台应用程序中托管您的服务,而不会出现太多问题和摩擦。 This 项目(提供 XmlRpcEndpointBehavior)和 tutorial 可以提供帮助(已经讨论过 here)。

    您甚至可以轻松解析请求正文 xml 并提供所需的响应 xml 结构 - 通过使用 WCF 支持类/对象:

    例如:

    [OperationContract]
    [WebInvoke(
    BodyStyle = WebMessageBodyStyle.Bare,
    Method = "POST",
    RequestFormat = WebMessageFormat.Xml,
    ResponseFormat = WebMessageFormat.Xml,      
    UriTemplate = "/somemethod?param1={param1}&param2={param2}")]       
    System.ServiceModel.Channels.Message SomeMethod(Stream stream, string param1, string param2)
    {
        string xmlString;
    
        var inputStream = stream;
        using (var streamReader = new StreamReader(inputStream))
        {
            xmlString = streamReader.ReadToEnd();
        }
    
        var sourceXml = new XmlDocument();
        sourceXml.LoadXml(xmlString); 
        //...
    
        var xml = new XDocument(...);
        //...
    
        var settings = new XmlWriterSettings();
        settings.Indent = true;
        var sb = new StringBuilder();
        using (var writer = XmlWriter.Create(sb, settings))
        {
            xml.WriteTo(writer);
            writer.Flush();
        }
    
        WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml";
        return WebOperationContext.Current.CreateTextResponse(sb.ToString());
    }
    

    顺便说一下 asmx,svc - 它仅用于在 Web 应用程序 (IIS) 中托管您的服务,asmx - 已过时,ashx - http 处理程序(严格来说不是 WS 标准 Web 服务),而不是来自 WCF 的世界 - 如果你走 ashx 的方式,你可能需要XML-RPC.NET is a library。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-22
      • 2010-12-07
      • 1970-01-01
      相关资源
      最近更新 更多