WCF学习(2) ServiceHost寄宿多个服务

本文介绍了WCF中如何寄宿多个服务,包括在一个类里实现服务协定并添加多个终结点,以及分别使用多个ServiceHost。详细探讨了两种实践方法,并给出了实例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WCF学习(2) ServiceHost寄宿多个服务

WCF在实际应用中,通常都会寄宿多个服务。网上的做法通常有2种:
1. 将服务协定实现在一个类里面,利用partial将实现分散到多个文件,然后添加多个终结点,只需要开启一个ServiceHost.
2. 每个服务开启一个ServiceHost,这种做法在实际实现上也会有所不同,比如可以需要调用某个服务的时候再去开启,利用线程锁来控制同时开启的服务数,或者一次开启所有的服务.


实例1.将服务协定实现在一个类里面,然后添加多个终结点

  • 服务协定
[ServiceContract]
public interface IUserService
{
[OperationContract]
string UpdateUser(string json);

[OperationContract]
string UpdateUserList(string json);

[OperationContract]
string GetAllUser(string json);

[OperationContract]
string GetUserByName(string json);

[OperationContract]
string AddUser(string json);

[OperationContract]
string AddUserList(string json);

[OperationContract]
string DeleteUser(string json);
}

省略了ISysConfigService

  • 服务实现

这里写图片描述
省略了SysConfigService

  • 服务端启动WCF服务代码
try
{
    NetTcpBinding bind = new NetTcpBinding();
    bind.Security.Mode = SecurityMode.None;
    bind.MaxReceivedMessageSize = 2147483647;
    Uri baseAddress = new Uri(string.Format("net.tcp://{0}:{1}/Service", HostIP, 8000));

    if (host == null)
        host = new ServiceHost(typeof(ServiceImp), baseAddress);

    host.AddServiceEndpoint(typeof(ISysConfigService), bind, "SysConfigService");
    host.AddServiceEndpoint(typeof(IUserService), bind, "UserService");

    if (host.Description.Behaviors.Find<ServiceMetadataBehavior>() == null)
    {
        ServiceMetadataBehavior sb = new ServiceMetadataBehavior();
        sb.HttpGetEn
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值