您的位置:首页 > 其它

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);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: