日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

WSDL文件生成WEB service server端C#程序

發(fā)布時間:2023/12/13 C# 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WSDL文件生成WEB service server端C#程序 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一般一個已經(jīng)實現(xiàn)功能的WEB Server會發(fā)布自己的WSDL文件,供客戶端生成代理類。

?

但有時是先有的server與client交互的接口定義(WSDL)文件,然后由server和client端分別寫程序,一個提供web服務(wù),一個使用web服務(wù)。

以下介紹如何由已有的WSDL文件在VS2005中生成server端代碼。

1)使用VS2005提供的工具wsdl.exe由WSDL文件生成cs文件:

使用wsdl.exe的/serverInterface選項(或縮寫的 /si)指定輸入的wsdl文件(注意,如果要轉(zhuǎn)換的wsdl文件中import了其他wsdl文件,則所有文件都應(yīng)列出,包括使用到的xsd文件也應(yīng)列 出)。輸出將是 一個代碼文件(默認是C#的,如果需要別的語言,參考MSDN中wsdl.exe的使用說明),其中包含每個 wsdl 綁定的接口。

示例:假設(shè)ServerInterfaceSample.wsdl文件中import了importedSample.wsdl,并使用Service.xsd作為schema文件;

wsdl.exe /si ServerInterfaceSample.wsdl importedSample.wsdl Service.xsd

生成代碼如下:

//------------------------------------------------------------------------------
// <auto-generated>
//???? This code was generated by a tool.
//???? Runtime Version:2.0.50727.42
//
//???? Changes to this file may cause incorrect behavior and will be lost if
//???? the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Serialization;

//
// This source code was auto-generated by wsdl, Version=2.0.50727.42.
//


/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Web.Services.WebServiceBindingAttribute(Name="org.csapi.cs.IpChargingManagerSOAPBinding", Namespace="http://www.csapi.org/cs/wsdl")]
public interface IOrgcsapicsIpChargingManagerSOAPBinding {
???
??? /// <remarks/>
??? [System.Web.Services.WebMethodAttribute()]
??? [System.Web.Services.Protocols.SoapDocumentMethodAttribute("", RequestElementName="org.csapi.cs.IpChargingManager.createChargingSession", RequestNamespace="http://www.csapi.org/cs/schema", ResponseElementName="org.csapi.cs.IpChargingManager.createChargingSessionResult", ResponseNamespace="http://www.csapi.org/cs/schema", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
??? [return: System.Xml.Serialization.XmlElementAttribute("return", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
??? orgcsapicsTpChargingSessionID createChargingSession([System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] EndpointReferenceType appChargingSession, [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] string sessionDescription, [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] orgcsapicsTpMerchantAccountID merchantAccount, [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] orgcsapiTpAddress user, [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] orgcsapicsTpCorrelationID correlationID);
???
??? /// <remarks/>
??? [System.Web.Services.WebMethodAttribute()]
??? [System.Web.Services.Protocols.SoapDocumentMethodAttribute("", RequestElementName="org.csapi.cs.IpChargingManager.createSplitChargingSession", RequestNamespace="http://www.csapi.org/cs/schema", ResponseElementName="org.csapi.cs.IpChargingManager.createSplitChargingSessionResult", ResponseNamespace="http://www.csapi.org/cs/schema", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
??? [return: System.Xml.Serialization.XmlElementAttribute("return", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
??? orgcsapicsTpChargingSessionID createSplitChargingSession([System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] EndpointReferenceType appChargingSession, [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] string sessionDescription, [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] orgcsapicsTpMerchantAccountID merchantAccount, [System.Xml.Serialization.XmlArrayAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] [System.Xml.Serialization.XmlArrayItemAttribute("item", Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=false)] orgcsapiTpAddress[] users, [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] orgcsapicsTpCorrelationID correlationID);
???
??? /// <remarks/>
??? [System.Web.Services.WebMethodAttribute()]
??? [System.Web.Services.Protocols.SoapDocumentMethodAttribute("", RequestElementName="org.csapi.IpService.setCallback", RequestNamespace="http://www.csapi.org/osa/schema", ResponseElementName="org.csapi.IpService.setCallbackResult", ResponseNamespace="http://www.csapi.org/osa/schema", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
??? void setCallback([System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] EndpointReferenceType appInterface);
???
??? /// <remarks/>
??? [System.Web.Services.WebMethodAttribute()]
??? [System.Web.Services.Protocols.SoapDocumentMethodAttribute("", RequestElementName="org.csapi.IpService.setCallbackWithSessionID", RequestNamespace="http://www.csapi.org/osa/schema", ResponseElementName="org.csapi.IpService.setCallbackWithSessionIDResult", ResponseNamespace="http://www.csapi.org/osa/schema", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
??? void setCallbackWithSessionID([System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] EndpointReferenceType appInterface, [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] int sessionID);
}

代碼中有一個接口類,并給出了接口函數(shù)聲明.

此功能的優(yōu)點是將實現(xiàn)代碼和協(xié)定代碼(如接口所定義的那樣)分開。 如果更改 wsdl,然后重新生成接口,則不會丟失任何實現(xiàn)代碼。 若要遵循建議的設(shè)計指南,則不應(yīng)將任何代碼放置在更改 wsdl 協(xié)定的實現(xiàn)中。 同樣,不應(yīng)使用影響運行時行為的代碼來更改接口。 協(xié)定和實現(xiàn)的詳細信息應(yīng)該分開。

2) 在VS IDE中新建一個web service工程,加入新生成的**Interface.cs文件.
將自動生成的Service類改為從加入的Interface接口類派生,并實現(xiàn)所有的接口函數(shù).(注意名空間一致)

[WebService(Namespace = "http://www.csapi.org/cs/wsdl")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : IOrgcsapicsIpChargingManagerSOAPBinding
{
??? public orgcsapicsTpChargingSessionID createChargingSession(EndpointReferenceType appChargingSession, string sessionDescription, orgcsapicsTpMerchantAccountID merchantAccount, orgcsapiTpAddress user,orgcsapicsTpCorrelationID correlationID)
??? {
??????? return new orgcsapicsTpChargingSessionID();
??? }

??? public orgcsapicsTpChargingSessionID createSplitChargingSession(EndpointReferenceType appChargingSession, string sessionDescription, orgcsapicsTpMerchantAccountID merchantAccount, orgcsapiTpAddress[] users, orgcsapicsTpCorrelationID correlationID)
??? {
??????? return new orgcsapicsTpChargingSessionID();
??? }

??? public void setCallback(EndpointReferenceType appInterface)
??? {

??? }

??? public void setCallbackWithSessionID(EndpointReferenceType appInterface, int sessionID)
??? {

??? }
???
}

轉(zhuǎn)載于:https://www.cnblogs.com/wenanry/archive/2011/12/31/2308162.html

總結(jié)

以上是生活随笔為你收集整理的WSDL文件生成WEB service server端C#程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。