1. 程式人生 > >WSDL——Web Service Description Language

WSDL——Web Service Description Language

讓我們來看一個示例WSDL檔案的結構及工作原理。請注意這只是一個十分簡單的WSDL文件例項。我們的目的只是簡單展示下最顯著的特徵,後面的章節有對其詳細的討論。

<?xml version="1.0" encoding="UTF-8" ?> 
<definitions name="FooSample" targetNamespace="http://tempuri.org/wsdl/" xmlns:wsdlns="http://tempuri.org/wsdl/" xmlns:typens="http://tempuri.org/xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:stk="http://schemas.microsoft.com/soap-toolkit/wsdl-extension" xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
 <schema targetNamespace="http://tempuri.org/xsd" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" elementFormDefault="qualified" >
 </schema>
</types>
<message name="Simple.foo">
 <part name="arg" type="xsd:int"/> 
</message>
<message name="Simple.fooResponse">
 <part name="result" type="xsd:int"/> 
</message>
<portType name="SimplePortType">
 <operation name="foo" parameterOrder="arg" >
 	<input message="wsdlns:Simple.foo"/> 
	<output message="wsdlns:Simple.fooResponse"/>
 </operation>
</portType>
<binding name="SimpleBinding" type="wsdlns:SimplePortType">
 <stk:binding preferredEncoding="UTF-8" />
 <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> 
 <operation name="foo">
	<soap:operation soapAction="http://tempuri.org/action/Simple.foo"/>
	<input>
	 <soap:body use="encoded" namespace="http://tempuri.org/message/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
	</input>
	<output>
	 <soap:body use="encoded" namespace="http://tempuri.org/message/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
	</output>
 </operation> 
</binding>
<service name="FOOSAMPLEService">
 <port name="SimplePort" binding="wsdlns:SimpleBinding">
 	<soap:address location="http://carlos:8080/FooSample/FooSample.asp"/> 
 </port> 
</service> 
</definitions>

下面只是對該WSDL文件的預覽:

        第一行定義了該文件是一份XML文件。儘管這一行不是必需的,但這一行有助於XML解析器對WSDL文件進行解析。

        第二行定義了WSDL文件的根元素:<definitions>並有一些名稱空間屬性定義在根元素內,就與<types>的子元素<schema>類似。

        <types>元素組成了型別段。當沒有資料型別要定義時,該段可能被忽略。在示例WSDL中,該段中沒有特定於應用程式的資料型別定義,但還是使用了型別段,只是用於定義在該文件中使用的schema名稱空間。

        <message>元素組成訊息段。如果你將一個操作比作函式,那麼<message>元素則定義了函式的所有引數。每個<message>的<part>子元素與引數相對應。輸入引數在獨立的<message>元素中定義,與輸出引數隔離,輸出引數定義在自己的<message>元素中。輸出引數<message>元素的name屬性以“Response”結尾,用於與輸入引數進行區分。每一個<part>元素都有name和type屬性,就像函式的引數具有型別和名稱類似。<part>元素的type屬性值可以是XSD基本型別,SOAP定義的型別,WSDL定義的型別或型別段定義的型別。

        在PortTypes段中可以定義零個,1個或多個<portType>元素。可以不包含該段的原因是該段可以定義在獨立的WSDL文件中。示例中只包含了一個<portType>元素。<portType>元素可以通過<operation>子元素定義一個或多個操作。示例只包含一個<operation>元素,名稱為“foo”。這個名稱就相當於函式名。<operation>元素可以包含一個,兩個或三個子元素:<input>,<output>,<fault>,這三個子元素中的message屬性值與訊息段中的<message>元素相對應。示例中的整個<portType>元素就相當於C語言中int foo(int arg);函式的定義。

        在Binding段中可以定義零個,1個或多個<binding>元素。它的功能是指定每個<operation>請求和響應如何通過網路傳輸。

        在Services段中可以定義零個,1個或多個<service>元素。<service>元素包含<port>子元素並與Binding段中的<binding>元素相對應。

名稱空間

        根元素<definitions>和子元素<schema>都有namespace屬性。

        每個namespace屬性定義了每個應用在文件中namespace的縮寫。例如:“xmlns:xsd”為http://www.w3.org/2001/XMLSchema名稱空間定義了xsd縮寫。定義後就可以在以後的文件中使用縮寫來代表完整的名稱空間。

        什麼是名稱空間?名稱空間的使用是為了避免名字衝突。如果我建立了一個web Service並在WSDL檔案中包括了一個name屬性為foo的元素。你準備將這個服務與另一個服務一起使用,如果沒有名稱空間,則另一個服務中就不能在其WSDL檔案中包括“foo”名稱。每個服務能使用相同的名字只有當這些名字在相同的例項中表示同一個意思。使用不同的名稱空間,我自己的服務中“foo”名字可以與另一個服務中相同的名字表示不同的意思。

        屬性targetNamespace定義了一個名稱空間,所有在元素中的名稱都屬於這個名稱空間。在示例檔案中,根元素<definitions>的targetNamespace屬性定義為http://tempuri.org/wsdl/。即所有定義在該文件中的名稱都屬於這個名稱空間。<schema>元素有自己的targetNamespace屬性,值為http://tempuri.org/xsd,所有定義在<schema>元素中的名字都屬於這個名稱空間而非上層的名稱空間。

        <schema>元素的下一行中定義了預設的名稱空間(xmlns="http://www.w3.org/2001/XMLSchema"),所有未經限定的名稱都屬於這個名稱空間。

SOAP訊息

        一種檢視WSDL檔案的方法:客戶端和伺服器端使用該檔案,該檔案決定了網路上傳輸的資料內容。儘管SOAP使用底層的IP或HTTP協議,但應用程式決定了高層在客戶和伺服器端所使用的協議。換句話說,給定一個操作叫“echoInt”,執行簡單的返回輸入的整型操作,引數的數量,每個引數的型別以及引數在網路中如何傳輸(serialization)組成了應用程式規定的協議。這樣的協議可以由多種方式進行指定,但我相信最好的方法是使用WSDL。如果我們通過這種方法重新審視WSDL,則其不僅是“介面契約”,而且還是一個協議定義語言。

        WSDL可以定義SOAP訊息是否遵循rpc或document格式。一個rpc-style訊息,像示例檔案中定義的,就像一個帶有零個或多個引數的函式呼叫。一個document-style訊息則更平面化且只需要少量的巢狀層次。下面的XML訊息是使用SoapClient object in MS SOAP Toolkit 2.0對同一個WSDL檔案解析後傳送和接收的結果。

        從客戶端發起一個函式呼叫“foo(5131953)”:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
 <SOAP-ENV:Body>
	<m:foo xmlns:m="http://tempuri.org/message/">
	 <arg>5131953</arg> 
	</m:foo>
 </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

        從伺服器端接到響應:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body> 
	<SOAPSDK1:fooResponse xmlns:SOAPSDK1="http://tempuri.org/message/">
		<result>5131953</result>
	</SOAPSDK1:fooResponse>
</SOAP-ENV:Body> 
</SOAP-ENV:Envelope>

        函式呼叫的訊息及其返回的訊息都是有效的XML。一個SOAP訊息包括一個<Envelope>元素,該元素包括可選的<Header>元素及最少一個<Body>元素。傳送和接收訊息在<Envelope>元素都有單個的<Body>元素。rpc功能呼叫訊息體有一個“foo”操作名,同時返回訊息體中包括了“fooResponse”元素。foo元素只有一個子元素<arg>,它代表單個引數,在示例WSDL檔案中描述。同樣fooResponse元素也有一個<result>子元素。

XML Schema在WSDL型別和訊息段

        WSDL的資料型別是基於“XML Schema:Datatypes”(XSD)也是W3C所推薦的。XSD文件有三個不同的版本(1999, 2000/10, and 2001),將其申明在<definitions>元素的一個nameSpace屬性中,指定在特殊WSDL檔案中所使用的版本。

        xmlns:xsd="http://www.w3.org/2001/XMLSchema"

Prefix Equivalent Namespace Description
soapenc http://schemas.xmlsoap.org/soap/encoding SOAP 1.1 enc
wsdl http://schemas.xmlsoap.org/wsdl/soap WSDL 1.1
xsd http://www.w3.org/2001/XMLSchema XML Schema

        XSD定義了兩類內建型別:基本和繼承,具體的參見:http://www.w3.org/TR/2001/PR-xmlschema-2-20010330

