使用XML响应创建Web服务

时间:2010-10-04 10:36:25

标签: c# asp.net xml wcf web-services

使用XML响应创建Web服务的最简单方法是什么?

  1. 使用WCF创建Web服务? (看起来真的很复杂)
  2. 如果我想使用WCF创建我的网络服务,我该从哪里开始?

5 个答案:

答案 0 :(得分:0)

使用XML响应创建Web服务的最简单方法是,不要开玩笑,将XML文件放在标准Web服务器上并将其作为静态文件提供。

我猜你想要比这更灵活的东西,但是......

您有多种选择,而WCF处于更复杂(但更灵活)的频谱端。第一个问题:你的客户是什么?你在写吗?您想编写可供其他客户使用的Web服务吗?

您是否希望使用REST - 即普通旧XML(普通旧XML)(POX)? XML-RPC? SOAP?

WCF支持所有这些,因此这实际上取决于您要支持的客户端。

更新:如果您想支持XML-RPC,那么您可能会比使用this implementation of XML-RPC for WCF by Clemens Vasters更糟糕。我问了一个关于here的问题。

答案 1 :(得分:0)

本文中几乎没有可用的链接。希望他们能帮到你 -

http://social.msdn.microsoft.com/Forums/en/wcf/thread/b082d6de-d1e9-4e51-a0ab-0fe98d7003e6

答案 2 :(得分:0)

在你的情况下,我肯定会使用WCF和REST绑定(webHttpBinding) - 我不同意它的学习很复杂。

查看这些资源以开始使用:

答案 3 :(得分:0)

我刚刚开了一个网络服务。

PHP服务器端代码:

<?php // instantiate SOAP server
function sendXmlMsg($msg){
return $msg;
}
ini_set("soap.wsdl_cache_enabled", "0"); // disabling WSD
$server = new SoapServer("mark.wsdl");
// Register exposed method
$server->addFunction('sendXmlMsg'); // generate captcha
//$server->addFunction('check_captcha'); // check captcha ID
$server->handle(); //?>

我的WSDL文件是

<?xml version ='1.0' encoding ='UTF-8' ?>
<definitions name='Msg91'
  targetNamespace='http://localhost/webtest/test.wsdl'
  xmlns:tns='http://localhost/webtest/test.wsdl'
  xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
  xmlns:xsd='http://www.w3.org/2001/XMLSchema'
  xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/'
  xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'
  xmlns='http://schemas.xmlsoap.org/wsdl/'>



<message name='sendXmlMsgRequest'>
  <part name='msg' type='xsd:string'/>
</message>
<message name='sendXmlMsgResponse'>
  <part name='Result' type='xsd:string'/>
</message>
<portType name='Msg91PortType'>
  <operation name='sendXmlMsg'>
    <input message='tns:sendXmlMsgRequest'/>
    <output message='tns:sendXmlMsgResponse'/>
  </operation>
</portType>

<binding name='Msg91Binding' type='tns:Msg91PortType'>
  <soap:binding style='rpc'
    transport='http://schemas.xmlsoap.org/soap/http'/>
    <operation name='sendXmlMsg'>
    <soap:operation soapAction='urn:xmethods-delayed-quotes#sendXmlMsg'/>
    <input>
      <soap:body use='encoded' namespace='urn:xmethods-delayed-quotes'
        encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
    </input>
    <output>
      <soap:body use='encoded' namespace='urn:xmethods-delayed-quotes'
        encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/>
    </output>
  </operation>
</binding>

<service name='Msg91Service'>
  <port name='Msg91Port' binding='tns:Msg91Binding'>
    <soap:address location='http://localhost/webtest/test.php'/>
  </port>
</service>
</definitions>

客户端PHP文件:

<?php
$client = new SoapClient("mark.wsdl");
$params= array('HiT');
echo $client->__soapCall( 'sendXmlMsg', $params );
?>

我希望这会对你有所帮助。

答案 4 :(得分:0)

创建WCF服务实际上非常简单。网上有很多教程。

至于返回xml,有几种方法。 您可以通过将xml转换为服务中的字符串然后在客户端中转换回来,使用“旧学校”SOAP Web服务执行此操作。它不漂亮,但它有效。

另一种选择,以及我的方式,就是使用WCF并创建一个映射xml的数据协定。

您可以使用数据合同做一些相当不错的事情,例如传递数据集和自定义类型,但这有时会限制您可以使用的绑定类型。

相关问题