基于HTTP-GET的元数据发布方式与基于WS-MEX原理类似,但是ServiceMetadataBehavior需要做的更多额外的工作。原因很简单,由于在WS-MEX模式下,我们为寄宿的服务添加了相应的MEX终结点,那么当服务被成功寄宿后,WCF已经为元数据的消息交换建立了如图1所示的分发体系,我们需要做的仅仅是对MEX终结点的DispatchRuntime进行相应的定制而已。

WCF技术剖析之二十七: 如何将一个服务发布成WSDL[基于HTTP-GET的实现](提供模拟程序) 图1 WCF服务端分发体系

但是如果采用HTTP-GET模式,实际上我们需要从ChannelDispatcher开始,重新构建整个分发体系。接下来,我们在《WS-MEX原理》提供实例的基础上,对我们自定义ServiceMetadataBehaviorAttribute进行进一步的完善,使之同时对两种模式的元数据发布提供支持。 (Source Code从这里下载)

首先,我们需要定义一个新的服务契约接口:IHttpGetMetadata,Get操作处理任何形式的消息请求,因为它的输入参数和返回类型均为Message,并且Action和ReplyAction为*。

using System.ServiceModel;
using System.ServiceModel.Channels;
namespace ServiceMetadataBehaviorSimulator
   4: {
)]
interface IHttpGetMetadata
   7:     {
)]
   9:         Message Get(Message msg);
  10:     }
  11: }

相关文章:

  • 2021-11-07
  • 2021-09-03
  • 2021-08-19
  • 2022-01-02
猜你喜欢
  • 2021-08-06
  • 2021-10-23
  • 2022-12-23
  • 2021-09-12
  • 2021-10-03
  • 2021-06-09
相关资源
相似解决方案