複雜型別

        XML Schema允許定義複雜型別,在C語言中則用struct來表示。例如,定義下面C struct:

typedef struct { 
	string firstName; 
	string lastName; 
	long ageInYears; 
	float weightInLbs; 
	float heightInInches;
} PERSON;

        使用XML Schema來表示:
<xsd:complexType name="PERSON"> 
	<xsd:sequence>
		<xsd:element name="firstName" type="xsd:string"/>
		<xsd:element name="lastName" type="xsd:string"/> 
		<xsd:element name="ageInYears" type="xsd:int"/> 
		<xsd:element name="weightInLbs" type="xsd:float"/> 
		<xsd:element name="heightInInches" type="xsd:float"/>
	</xsd:sequence> 
</xsd:complexType>

        但是<complexType>能夠表達C struct所不能表達的功能。除了<sequence>子元素還允許其它的子元素。可以使用<all>子元素來代替<sequence>:
<xsd:complexType name="PERSON"> 
	<xsd:all>
		<xsd:element name="firstName" type="xsd:string"/>
		<xsd:element name="lastName" type="xsd:string"/> 
		<xsd:element name="ageInYears" type="xsd:int"/> 
		<xsd:element name="weightInLbs" type="xsd:float"/> 
		<xsd:element name="heightInInches" type="xsd:float"/>
	</xsd:all> 
</xsd:complexType>

        當<all>子元素出現時,表示其內部的子元素可以以任意的順序出現且每個子元素都是可選的。這就不太像C struct了。

<portType>和<operation>元素

        一個portType定義了若干個operation。在portType中的operation元素定義了該portType中所有方法呼叫的語法。每一個operation元素定義了方法名,引數(使用<message>元素)以及每個引數的型別(<message>中定義的<part>元素)。

        一個WSDL文件中可以有多個<portType>元素。每組<portType>包含了一組相關的操作。

        在<operation>元素中,只能出現一個<input>,一個<output>,一個<fault>元素,每個元素都有name和message屬性。

        <input>,<output>,<fault>三個元素的name屬性有何作用呢?它的作用是用來對相同操作名進行區分(過載)。

<binding>和<operation>元素

        Binding段是用來對傳輸中的協議,序列化和編碼進行全面的定義。因此,Types,Message和Port Type段用來處理抽像的資料內容,Binding段則用來定義傳輸過程中物理細節。

        將binding規範從資料及訊息中分離表示服務提供者們如果使用相同的業務型別可以將其標準化到一組操作中(portType)。每一個提供者可以根據自己的要求對binding進行定製。這就有助於將抽像的定義(types, message, portType)從WSDL文件中分離出並定義到獨立的文件中,所有的業務規則相同的服務提供者使用相同的抽像定義,而對binding進行定製。例如:銀行可以定義一組標準的銀行操作並定義到一個抽像的WSDL文件中,而各個銀行可以對使用協議,序列化和編碼進行定製。

        從示例中提取的binding段:

<binding name="SimpleBinding" type="wsdlns:SimplePortType">
 <stk:binding preferredEncoding="UTF-8" />
 <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> 
 <operation name="foo">
	<soap:operation soapAction="http://tempuri.org/action/foo1"/> 
	<input name="foo1">
	 <soap:body use="encoded" namespace="http://tempuri.org/message/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
	</input>
 </operation>
 <operation name="foo">
	<soap:operation soapAction="http://tempuri.org/action/foo2"/> 
	<input name="foo2">
	 <soap:body use="encoded" namespace="http://tempuri.org/message/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
	</input>
 </operation> 
