2010-10-04 116 views
1

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

  1. 使用WCF创建Web服务? (似乎真的很复杂)
  2. 如果我想使用WCF创建我的Web服务,我该从哪里开始?
+1

我想如果你深入研究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

回答

0

使用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的问题。

+0

我知道WCF支持所有这些,并且它的灵活性,但它非常复杂,比简单地创建SOAP Web服务更复杂。 – 001 2010-10-04 10:48:27

+0

我只是想创建一个XML-RPC Web服务,没有SOAP(它有太多的开销)。 – 001 2010-10-04 10:49:14

+0

在WCF上查看关于XML-RPC的更新。 – 2010-10-04 18:29:10

0

我只是做了一个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); 
?> 

我希望这会帮助你。

0

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

至于返回XML,有几种方法。 您可以通过将“xml”转换为服务中的字符串然后再转换回客户端来实现“老派”SOAP Web服务。它不漂亮,但它的工作原理。

另一种方式,我会这样做,将使用WCF和创建映射您的XML的数据契约。

你可以用数据契约做一些相当不错的东西,比如传递数据集和自定义类型,但是这有时会限制你可以使用的绑定类型。