2010-10-04 255 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的數據契約。

你可以用數據契約做一些相當不錯的東西,比如傳遞數據集和自定義類型,但是這有時會限制你可以使用的綁定類型。