使用XML响应创建Web服务
在你的情况,我肯定会使用WCF与REST结合(webHttpBinding
) - 我会不同意这件事的复杂化学习。
查阅这些资源,开始:
- MSDN WCF REST developer center
- DOTNET的晃动的电视节目#135:Keith Elder Demystifies WCF
- DOTNET的晃动的电视节目#122:Miguel Castro on Extreme WCF
使用XML响应创建Web服务的最简单方法是,不要开玩笑,将XML文件放在标准Web服务器上并将其作为静态文件提供。
我猜你想要的东西比这更灵活,但...
你有几种选择,而WCF是在频谱的更复杂(但灵活)结束。第一个问题:你的客户是什么?你在写吗?你想写一个可以被其他客户使用的Web服务吗?
您是否想使用REST - 即普通旧式XML(POX)而不是普通旧式HTTP? XML-RPC?肥皂?
WCF支持所有这些,所以这真的取决于您想支持哪些客户端。
更新:如果你想支持XML-RPC,你可能会比从this implementation of XML-RPC for WCF by Clemens Vasters开始更糟糕。我问了一个关于这个here的问题。
本文中几乎没有可用的链接。希望他们能帮助你 -
http://social.msdn.microsoft.com/Forums/en/wcf/thread/b082d6de-d1e9-4e51-a0ab-0fe98d7003e6
我只是做了一个Web服务。
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);
?>
我希望这会帮助你。
创建WCF服务其实很简单。网上有很多教程。
至于返回XML,有几种方法。 您可以通过将“xml”转换为服务中的字符串然后再转换回客户端来实现“老派”SOAP Web服务。它不漂亮,但它的工作原理。
另一种方式,我会这样做,将使用WCF和创建映射您的XML的数据契约。
你可以用数据契约做一些相当不错的东西,比如传递数据集和自定义类型,但是这有时会限制你可以使用的绑定类型。
我想如果你深入研究WCF REST解决方案,你不会发现生成XML复杂。我发现RESTful .NET这本书也很有帮助。 http://www.amazon.com/RESTful-NET-Build-Consume-Services/dp/0596519206/ref=sr_1_cc_2?ie=UTF8&qid=1286189339&sr=1-2-catcorr – kenny 2010-10-04 10:50:17