WCF Web HTTP 编程对象模型

WCF WEB HTTP 编程模型允许开发人员通过基本 HTTP 请求公开 Windows Communication Foundation (WCF) Web 服务,而无需 SOAP。 WCF WEB HTTP 编程模型基于现有的 WCF 扩展性模型构建。 它定义以下类:

编程模型:

通道和调度程序基础结构:

实用工具类和扩展点:

AspNetCacheProfileAttribute

AspNetCacheProfileAttribute应用到服务操作时,表明应使用配置文件中的ASP.NET输出缓存配置文件来缓存此操作的响应。 此属性只有一个参数,即指定配置文件中的缓存设置的“缓存配置文件名称”。

WebGetAttribute

使用WebGetAttribute属性,以标记服务操作为响应HTTP GET请求的操作。 它是一种被动操作行为(IOperationBehavior 方法不执行任何操作),用于向操作描述添加元数据。 应用 WebGetAttribute 将无任何效果,除非将在操作说明中查找此元数据的行为(具体来说是 WebHttpBehavior)添加到服务的行为集合中。 该 WebGetAttribute 属性采用下表中显示的可选参数。

参数 DESCRIPTION
BodyStyle 控制是否包装发送到应用该属性的服务操作以及从该操作接收的请求和响应。
RequestFormat 控制请求消息的格式。
ResponseFormat 控制如何设置响应消息的格式。
UriTemplate 指定 URI 模板,用于控制哪些 HTTP 请求会映射到应用此属性的服务操作。

WebHttpBinding

WebHttpBinding 类集成了 WebMessageEncodingBindingElement 对 XML、JSON 和原始二进制数据的支持。 它由一个HttpsTransportBindingElementHttpTransportBindingElement和一个WebHttpSecurity对象组成。 WebHttpBinding 被设计用于与 WebHttpBehavior 配合使用。

WebInvokeAttribute

WebInvokeAttribute属性类似于WebGetAttribute,但用于标记服务操作响应除GET以外的HTTP请求。 它是一种被动操作行为(IOperationBehavior 方法不执行任何操作),用于向操作描述添加元数据。 应用 WebInvokeAttribute 将无任何效果,除非将在操作说明中查找此元数据的行为(具体来说是 WebHttpBehavior)添加到服务的行为集合中。

WebInvokeAttribute 属性采用下表中显示的可选参数。

参数 DESCRIPTION
BodyStyle 控制是否包装发送到应用该属性的服务操作以及从该操作接收的请求和响应。
Method 指定将服务操作映射到的 HTTP 方法。
RequestFormat 控制请求消息的格式。
ResponseFormat 控制如何设置响应消息的格式。
UriTemplate 指定 URI 模板,该模板控制将哪些 GET 请求映射到应用该属性的服务操作。

UriTemplate

UriTemplate 允许你定义一组结构相似的 URI。 模板由两个部分组成,一个路径和一个查询。 路径由一系列由斜杠(/)分隔的段组成。 每个段可以有一个文本值、一个变量值(在大括号 [{ }] 内写入,限制为匹配一个段的内容),或者一个通配符(以星号 [*] 形式写入,它与路径的其余部分匹配),该字符串必须出现在路径的末尾。 可以完全省略查询表达式。 如果存在,则指定一系列无序的名称/值对。 查询表达式的元素可以是文本对(?x=2)或变量对(?x={value})。 不允许使用无对值。 UriTemplate 在 WCF WEB HTTP 编程模型中内部使用,用于将特定 URI 或 URI 组映射到服务操作。

UriTemplateTable

UriTemplateTable 类表示绑定到开发人员选择对象的关联对象集 UriTemplate 。 它允许将候选统一资源标识符(URI)与集中的模板匹配,并检索与匹配模板关联的数据。 UriTemplateTable 在 WCF WEB HTTP 编程模型中内部使用,用于将特定 URI 或 URI 组映射到服务操作。

WebServiceHost

WebServiceHost 扩展 ServiceHost 使托管非 SOAP Web 样式服务变得更加容易。 如果在 WebServiceHost 服务说明中未找到任何终结点,它将在服务的基址上自动创建默认终结点。 创建默认 HTTP 终结点时, WebServiceHost 还会禁用 HTTP 帮助页和 Web 服务描述语言 (WSDL) GET 功能,以便元数据终结点不会干扰默认 HTTP 终结点。 WebServiceHost 还将确保使用 WebHttpBinding 的所有终结点都附加了所需的 WebHttpBehavior。 最后,WebServiceHost 会自动配置终结点的绑定,以便在安全虚拟目录中使用时与关联的 Internet 信息服务 (IIS) 一起工作。

WebServiceHostFactory

WebServiceHostFactory 类用于在 Internet Information Services(IIS)或 Windows 进程激活服务(WAS)下托管服务时动态创建 WebServiceHost 服务。 与自承载服务(其中,主机应用程序对 WebServiceHost 进行实例化)不同,承载于 IIS 或 WAS 中的服务使用此类为服务创建 WebServiceHost。 当收到服务的传入请求时调用CreateServiceHost(Type, Uri[])方法。

WebHttpBehavior

WebHttpBehavior 类提供服务模型层的 Web 样式服务支持所需的必要的格式化程序、作选择器等。 这作为终结点行为(与 WebHttpBinding 结合使用)实现,并允许为每个终结点指定格式化程序和作选择器,从而使同一服务实现能够同时公开 SOAP 和 POX 终结点。

扩展 WebHttpBehavior

WebHttpBehavior可通过使用多种虚拟方法进行扩展:GetOperationSelector(ServiceEndpoint)、、GetReplyClientFormatter(OperationDescription, ServiceEndpoint)GetRequestClientFormatter(OperationDescription, ServiceEndpoint)GetReplyDispatchFormatter(OperationDescription, ServiceEndpoint)GetRequestDispatchFormatter(OperationDescription, ServiceEndpoint)。 开发人员可以从WebHttpBehavior派生类,并重写这些方法以自定义默认行为。

WebScriptEnablingBehavior这是一个扩展WebHttpBehavior示例。 WebScriptEnablingBehavior 使 Windows Communication Foundation (WCF) 终结点能够从基于浏览器的 ASP.NET AJAX 客户端接收 HTTP 请求。 使用 HTTP POST 的 AJAX 服务是使用此扩展点的示例。

警告

使用WebScriptEnablingBehavior时,不支持在UriTemplateWebGetAttribute属性中使用WebInvokeAttribute

WebHttpDispatchOperationSelector

WebHttpDispatchOperationSelector 类使用 UriTemplateUriTemplateTable 类调度对服务操作的调用。

兼容性

WCF WEB HTTP 编程模型不使用基于 SOAP 的消息,因此不支持 WS-* 协议。 但是,可以通过两个不同的终结点公开同一协定:一个使用 SOAP,另一个不使用 SOAP。 请参阅 “如何:向 SOAP 和 Web 客户端公开协定 ”作为示例。

安全

由于 WCF WEB HTTP 编程模型不支持 WS-* 协议,因此保护 WCF WEB HTTP 编程模型上构建的 Web 服务的唯一方法是使用 SSL 公开服务。 有关使用 IIS 7.0 设置 SSL 的详细信息,请参阅 如何在 IIS 中实现 SSL

另请参阅