Discovery

首先服务发现的目的就是为了解决服务和服务消费者的解耦,以往正常的通信客户端需要知道服务的地址。

wcf4.0为我们提供了2种模式的服务发现模型,一种是Managed proxy Discovery模型,一种是ad-hoc模式。

Managed proxy Discovery模型,采取的集中管理方式对服务的终结点进行管理,首先它自己本身以一个服务来提供终结点的管理功能。这个服务需要继承自System.ServiceModel.Discovery.DiscoveryProxy,需要对基类方法进行重写

主要的方法有OnBeginOnlineAnnouncement,OnEndOnlineAnnouncement,OnBeginOfflineAnnouncement,OnEndOfflineAnnouncement(用于服务的上下线通知)

OnBeginFind,OnEndFind(服务消费端的查找)

对外暴露2个终结点,一个是DiscoveryEndpoint,用于服务消费者查找服务,一个是AnnouncementEndpoint,供服务上下线通知。


当一个服务想实现可以被发现的功能,那么它就得在服务启动后通知Managed proxy Discovery服务。方法就是这个服务添加一个AnnouncementEndpoint,并且添加ServiceDiscoveryBehavior的行为。


最后剩下服务的消费者如何查找服务并建立连接。

服务消费者(可以使客户端,也可以是一个服务)要添加DiscoveryEndpoint

            EndpointAddress address = null;
            FindResponse result = null;
            using (var discoveryClient = new DiscoveryClient(discoveryEndpoint))
            {
                result = discoveryClient.Find(new FindCriteria(typeof(要查找的服务契约)));
            }


            if (result != null && result.Endpoints.Any())
            {

                //使用的是查找到的匹配的终结点的地址
                var endpointMetadata = result.Endpoints.First();
                address = endpointMetadata.Address;
            }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值