wcf中创建宿主程序
2013-04-05 21:31
134 查看
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ServiceModel; using System.ServiceModel.Channels; namespace wcfservicehost { class Program { static void Main(string[] args) { using (MyhelloHost Host = new MyhelloHost()) { Host.Open(); Console.Read(); } } } public class MyhelloHost : IDisposable { /// <summary> /// 定义一个服务对象 /// </summary> private ServiceHost _myhost; public ServiceHost Myhost { get { return _myhost; } } /// <summary> /// 定义一个基地址 /// </summary> public const string BaseAddress = "net.pipe://localhost"; /// <summary> /// 可选地址 /// </summary> public const string HelleServiceAddress = "Hello"; /// <summary> ///服务契约类型 /// </summary> public static readonly Type ServiceType = typeof(wcfservice.HelloService); /// <summary> /// 服务契约接口 /// </summary> public static readonly Type ContraceType = typeof(wcfservice.IHelloService); /// <summary> /// 服务定义一个绑定 /// </summary> public static readonly Binding HelloBing = new NetNamedPipeBinding(); /// <summary> /// 构造服务对象 /// </summary> protected void CreateHelloServiceHost() { //创建服务对象 _myhost = new ServiceHost(ServiceType, new Uri[] { new Uri(BaseAddress) }); //添加服务终结点 _myhost.AddServiceEndpoint(ContraceType, HelloBing, HelleServiceAddress); } /// <summary> /// 打开服务 /// </summary> public void Open() { Console.WriteLine("开始启动服务....."); Myhost.Open(); Console.WriteLine("服务已经启动....."); } /// <summary> /// 构造函数 /// </summary> public MyhelloHost() { CreateHelloServiceHost(); } /// <summary> /// 销毁服务宿主对象实例 /// </summary> public void Dispose() { if (_myhost != null) { (_myhost as IDisposable).Dispose(); } } } }
客户端程序
using System; using System.Collections.Generic; using System.Linq; using System.Text; using wcfservice; using System.ServiceModel; using System.ServiceModel.Channels; namespace wcfclient { class Program { static void Main(string[] args) { using (HelloProxy proxy = new HelloProxy()) { //利用代理调用服务 Console.WriteLine(proxy.say("张三")); Console.Read(); } } } //硬编码定义服务契约 [ServiceContract] interface Iservice { //服务操作 [OperationContract] string say(string name); } /// <summary> /// 客户端代理类型 /// </summary> class HelloProxy : ClientBase<IHelloService>, Iservice { //硬编码定义绑定 public static readonly Binding HelloBind = new NetNamedPipeBinding(); //硬编码定义地址 public static readonly EndpointAddress HelloAddress = new EndpointAddress(new Uri("net.pipe://localhost/Hello")); /// <summary> /// 构造方法 /// </summary> public HelloProxy() : base(HelloBind, HelloAddress) { } public string say(string name) { //使用Channel属性对服务进行调用 return Channel.Sayhell(name); } } }
相关文章推荐
- WCF创建宿主程序
- WCF服务在宿主程序中的配置说明
- 使用.NET应用为宿主程序来运行WCF服务
- 我的WCF之旅(1):创建一个简单的WCF程序
- 创建一个简单的WCF程序
- [原创]我的WCF之旅(1):创建一个简单的WCF程序
- 创建一个简单的WCF程序
- 我的WCF之旅(1):创建一个简单的WCF程序
- 使用Winform程序作为WCF服务的宿主
- 我的WCF之旅(1):创建一个简单的WCF程序
- 我的WCF之旅(1):创建一个简单的WCF程序
- WCF教程系列(1)-创建第一个WCF程序
- VS2012 创建基于 NET4.0 的WCF程序时引发System.ServiceModel.ServiceActivationException异常的解决办法
- WCF开发实战系列五:创建WCF客户端程序
- 使用反射提供程序创建数据服务(WCF 数据服务)
- 我的WCF之旅(1):创建一个简单的WCF程序
- WCF服务怎样与宿主程序交互
- 我的WCF之旅(1):创建一个简单的WCF程序
- 一个简单的WCF程序创建过程
- [翻译]DrawMe - 使用WPF/WCF创建的网络白板聊天程序