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

来源:互联网 发布:淘宝卖水果需要许可证 编辑:程序博客网 时间:2024/05/10 00:58

http://www.cnblogs.com/wenanry/archive/2012/01/18/2325281.html

 

一般一个已经实现功能的WEB Server会发布自己的WSDL文件,供客户端生成代理类。

 但有时是先有的server与client交互的接口定义(WSDL)文件,然后由server和client端分别写程序,一个提供web服务,一个使用web服务。

以下介绍如何由已有的WSDL文件在VS2008中生成server端代码。

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

使用wsdl.exe的/serverInterface选项(或缩写的  /si)指定输入的wsdl文件(注意,如果要转换的wsdl文件中import了其他wsdl文件,则所有文件都应列出,包括使用到的xsd文件也应列 出)。输出将是 一个代码文件(默认是C#的,如果需要别的语言,参考MSDN中wsdl.exe的使用说明),其中包含每个 wsdl 绑定的接口。

示例:假设ServerInterfaceSample.wsdl文件中import了importedSample.wsdl,并使用Service.xsd作为schema文件;

wsdl.exe /si ctcc_common_faults_2_0.wsdl ctcc_common_types_2_1.xsd ctcc_mm_notification_interface_2_2.wsdl ctcc_mm_notification_service_2_2.wsdl ctcc_mm_types_2_2.xsd
//------------------------------------------------------------------------------// <auto-generated>//     此代码由工具生成。//     运行时版本:4.0.30319.235////     对此文件的更改可能会导致不正确的行为,并且如果//     重新生成代码,这些更改将会丢失。// </auto-generated>//------------------------------------------------------------------------------using System;using System.ComponentModel;using System.Diagnostics;using System.Web.Services;using System.Web.Services.Protocols;using System.Xml.Serialization;// // 此源代码由 wsdl 自动生成, Version=4.0.30319.1。// /// <remarks/>[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.0.30319.1")][System.Web.Services.WebServiceBindingAttribute(Name="MessageNotificationBinding", Namespace="http://www.chinatelecom.com.cn/wsdl/ctcc/multimedia_messaging/notification/v2_2/s" +    "ervice")]public interface IMessageNotificationBinding {            NotifySOAPHeader NotifySOAPHeaderValue {        get;        set;    }        /// <remarks/>    [System.Web.Services.Protocols.SoapHeaderAttribute("NotifySOAPHeaderValue")]    [System.Web.Services.WebMethodAttribute()]    [System.Web.Services.Protocols.SoapDocumentMethodAttribute("", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Bare)]    [return: System.Xml.Serialization.XmlElementAttribute("notifyMessageReceptionResponse", Namespace="http://www.chinatelecom.com.cn/schema/ctcc/multimedia_messaging/notification/v2_2" +        "/local")]    notifyMessageReceptionResponse notifyMessageReception([System.Xml.Serialization.XmlElementAttribute("notifyMessageReception", Namespace="http://www.chinatelecom.com.cn/schema/ctcc/multimedia_messaging/notification/v2_2" +        "/local")] notifyMessageReception notifyMessageReception1);        /// <remarks/>    [System.Web.Services.WebMethodAttribute()]    [System.Web.Services.Protocols.SoapDocumentMethodAttribute("", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Bare)]    [return: System.Xml.Serialization.XmlElementAttribute("notifyMessageDeliveryReceiptResponse", Namespace="http://www.chinatelecom.com.cn/schema/ctcc/multimedia_messaging/notification/v2_2" +        "/local")]    notifyMessageDeliveryReceiptResponse notifyMessageDeliveryReceipt([System.Xml.Serialization.XmlElementAttribute("notifyMessageDeliveryReceipt", Namespace="http://www.chinatelecom.com.cn/schema/ctcc/multimedia_messaging/notification/v2_2" +        "/local")] notifyMessageDeliveryReceipt notifyMessageDeliveryReceipt1);}/// <remarks/>[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.0.30319.1")][System.SerializableAttribute()][System.Diagnostics.DebuggerStepThroughAttribute()][System.ComponentModel.DesignerCategoryAttribute("code")][System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.chinatelecom.com.cn/schema/ctcc/common/v2_1")][System.Xml.Serialization.XmlRootAttribute(Namespace="http://www.chinatelecom.com.cn/schema/ctcc/common/v2_1", IsNullable=false)]public partial class NotifySOAPHeader : System.Web.Services.Protocols.SoapHeader {        private string spRevIdField;        private string spRevpasswordField;        private string spIdField;        private string sANField;        private string transactionIdField;        private string linkIdField;        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public string spRevId {        get {            return this.spRevIdField;        }        set {            this.spRevIdField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public string spRevpassword {        get {            return this.spRevpasswordField;        }        set {            this.spRevpasswordField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public string spId {        get {            return this.spIdField;        }        set {            this.spIdField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public string SAN {        get {            return this.sANField;        }        set {            this.sANField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public string transactionId {        get {            return this.transactionIdField;        }        set {            this.transactionIdField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public string linkId {        get {            return this.linkIdField;        }        set {            this.linkIdField = value;        }    }}/// <remarks/>[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.0.30319.1")][System.SerializableAttribute()][System.Diagnostics.DebuggerStepThroughAttribute()][System.ComponentModel.DesignerCategoryAttribute("code")][System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.chinatelecom.com.cn/schema/ctcc/multimedia_messaging/notification/v2_2" +    "/local")]public partial class notifyMessageDeliveryReceiptResponse {}/// <remarks/>[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.0.30319.1")][System.SerializableAttribute()][System.Diagnostics.DebuggerStepThroughAttribute()][System.ComponentModel.DesignerCategoryAttribute("code")][System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.chinatelecom.com.cn/schema/ctcc/multimedia_messaging/v2_2")]public partial class DeliveryInformation {        private string addressField;        private DeliveryStatus deliveryStatusField;        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, DataType="anyURI")]    public string address {        get {            return this.addressField;        }        set {            this.addressField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public DeliveryStatus deliveryStatus {        get {            return this.deliveryStatusField;        }        set {            this.deliveryStatusField = value;        }    }}/// <remarks/>[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.0.30319.1")][System.SerializableAttribute()][System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.chinatelecom.com.cn/schema/ctcc/multimedia_messaging/v2_2")]public enum DeliveryStatus {        /// <remarks/>    DeliveredToNetwork,        /// <remarks/>    DeliveryUncertain,        /// <remarks/>    DeliveryImpossible,        /// <remarks/>    MessageWaiting,        /// <remarks/>    DeliveredToTerminal,        /// <remarks/>    DeliveryNotificationNotSupported,        /// <remarks/>    AuthPriceFailed,        /// <remarks/>    DrmError,}/// <remarks/>[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.0.30319.1")][System.SerializableAttribute()][System.Diagnostics.DebuggerStepThroughAttribute()][System.ComponentModel.DesignerCategoryAttribute("code")][System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.chinatelecom.com.cn/schema/ctcc/multimedia_messaging/notification/v2_2" +    "/local")]public partial class notifyMessageDeliveryReceipt {        private string correlatorField;        private DeliveryInformation deliveryStatusField;        /// <remarks/>    public string correlator {        get {            return this.correlatorField;        }        set {            this.correlatorField = value;        }    }        /// <remarks/>    public DeliveryInformation deliveryStatus {        get {            return this.deliveryStatusField;        }        set {            this.deliveryStatusField = value;        }    }}/// <remarks/>[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.0.30319.1")][System.SerializableAttribute()][System.Diagnostics.DebuggerStepThroughAttribute()][System.ComponentModel.DesignerCategoryAttribute("code")][System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.chinatelecom.com.cn/schema/ctcc/multimedia_messaging/notification/v2_2" +    "/local")]public partial class notifyMessageReceptionResponse {}/// <remarks/>[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.0.30319.1")][System.SerializableAttribute()][System.Diagnostics.DebuggerStepThroughAttribute()][System.ComponentModel.DesignerCategoryAttribute("code")][System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.chinatelecom.com.cn/schema/ctcc/multimedia_messaging/v2_2")]public partial class MessageReference {        private string messageIdentifierField;        private string messageServiceActivationNumberField;        private string senderAddressField;        private string subjectField;        private MessagePriority priorityField;        private string messageField;        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public string messageIdentifier {        get {            return this.messageIdentifierField;        }        set {            this.messageIdentifierField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public string messageServiceActivationNumber {        get {            return this.messageServiceActivationNumberField;        }        set {            this.messageServiceActivationNumberField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, DataType="anyURI")]    public string senderAddress {        get {            return this.senderAddressField;        }        set {            this.senderAddressField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public string subject {        get {            return this.subjectField;        }        set {            this.subjectField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public MessagePriority priority {        get {            return this.priorityField;        }        set {            this.priorityField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public string message {        get {            return this.messageField;        }        set {            this.messageField = value;        }    }}/// <remarks/>[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.0.30319.1")][System.SerializableAttribute()][System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.chinatelecom.com.cn/schema/ctcc/multimedia_messaging/v2_2")]public enum MessagePriority {        /// <remarks/>    Default,        /// <remarks/>    Low,        /// <remarks/>    Normal,        /// <remarks/>    High,}/// <remarks/>[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.0.30319.1")][System.SerializableAttribute()][System.Diagnostics.DebuggerStepThroughAttribute()][System.ComponentModel.DesignerCategoryAttribute("code")][System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.chinatelecom.com.cn/schema/ctcc/multimedia_messaging/notification/v2_2" +    "/local")]public partial class notifyMessageReception {        private string registrationIdentifierField;        private MessageReference messageField;        /// <remarks/>    public string registrationIdentifier {        get {            return this.registrationIdentifierField;        }        set {            this.registrationIdentifierField = value;        }    }        /// <remarks/>    public MessageReference message {        get {            return this.messageField;        }        set {            this.messageField = value;        }    }}

wsdl.exe /si ctcc_common_faults_2_0.wsdl ctcc_common_types_2_1.xsd ctcc_mm_send_interface_2_2.wsdl ctcc_mm_send_service_2_2.wsdl ctcc_mm_types_2_2.xsdwsdl.exe /si ctcc_common_faults_2_0.wsdl ctcc_common_types_2_1.xsd ctcc_mm_send_interface_2_2.wsdl ctcc_mm_send_service_2_2.wsdl ctcc_mm_types_2_2.xsd
 
//------------------------------------------------------------------------------// <auto-generated>//     此代码由工具生成。//     运行时版本:2.0.50727.3625////     对此文件的更改可能会导致不正确的行为,并且如果//     重新生成代码,这些更改将会丢失。// </auto-generated>//------------------------------------------------------------------------------using System;using System.ComponentModel;using System.Diagnostics;using System.Web.Services;using System.Web.Services.Protocols;using System.Xml.Serialization;// // 此源代码由 wsdl 自动生成, Version=2.0.50727.3038。// /// <remarks/>[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")][System.Web.Services.WebServiceBindingAttribute(Name="SendMessageBinding", Namespace="http://www.chinatelecom.com.cn/wsdl/ctcc/multimedia_messaging/send/v2_2/service")]public interface ISendMessageBinding {            RequestSOAPHeader RequestSOAPHeaderValue {        get;        set;    }        /// <remarks/>    [System.Web.Services.Protocols.SoapHeaderAttribute("RequestSOAPHeaderValue")]    [System.Web.Services.WebMethodAttribute()]    [System.Web.Services.Protocols.SoapDocumentMethodAttribute("", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Bare)]    [return: System.Xml.Serialization.XmlElementAttribute("sendMessageResponse", Namespace="http://www.chinatelecom.com.cn/schema/ctcc/multimedia_messaging/send/v2_2/local")]    sendMessageResponse sendMessage([System.Xml.Serialization.XmlElementAttribute("sendMessage", Namespace="http://www.chinatelecom.com.cn/schema/ctcc/multimedia_messaging/send/v2_2/local")] sendMessage sendMessage1);        /// <remarks/>    [System.Web.Services.Protocols.SoapHeaderAttribute("RequestSOAPHeaderValue")]    [System.Web.Services.WebMethodAttribute()]    [System.Web.Services.Protocols.SoapDocumentMethodAttribute("", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Bare)]    [return: System.Xml.Serialization.XmlArrayAttribute("getMessageDeliveryStatusResponse", Namespace="http://www.chinatelecom.com.cn/schema/ctcc/multimedia_messaging/send/v2_2/local")]    [return: System.Xml.Serialization.XmlArrayItemAttribute("result", IsNullable=false)]    DeliveryInformation[] getMessageDeliveryStatus([System.Xml.Serialization.XmlElementAttribute("getMessageDeliveryStatus", Namespace="http://www.chinatelecom.com.cn/schema/ctcc/multimedia_messaging/send/v2_2/local")] getMessageDeliveryStatus getMessageDeliveryStatus1);}/// <remarks/>[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")][System.SerializableAttribute()][System.Diagnostics.DebuggerStepThroughAttribute()][System.ComponentModel.DesignerCategoryAttribute("code")][System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.chinatelecom.com.cn/schema/ctcc/common/v2_1")][System.Xml.Serialization.XmlRootAttribute(Namespace="http://www.chinatelecom.com.cn/schema/ctcc/common/v2_1", IsNullable=false)]public partial class RequestSOAPHeader : System.Web.Services.Protocols.SoapHeader {        private string spIdField;        private string spPasswordField;        private string timeStampField;        private string productIdField;        private string sANField;        private string transactionIdField;        private EndReason transEndField;        private bool transEndFieldSpecified;        private string linkIdField;        private string oaField;        private string faField;        private bool multicastMessagingField;        private bool multicastMessagingFieldSpecified;        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public string spId {        get {            return this.spIdField;        }        set {            this.spIdField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public string spPassword {        get {            return this.spPasswordField;        }        set {            this.spPasswordField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public string timeStamp {        get {            return this.timeStampField;        }        set {            this.timeStampField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public string productId {        get {            return this.productIdField;        }        set {            this.productIdField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public string SAN {        get {            return this.sANField;        }        set {            this.sANField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public string transactionId {        get {            return this.transactionIdField;        }        set {            this.transactionIdField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public EndReason transEnd {        get {            return this.transEndField;        }        set {            this.transEndField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlIgnoreAttribute()]    public bool transEndSpecified {        get {            return this.transEndFieldSpecified;        }        set {            this.transEndFieldSpecified = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public string linkId {        get {            return this.linkIdField;        }        set {            this.linkIdField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, DataType="anyURI")]    public string OA {        get {            return this.oaField;        }        set {            this.oaField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, DataType="anyURI")]    public string FA {        get {            return this.faField;        }        set {            this.faField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public bool multicastMessaging {        get {            return this.multicastMessagingField;        }        set {            this.multicastMessagingField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlIgnoreAttribute()]    public bool multicastMessagingSpecified {        get {            return this.multicastMessagingFieldSpecified;        }        set {            this.multicastMessagingFieldSpecified = value;        }    }}/// <remarks/>[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")][System.SerializableAttribute()][System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.chinatelecom.com.cn/schema/ctcc/common/v2_1")]public enum EndReason {        /// <remarks/>    [System.Xml.Serialization.XmlEnumAttribute("0")]    Item0,        /// <remarks/>    [System.Xml.Serialization.XmlEnumAttribute("-1")]    Item1,        /// <remarks/>    [System.Xml.Serialization.XmlEnumAttribute("1")]    Item11,        /// <remarks/>    [System.Xml.Serialization.XmlEnumAttribute("2")]    Item2,}/// <remarks/>[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")][System.SerializableAttribute()][System.Diagnostics.DebuggerStepThroughAttribute()][System.ComponentModel.DesignerCategoryAttribute("code")][System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.chinatelecom.com.cn/schema/ctcc/multimedia_messaging/v2_2")]public partial class DeliveryInformation {        private string addressField;        private DeliveryStatus deliveryStatusField;        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, DataType="anyURI")]    public string address {        get {            return this.addressField;        }        set {            this.addressField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public DeliveryStatus deliveryStatus {        get {            return this.deliveryStatusField;        }        set {            this.deliveryStatusField = value;        }    }}/// <remarks/>[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")][System.SerializableAttribute()][System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.chinatelecom.com.cn/schema/ctcc/multimedia_messaging/v2_2")]public enum DeliveryStatus {        /// <remarks/>    DeliveredToNetwork,        /// <remarks/>    DeliveryUncertain,        /// <remarks/>    DeliveryImpossible,        /// <remarks/>    MessageWaiting,        /// <remarks/>    DeliveredToTerminal,        /// <remarks/>    DeliveryNotificationNotSupported,        /// <remarks/>    AuthPriceFailed,        /// <remarks/>    DrmError,}/// <remarks/>[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")][System.SerializableAttribute()][System.Diagnostics.DebuggerStepThroughAttribute()][System.ComponentModel.DesignerCategoryAttribute("code")][System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.chinatelecom.com.cn/schema/ctcc/multimedia_messaging/send/v2_2/local")]public partial class getMessageDeliveryStatus {        private string requestIdentifierField;        /// <remarks/>    public string requestIdentifier {        get {            return this.requestIdentifierField;        }        set {            this.requestIdentifierField = value;        }    }}/// <remarks/>[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")][System.SerializableAttribute()][System.Diagnostics.DebuggerStepThroughAttribute()][System.ComponentModel.DesignerCategoryAttribute("code")][System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.chinatelecom.com.cn/schema/ctcc/multimedia_messaging/send/v2_2/local")]public partial class sendMessageResponse {        private string resultField;        /// <remarks/>    public string result {        get {            return this.resultField;        }        set {            this.resultField = value;        }    }}/// <remarks/>[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")][System.SerializableAttribute()][System.Diagnostics.DebuggerStepThroughAttribute()][System.ComponentModel.DesignerCategoryAttribute("code")][System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.chinatelecom.com.cn/schema/ctcc/common/v2_1")]public partial class SimpleReference {        private string endpointField;        private string interfaceNameField;        private string correlatorField;        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, DataType="anyURI")]    public string endpoint {        get {            return this.endpointField;        }        set {            this.endpointField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public string interfaceName {        get {            return this.interfaceNameField;        }        set {            this.interfaceNameField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public string correlator {        get {            return this.correlatorField;        }        set {            this.correlatorField = value;        }    }}/// <remarks/>[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")][System.SerializableAttribute()][System.Diagnostics.DebuggerStepThroughAttribute()][System.ComponentModel.DesignerCategoryAttribute("code")][System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.chinatelecom.com.cn/schema/ctcc/common/v2_1")]public partial class ChargingInformation {        private string descriptionField;        private string currencyField;        private decimal amountField;        private bool amountFieldSpecified;        private string codeField;        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public string description {        get {            return this.descriptionField;        }        set {            this.descriptionField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public string currency {        get {            return this.currencyField;        }        set {            this.currencyField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public decimal amount {        get {            return this.amountField;        }        set {            this.amountField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlIgnoreAttribute()]    public bool amountSpecified {        get {            return this.amountFieldSpecified;        }        set {            this.amountFieldSpecified = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]    public string code {        get {            return this.codeField;        }        set {            this.codeField = value;        }    }}/// <remarks/>[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")][System.SerializableAttribute()][System.Diagnostics.DebuggerStepThroughAttribute()][System.ComponentModel.DesignerCategoryAttribute("code")][System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.chinatelecom.com.cn/schema/ctcc/multimedia_messaging/send/v2_2/local")]public partial class sendMessage {        private string[] addressesField;        private string senderAddressField;        private string subjectField;        private MessagePriority priorityField;        private bool priorityFieldSpecified;        private ChargingInformation chargingField;        private SimpleReference receiptRequestField;        /// <remarks/>    [System.Xml.Serialization.XmlElementAttribute("addresses", DataType="anyURI")]    public string[] addresses {        get {            return this.addressesField;        }        set {            this.addressesField = value;        }    }        /// <remarks/>    public string senderAddress {        get {            return this.senderAddressField;        }        set {            this.senderAddressField = value;        }    }        /// <remarks/>    public string subject {        get {            return this.subjectField;        }        set {            this.subjectField = value;        }    }        /// <remarks/>    public MessagePriority priority {        get {            return this.priorityField;        }        set {            this.priorityField = value;        }    }        /// <remarks/>    [System.Xml.Serialization.XmlIgnoreAttribute()]    public bool prioritySpecified {        get {            return this.priorityFieldSpecified;        }        set {            this.priorityFieldSpecified = value;        }    }        /// <remarks/>    public ChargingInformation charging {        get {            return this.chargingField;        }        set {            this.chargingField = value;        }    }        /// <remarks/>    public SimpleReference receiptRequest {        get {            return this.receiptRequestField;        }        set {            this.receiptRequestField = value;        }    }}/// <remarks/>[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")][System.SerializableAttribute()][System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.chinatelecom.com.cn/schema/ctcc/multimedia_messaging/v2_2")]public enum MessagePriority {        /// <remarks/>    Default,        /// <remarks/>    Low,        /// <remarks/>    Normal,        /// <remarks/>    High,}

代码中有一个接口类,并给出了接口函数声明.
 
此功能的优点是将实现代码和协定代码(如接口所定义的那样)分开。 如果更改 wsdl,然后重新生成接口,则不会丢失任何实现代码。 若要遵循建议的设计指南,则不应将任何代码放置在更改 wsdl 协定的实现中。 同样,不应使用影响运行时行为的代码来更改接口。 协定和实现的详细信息应该分开。 
 

 2) 在VS IDE中新建一个web service工程,加入新生成的**Interface.cs文件.

将自动生成的Service类改为从加入的Interface接口类派生,并实现所有的接口函数.(注意名空间一致)

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Services;/// <summary>///WebService 的摘要说明/// </summary>[WebService(Namespace = "http://tempuri.org/")][WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 // [System.Web.Script.Services.ScriptService]public class WebService : IMessageNotificationBinding{    private static log4net.ILog _log = log4net.LogManager.GetLogger("WebService");    public WebService()    {        //如果使用设计的组件,请取消注释以下行         //InitializeComponent();     }    [WebMethod]    public string notifyManagementInfo(string xml)    {        _log.Info("xml=" + xml + ",Now=" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));        return "Hello World";    }    public NotifySOAPHeader NotifySOAPHeaderValue    {        get { throw new NotImplementedException(); }        set { throw new NotImplementedException(); }    }    public notifyMessageReceptionResponse notifyMessageReception(notifyMessageReception notifyMessageReception1)    {        throw new NotImplementedException();    }    public notifyMessageDeliveryReceiptResponse notifyMessageDeliveryReceipt(notifyMessageDeliveryReceipt notifyMessageDeliveryReceipt1)    {        throw new NotImplementedException();    }}

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Services;/// <summary>///WebService2 的摘要说明/// </summary>[WebService(Namespace = "http://tempuri.org/")][WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 // [System.Web.Script.Services.ScriptService]public class WebService2 : ISendMessageBinding{    public WebService2()    {        //如果使用设计的组件,请取消注释以下行         //InitializeComponent();     }    [WebMethod]    public string HelloWorld()    {        return "Hello World";    }    public RequestSOAPHeader RequestSOAPHeaderValue    {        get { throw new NotImplementedException(); }        set { throw new NotImplementedException(); }    }    public sendMessageResponse sendMessage(sendMessage sendMessage1)    {        throw new NotImplementedException();    }    public DeliveryInformation[] getMessageDeliveryStatus(getMessageDeliveryStatus getMessageDeliveryStatus1)    {        throw new NotImplementedException();    }}

 
 
 
 
 
 
 
 
 
 
 
 

 

原创粉丝点击