关于”System.ServiceModel.Activation.WebServiceHostFactory“与"<webHttp/>"以及RestFul/启用了Ajax的WCF服务

简介: N久以前,曾看到园子里有一些wcf爱好者总是问:为啥启用了ajax的wcf对应的svc总要加一句Factory=System.ServiceModel.Activation.WebServiceHostFactory 昨天无意在网上闲逛时,发现了msdn官方的解释,转贴于此,希望对大家有帮助: 原文地址: http://msdn.

N久以前,曾看到园子里有一些wcf爱好者总是问:为啥启用了ajax的wcf对应的svc总要加一句Factory=System.ServiceModel.Activation.WebServiceHostFactory

昨天无意在网上闲逛时,发现了msdn官方的解释,转贴于此,希望对大家有帮助:

原文地址: http://msdn.microsoft.com/zh-cn/bb885100.aspx

创建不使用 ASP.NET 的 WCF AJAX 服务

Windows Communication Foundation (WCF) AJAX 服务可以从任何支持 Javascript 的网页进行访问,而不需要使用 ASP.NET AJAX。本主题描述如何创建此类 WCF 服务。

有关如何将 WCF 与 ASP.NET AJAX 一起使用的说明,请参见为 ASP.NET AJAX 创建 WCF 服务

创建 WCF AJAX 服务包括三个部分:

  • 创建一个可以从浏览器中访问的 AJAX 终结点。
  • 创建一个与 AJAX 兼容的服务协定。
  • 访问 WCF AJAX 服务。

创建 AJAX 终结点

若要在 WCF 服务中启用 AJAX 支持,最基本的方法是在与服务关联的 .svc 文件中使用 WebServiceHostFactory,如下面的示例所示。

<%ServiceHost language=c# Debug="true" Service="Microsoft.Ajax.Samples.CityService" Factory=System.ServiceModel.Activation.WebServiceHostFactory %>
 

另外,也可以使用配置来添加 AJAX 终结点。在服务终结点上使用 WebHttpBinding,并使用 WebHttpBehavior 配置该终结点,如下面的代码段所示。

<configuration> <system.serviceModel> <behaviors> <endpointBehaviors> <behavior name="AjaxBehavior"> <webHttp/> </behavior> </endpointBehaviors> </behaviors> <services> <service name="Microsoft.Ajax.Samples.CityService"> <endpoint address="ajaxEndpoint" behaviorConfiguration="AjaxBehavior" binding="webHttpBinding" contract="Microsoft.Ajax.Samples.ICityService" /> </service> </services> </system.serviceModel> </configuration>
 

有关可运行示例,请参见AJAX Service with JSON and XML Sample

创建与 AJAX 兼容的服务协定

默认情况下,通过 AJAX 终结点公开的服务协定将以 XML 格式返回数据。而且,默认情况下,通过对包含跟有操作名称的终结点地址的 URL 发出 HTTP POST 请求,将可以访问服务操作,如下面的示例所示。

[OperationContract] string[] GetCities(string firstLetters);
 

此操作可通过对 http://serviceaddress/endpointaddress/GetCities 发出 HTTP POST 请求进行访问,并会返回一条 XML 消息。

可以使用完整的 Web 编程模型来自定义这些基本方面。例如,可以使用 WebGetAttributeWebInvokeAttribute 属性 (Attribute) 来控制操作响应的 HTTP 谓词,或使用各个属性 (Attribute) 的 UriTemplate 属性 (Property) 来指定自定义 URI。有关更多信息,请参见 Web 编程模型主题。

AJAX 服务中经常使用 JSON 数据格式。若要创建返回 JSON 而非 XML 的操作,请将 ResponseFormat(或 ResponseFormat)属性设置为 Json独立 JSON 序列化主题演示了内置 .NET 类型和数据协定类型如何映射到 JSON。

通常,JSON 的请求和响应只包括一项。对于上面的 GetCities 操作,该请求将类似于以下语句。

“na”
 

该请求的响应类似于以下语句。

[“Nairobi”, “Naples”, “Nashville”]
 

如果该操作使用了额外的参数,则请求样式必须是“包装的”,以便将两个参数都包装在一个 JSON 对象中。下面的示例显示了这种样式的 JSON 消息。

{“firstLetters”: “na”, “maxNumber”: 2}
 

下面的协定会接受此消息。

[WebInvoke(BodyStyle=WebMessageBodyStyle.WrappedRequest, ResponseFormat=WebMessageFormat.Json)] [OperationContract] string[] GetCities(string firstLetters, int maxNumber);
 

访问 AJAX 服务

WCF AJAX 终结点始终接受 JSON 和 XML 请求。

内容类型为“application/json”的 HTTP POST 请求将被视为 JSON,而内容类型指示 XML(例如“text/xml”)的 HTTP POST 请求将被视为 XML。

HTTP GET 请求的所有请求参数都包含在 URL 本身中。

