标签:
using System.ServiceModel; using System.Runtime.Serialization; namespace Service { [ServiceContract] public interface IUserInfo { [OperationContract] User[] GetInfo(); } [DataContract(Name="DCUser",Namespace="http://wangweimutou.DCUser")] public class User { [DataMember(Order=1)] public int ID { get; set; } [DataMember(Name="姓名",Order=2)] public string Name { get; set; } [DataMember] private int Age; private string Address; [DataMember] public string Email { get; set; } [IgnoreDataMember] public string Phone { get; set; } private string _job; [DataMember] public string Job { get { return _job; } set { _job = value; } } public string Nationality { get; set; } } }
UserInfo.cs的代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Service { public class UserInfo:IUserInfo { public User[] GetInfo() { List<User> listData = new List<User>(); return listData.ToArray(); } } }
2. Host:控制台应用程序,服务承载程序。添加对Service程序集的引用,Program.cs的代码如下:
using System; using System.ServiceModel; using Service; namespace Host { class Program { static void Main(string[] args) { using (ServiceHost host = new ServiceHost(typeof(UserInfo))) { host.Opened += delegate { Console.WriteLine("服务已经启动,按任意键终止!"); }; host.Open(); Console.Read(); } } } }
App.config的代码如下:
<?xml version="1.0"?> <configuration> <system.serviceModel> <services> <service name="Service.UserInfo" behaviorConfiguration="mexBehavior"> <host> <baseAddresses> <add baseAddress="http://localhost:1234/UserInfo/"/> </baseAddresses> </host> <endpoint address="" binding="wsHttpBinding" contract="Service.IUserInfo" /> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> </service> </services> <behaviors> <serviceBehaviors> <behavior name="mexBehavior"> <serviceMetadata httpGetEnabled="true"/> <serviceDebug includeExceptionDetailInFaults="true"/> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> </configuration>
3. Client:控制台引用程序,启动Host程序寄宿服务,在命令行中输入以下命令,将生成的UserInfoClient.cs和App.config文件拷贝到Client程序目录下。
UserInfoClient.cs代码如下:
//------------------------------------------------------------------------------ // <auto-generated> // 此代码由工具生成。 // 运行时版本:2.0.50727.5485 // // 对此文件的更改可能会导致不正确的行为,并且如果 // 重新生成代码,这些更改将会丢失。 // </auto-generated> //------------------------------------------------------------------------------ [assembly: System.Runtime.Serialization.ContractNamespaceAttribute("http://wangweimutou.DCUser", ClrNamespace="wangweimutou.dcuser")] namespace wangweimutou.dcuser { using System.Runtime.Serialization; [System.Diagnostics.DebuggerStepThroughAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")] [System.Runtime.Serialization.DataContractAttribute(Name="DCUser", Namespace="http://wangweimutou.DCUser")] public partial class DCUser : object, System.Runtime.Serialization.IExtensibleDataObject { private System.Runtime.Serialization.ExtensionDataObject extensionDataField; private int AgeField; private string EmailField; private string JobField; private int IDField; private string 姓名Field; public System.Runtime.Serialization.ExtensionDataObject ExtensionData { get { return this.extensionDataField; } set { this.extensionDataField = value; } } [System.Runtime.Serialization.DataMemberAttribute()] public int Age { get { return this.AgeField; } set { this.AgeField = value; } } [System.Runtime.Serialization.DataMemberAttribute()] public string Email { get { return this.EmailField; } set { this.EmailField = value; } } [System.Runtime.Serialization.DataMemberAttribute()] public string Job { get { return this.JobField; } set { this.JobField = value; } } [System.Runtime.Serialization.DataMemberAttribute(Order=3)] public int ID { get { return this.IDField; } set { this.IDField = value; } } [System.Runtime.Serialization.DataMemberAttribute(Order=4)] public string 姓名 { get { return this.姓名Field; } set { this.姓名Field = value; } } } } [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")] [System.ServiceModel.ServiceContractAttribute(ConfigurationName="IUserInfo")] public interface IUserInfo { [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IUserInfo/GetInfo", ReplyAction="http://tempuri.org/IUserInfo/GetInfoResponse")] wangweimutou.dcuser.DCUser[] GetInfo(); } [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")] public interface IUserInfoChannel : IUserInfo, System.ServiceModel.IClientChannel { } [System.Diagnostics.DebuggerStepThroughAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")] public partial class UserInfoClient : System.ServiceModel.ClientBase<IUserInfo>, IUserInfo { public UserInfoClient() { } public UserInfoClient(string endpointConfigurationName) : base(endpointConfigurationName) { } public UserInfoClient(string endpointConfigurationName, string remoteAddress) : base(endpointConfigurationName, remoteAddress) { } public UserInfoClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : base(endpointConfigurationName, remoteAddress) { } public UserInfoClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : base(binding, remoteAddress) { } public wangweimutou.dcuser.DCUser[] GetInfo() { return base.Channel.GetInfo(); } }
[assembly: System.Runtime.Serialization.ContractNamespaceAttribute("http://wangweimutou.DCUser", ClrNamespace="wangweimutou.dcuser")] namespace wangweimutou.dcuser { using System.Runtime.Serialization; [System.Diagnostics.DebuggerStepThroughAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")] [System.Runtime.Serialization.DataContractAttribute(Name="DCUser", Namespace="http://wangweimutou.DCUser")] public partial class DCUser : object, System.Runtime.Serialization.IExtensibleDataObject { private System.Runtime.Serialization.ExtensionDataObject extensionDataField; private int AgeField; private string EmailField; private string JobField; private int IDField; private string 姓名Field; public System.Runtime.Serialization.ExtensionDataObject ExtensionData { get{ return this.extensionDataField;} set{this.extensionDataField = value;} } [System.Runtime.Serialization.DataMemberAttribute()] public int Age { get{return this.AgeField;} set{this.AgeField = value;} } [System.Runtime.Serialization.DataMemberAttribute()] public string Email { get{return this.EmailField;} set{this.EmailField = value;} } [System.Runtime.Serialization.DataMemberAttribute()] public string Job { get{return this.JobField;} set{this.JobField = value;} } [System.Runtime.Serialization.DataMemberAttribute(Order=3)] public int ID { get{return this.IDField;} set{this.IDField = value;} } [System.Runtime.Serialization.DataMemberAttribute(Order=4)] public string 姓名 { get{return this.姓名Field;} set{this.姓名Field = value;} } } }
标签:
原文地址:http://www.cnblogs.com/wangweimutou/p/4437191.html