</binding>

        <binding>元素有一個name屬性(示例中值為“SimpleBinding”),定義這個name是為了在Services段的<port>元素中對其進行引用。type屬性則是對<portType>元素的引用。第二行是MSTK2的擴充套件元素,<stk:binding>,指定了優先使用的編碼型別為UTF-8。

        <soap:binding>元素指定了訊息格式(rpc)和transport方式。transport屬性引用一個namespace指定使用HTTP SOAP協議。

        有兩個<operation>元素具有相同的名字“foo”,通過<input>元素的name屬性進行區分,分別為“foo1”和“foo2”。在<operation>元素中的<soap:operation>元素都包括“soapAction”屬性,其值為一個URI。這個URI是由SOAP規範進行指定並使用在SOAP訊息中。SOAP訊息中帶有SOAPAction訊息頭將<soap:operation>元素中的URI作為其值。soapAction屬性只有在HTTP binding中才需要。該屬性的用法在寫該文件時並不十分明確。建議的用法是伺服器可以通過這個屬性對訊息進行路由而不需要對所有的訊息進行解析。<soap:operation>還可以有style屬性,該屬性可以對<soap:binding>中的style屬性進行過載。

        <operation>元素可以包含<input>,<output>和<fault>元素,這些元素與portTypes段中的相關元素對應。上面的例子中只有<input>元素。這三個元素中都有一個可選的name屬性,在本例中,用來對相同名稱的操作進行區分。在示例的<input>元素中是<soap:body>元素,該元素指定了SOAP訊息體的內容。這個元素有以下三個屬性:

                Use:這個屬性指定了資料是否進行了編碼或是字面的意思。字面的意思為SOAP訊息體中的資料格式與抽像定義(Types, messages, portTypes段)完全相同。編碼表示使用“encodingStyle”屬性值決定了編碼。

                Namespace:每個SOAP訊息體都可以有其自己的名稱空間來避免名字衝突。在這個屬性中指定的URI會完全的使用到返回訊息中。

                EncodingStyle:為SOAP編碼,該屬性的URI值為"http://schemas.xmlsoap.org/soap/encoding/"

Document型別的binding

        上一節中,<soap:binding>元素中的style屬性指定的值為“rpc”,當該屬性指定為document時則會改變傳輸中的資料序列,使用文件傳輸來代替函式簽名。如果使用這種binding方式,則<message>元素中定義了文件格式而非函式簽名。作為例子,考慮下面的WSDL片段:

<definitions xmlns:stns="(SchemaTNS)" xmlns:wtns="(WsdlTNS)" targetNamespace="(WsdlTNS)">
<schema targetNamespace="(SchemaTNS)" elementFormDefault="qualified">
	<element name="SimpleElement" type="xsd:int"/> 
	<element name="CompositElement" type="stns:CompositeType"/>
	<complexType name="CompositeType">
		<all> 
			<element name='a' type="xsd:int"/> 
			<element name='b' type="xsd:string"/>
		</all> 
	</complexType>
</schema>
<message...> 
	<part name='p1' type="stns:CompositeType"/>
	<part name='p2' type="xsd:int"/> 
	<part name='p3' element="stns:SimpleElement"/> 
	<part name='p4' element="stns:CompositeElement"/>
</message>
...
</definitions>

        schema有兩個元素:SimpleElement和CompositElement,後一個型別為CompositeType。唯一的<message>元素定義了四個part:p1,型別為CompositeType;p2,型別為int;p3為SimpleElement以及p4為CompositeElement。下面展示了對由style/use確定的四種binding方式的傳輸格式:

rpc/literal

<operation name="method1" style="rpc" ...> 
	<input> 
		<soap:body parts="p1 p2 p3 p4" use="literal" namespace="(MessageNS)"/> 
	</input> 
</operation>

SOAP訊息中的格式:
<soapenv:body... xmlns:mns="(MessageNS)" xmlns:stns="(SchemaTNS)">
	<mns:method1> 
		<mns:p1>
			<stns:a>123</stns:a> 
			<stns:b>hello</stns:b> 
		</mns:p1> 
		<mns:p2>123</mns:p2> 
		<mns:p3>
			<stns:SimpleElement>123</stns:SimpleElement> 
		</mns:p3> 
		<mns:p4> 
			<stns:CompositeElement> 
				<stns:a>123</stns:a> 
				<stns:b>hello</stns:b> 
			</stns:CompositeElement> 
		</mns:p4>
	</mns:method1> 
</soapenv:body>

rpc/encoded

<operation name="method1" style="rpc" ...> 
	<input> 
		<soap:body parts="p1 p2" use="encoded" encoding="http://schemas.xmlsoap.org/soap/encoding/" namespace="(MessageNS)"/> 
	</input> 
</operation>

SOAP訊息中的格式:
<soapenv:body... xmlns:mns="(MessageNS)"> 
	<mns:method1> 
		<p1 HREF="#1" TARGET="_self"/> 
		<p2>123</p2>
	</mns:method1> 
	<mns:CompositeType id="#1"> 
		<a>123</a> 
		<b>hello</b> 
	</mns:CompositeType> 