用户将负责决定如何创建对终结点的 HTTP 请求。另外,用户还可以完全控制如何构造构成请求主体的 JSON。有关通过 JavaScript 创建请求的示例,请参见AJAX Service with JSON and XML Sample

 

目录
相关文章
|
4月前
|
缓存 弹性计算 API
用 Go 快速开发一个 RESTful API 服务
用 Go 快速开发一个 RESTful API 服务
|
8天前
|
JSON 关系型数据库 测试技术
使用Python和Flask构建RESTful API服务
使用Python和Flask构建RESTful API服务
|
3月前
|
Go API 开发者
深入探讨:使用Go语言构建高性能RESTful API服务
在本文中,我们将探索Go语言在构建高效、可靠的RESTful API服务中的独特优势。通过实际案例分析,我们将展示Go如何通过其并发模型、简洁的语法和内置的http包,成为现代后端服务开发的有力工具。
|
4月前
|
JavaScript 安全 API
构建高效后端服务:RESTful API 设计与实现
【8月更文挑战第31天】在数字化时代,一个清晰、高效且安全的后端服务是应用程序成功的关键。本文将深入探讨如何设计并实现一个遵循REST原则的API,确保服务的可扩展性和维护性。我们将从基础概念出发,逐步引入真实代码示例,展示如何利用现代技术栈创建高性能的后端服务。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和实用的技巧。
|
4月前
|
缓存 Java API
从零到一:构建一个高效的 RESTful API 服务
本文将详细介绍如何从头开始设计和实现一个高效的 RESTful API 服务。我们将探讨 API 设计的最佳实践、选择合适的技术栈、实现常见功能(如认证、数据验证、错误处理)以及优化性能的策略。通过实例代码和实际应用场景的分析,读者将能够掌握构建高效且易于维护的 API 服务的关键步骤和技巧。
|
4月前
|
API Java Python
API的神秘面纱:从零开始构建你的RESTful服务
【8月更文挑战第31天】在现代网络应用开发中,RESTful API已成为数据交互的标准。本文通过比较流行的技术栈(如Node.js、Python的Django和Flask、Java的Spring Boot)及其框架,帮助你理解构建RESTful API的关键差异,涵盖性能、可扩展性、开发效率、社区支持、安全性和维护性等方面,并提供示例代码和最佳实践,指导你选择最适合项目需求的工具,构建高效、安全且易维护的API服务。
59 0
|
4月前
|
Java 缓存 数据库连接
揭秘!Struts 2性能翻倍的秘诀:不可思议的优化技巧大公开
【8月更文挑战第31天】《Struts 2性能优化技巧》介绍了提升Struts 2 Web应用响应速度的关键策略,包括减少配置开销、优化Action处理、合理使用拦截器、精简标签库使用、改进数据访问方式、利用缓存机制以及浏览器与网络层面的优化。通过实施这些技巧,如懒加载配置、异步请求处理、高效数据库连接管理和启用GZIP压缩等,可显著提高应用性能,为用户提供更快的体验。性能优化需根据实际场景持续调整。
80 0
|
4月前
|
Java 网络架构 数据格式
Struts 2 携手 RESTful:颠覆传统,重塑Web服务新纪元的史诗级组合!
【8月更文挑战第31天】《Struts 2 与 RESTful 设计:构建现代 Web 服务》介绍如何结合 Struts 2 框架与 RESTful 设计理念,构建高效、可扩展的 Web 服务。Struts 2 的 REST 插件提供简洁的 API 和约定,使开发者能快速创建符合 REST 规范的服务接口。通过在 `struts.xml` 中配置 `&lt;rest&gt;` 命名空间并使用注解如 `@Action`、`@GET` 等,可轻松定义服务路径及 HTTP 方法。
64 0
|
4月前
|
前端开发 API 开发者
JSF与RESTful服务的完美邂逅:如何打造符合现代Web潮流的数据交互新体验
【8月更文挑战第31天】随着互联网技术的发展,RESTful架构风格因其实现简便与无状态特性而在Web服务构建中日益流行。本文探讨如何结合JavaServer Faces (JSF) 和 JAX-RS 构建RESTful API,展示从前端到后端分离的完整解决方案。通过定义资源类、配置 `web.xml` 文件以及使用依赖注入等步骤,演示了在JSF项目中实现RESTful服务的具体过程,为Java开发者提供了实用指南。
41 0
|
4月前
|
JSON API 数据库
探索FastAPI:不仅仅是一个Python Web框架,更是助力开发者高效构建现代化RESTful API服务的神器——从环境搭建到CRUD应用实战全面解析
【8月更文挑战第31天】FastAPI 是一个基于 Python 3.6+ 类型提示标准的现代 Web 框架,以其高性能、易用性和现代化设计而备受青睐。本文通过示例介绍了 FastAPI 的优势及其在构建高效 Web 应用中的强大功能。首先,通过安装 FastAPI 和 Uvicorn 并创建简单的“Hello, World!”应用入门;接着展示了如何处理路径参数和查询参数,并利用类型提示进行数据验证和转换。
119 0
下一篇
无影云桌面