</soapenv:body>

document/literal/type

<operation name="method1" style="document" ...> 
	<input> 
		<soap:body parts="p1" use="literal"> 
	</input> 
</operation>

SOAP訊息中的格式:
<soapenv:body... xmlns:stns="(SchemaTNS)"> 
	<stns:a>123</stns:a> 
	<stns:b>hello</stns:b> 
</soapenv:body>

document/literal/element

<operation name="method1" style="document" ...> 
	<input> 
		<soap:body parts="p3 p4" use="literal"> 
	</input> 
</operation>

SOAP訊息中的格式:
<soapenv:body... xmlns:stns="(SchemaTNS)"> 
	<stns:SimpleElement>123</stns:SimpleElement> 
	<stns:CompositeElement> 
		<stns:a>123</stns:a> 
		<stns:b>hello</stns:b> 
	</stns:CompositeElement> 
</soapenv:body>

document/encoded

<operation name="method1" style="document" ...> 
	<input> 
		<soap:body parts="p1 p2" use="encoded" encoding="http://schemas.xmlsoap.org/soap/encoding/" namespace="(MessageNS)"/> 
	</input> 
</operation>

SOAP訊息中的格式:
<soapenv:body... xmlns:mns="(MessageNS)"> 
	<mns:CompositeType> 
		<a>123</a> 
		<b>hello</b>
	</mns:CompositeType> 
	<soapenc:int>123</soapenc:int> 
</soapenv:body>

<service>和<port>元素

        一個service有一組<port>元素。每個<port>元素與binding通常有一對一的對應關係。如果多個<port>元素與同一個<binding>相聯絡,則需要指定可選的location。

<service name="FOOService"> 
	<port name="fooSamplePort" binding="fooSampleBinding">
		<soap:address location="http://carlos:8080/fooService/foo.asp"/>
	</port> 
</service>

相關推薦

WSDL——Web Service Description Language

讓我們來看一個示例WSDL檔案的結構及工作原理。請注意這只是一個十分簡單的WSDL文件例項。我們的目的只是簡單展示下最顯著的特徵,後面的章節有對其詳細的討論。 <?xml version="1.0" encoding="UTF-8" ?> <defin

網路程式設計(二)SOAP, WSDL, Web Service

上篇文章講到了,使用網上一個工具WSDL2ObjC.app來把已有的 wsdl轉化為ios可使用的程式碼, 然後通過這部分程式碼進行soap的請求與獲取響應。 但是上面這種方式的劣勢也不言自明, 所以下面將用最原始的方式來做同樣的事情。 這裡首先需要感謝的提供這個網站供使用

Web Service平臺有三種元素構成:SOAP、WSDL、UDDI。區別和聯絡

Web Service平臺有三種元素構成:SOAP、WSDL、UDDI。一個消費者可以在UDDI登錄檔查詢服務,取得服務的WSDL描述,然後通過SOAP來呼叫服務。SOAP、WSDL、UDDI的區別如下:1. SOAP(Simple Object Access Protocol,簡單物件訪問協議)① SOAP

web service中對wsdl文件的解釋

Web Service上機作業 一.實驗目的 通過web Service 實現對qq號碼是否登入查詢 Y = 線上;N = 離線;E = QQ號碼錯誤;A = 商業使用者驗證失敗;V = 免費使用者超過數量 二.執行截圖: 將實現函式包裝 分別對號碼2773662048與號碼

web service介面 wsdl和asmx有什麼區別

原文地址:http://blog.csdn.net/ckpckp/article/details/71215527 沒有區別,只是字尾名的區別。 Web Service也叫XML Web Service WebService是一種可以接收從Internet或者Intranet上的其它系統中傳

根據wsdl檔案生成web service介面服務

           根據WSDL搭建webService介面測試樁 1、  環境:eclipse3.3  tomate5.0 jdk1.6 2、  建立web工程,並將wsd拷貝到工程中   3、  右擊wsdl檔案=》New=>other=>WebS

WSDLWeb Service中的意義和作用

1.WSDL a)原理:從XML-RPC和SOAP的使用我們可以看到,請求訊息都是根據服務提供方的服務介面來生成一個HTTP請求,在請求當中封裝所要呼叫的方法,以及方法呼叫時的引數。 客戶端服務呼叫程式碼要完成的任務,也就是使用實現所提供的介面,來宣告呼叫方所需要的方

Web Service描述語言 WSDL 詳解

為什麼使用WSDL?  WSDL文件結構  WSDL檔案示例  Namespaces  SOAP訊息  XML schema運用於WSDL的型別和訊息中  XML schema運用之complex型別  XML schema運用之陣列  <portType>和<operation>元素  <bind

C# Web Service 根據WSDL檔案和地址新增web引用

1.需求:客戶不提供檢視,改用web service 取資料。 2.分析:客戶提供了介面地址:http://172.16.90.48:8042/WebWXSY.asmx 由於研發不在現場研發,所以無法訪問該地址。 於是問客戶要了wsdl檔案,如何獲取到wsdl檔案: 客戶那邊在瀏覽器裡開啟

Dubbo分散式遠端服務呼叫框架(告別Web Service模式中的WSdl,以服務者與消費者的方式在dubbo上註冊

1. Dubbo是什麼? Dubbo是一個分散式服務框架,致力於提供高效能和透明化的RPC遠端服務呼叫方案,以及SOA服務治理方案。簡單的說,dubbo就是個服務框架,如果沒有分散式的需求,其實是不需要用的,只有在分散式的時候,才有dubbo這樣的分散式服務框架的需求,

Web Service筆記(三):wsdl 與 soap協議詳解

一、WSDL語言:(web service definition language - web service定義語言) (一)簡介: 2、wsdl 文件描述了 ws 主要的3個方面: 1)WHATA:該 ws 包含”什麼“操作,即有幾個方法。 2)HOW:該 ws

web service—底層呼叫本質+WSDL文件解析

      前面兩篇部落格已經實現了兩個小例子,大致瞭解了整個流程。那麼這裡講講webservice底層呼叫的本質和wsdl文件具體的含義。 一、底層呼叫的本質     說白了就是xml文件的生成、傳

Java如何通過WSDL檔案來呼叫這些web service

"); } catch (MalformedURLException mue) { return mue.getMessage(); } // This is the main SOAP object Call soapCall = new Call(); // Use SOAP encoding soapC

根據已有的wsdl,開發web service的服務端和客戶端

折騰了好長時間,今天終於把這次web service對接的需求完全開發完了,在此總結一下 spring的版本是3.0.6,cxf的版本是2.0.13,jboss版本是jboss4.2.3 GA,jdk6。此外客戶端和服務端的wsdl檔案,都是客戶提供好現成的,我們只能照著開發

什麽是Web ServiceWeb服務)?

left 解決方案 暴露 它的 標準 編程 面向服務 好的 什麽是 從表面上看,Web Service就是一個應用程序,它向外界暴露出一個能夠通過Web進行調用的API。例如可以創建一個提供天氣預報的Web Service,那麽無論你用哪種編程語言開發的應用都可以通過調用它

JAVA開發Web Service幾種框架介紹

需求 驚人的 總線 cast pri web服務 希望 uil blank 在講Web Service開發服務時,需要介紹一個目前開發Web Service的幾個框架,分別為Axis,axis2,Xfire,CXF以及JWS(也就是前面所述的JAX-WS,這是Java

Web Service

存在 san http 保持 log 解決 reference 加載 刪除 去年新入職時,接觸過一點 WCF,也知道 Web Service 的存在,目前剛好在做一個 Web Service 相關的東西,借此機會,學習一下 Web Service。 概念初識

Web Service學習(一)

內存 res 特性 response 屬性表 高性能 fas str ima 1、WebMethod特性包含哪些屬性,都有什麽用? 1、BufferResponse屬性 該屬性表明是否啟用對Web Service方法響應的緩沖。當設置為true時,Web Service

CXF實戰之在Tomcat中公布Web Service(二)

res url var pre attribute number tag 文件 輸入 服務接口及實現類請參考WebService框架CXF實戰(一) 創建Maven Web項目,在pom.xml中加入CXF和Spring Web的引用,因為CXFSer

[Teamcenter 2007 開發實戰] 調用web service

clas cpm zsh cal dcl dip lba jta ppk 前言在TC的服務端開發中, 能夠使用gsoap 來調用web service.怎樣使用 gsoap , 參考gsoap 實現 C/C++ 調用web service 接下來介紹怎樣