使用 RESTful WCF服务和JavaScript实现CRUD操作

分享于 

8分钟阅读

Web开发

  繁體

介绍

asp。net数据通信基金会以rest方式公开数据层,并为AJAX应用程序和其他客户端应用程序提供非常简单的方式来访问数据,而不需要 Having 来编写整个Web服务。 这引起了我对WCF的兴趣。 通过这篇文章,我们将看到一种利用 Entity Framework 和WCF数据服务来执行最小工作的方法。

REST基础

具象状态转移( 剩余) 是用于分布式超媒体系统( 如万维网)的一种软件架构。 REST的优点在于它没有与任何特定的技术或者平台相关联。 这个术语通常用于描述任何简单的接口,在不需要通过 HTTP Cookies 之类的额外消息层( 如SOAP或者会话跟踪) 传递域特定数据的简单接口上。 一个 RESTFul web服务是一个使用HTTP实现的简单web服务和 REST。 这样的web服务可以看作是一个 resources.The MIME类型的集合,该数据被web服务所支持。 这通常是 JSON。XML或者 YAML,但可以是任何东西。 操作集由使用HTTP方法的web服务支持( 比如。 POSTGETPUT 或者 DELETE )。

WCF Rest服务

WCF Rest服务是添加功能,以便以Rest式方式使用的普通WCF服务,以RESTful方式使用它们。 表 below 将帮助你理解通常使用HTTP谓词来实现web服务的方式。

方法说明
GET请求资源的特定表示形式
PUT创建或者更新具有所提供的表示形式的资源
DELETE删除指定的资源
POST提交被识别的资源要处理的数据
HEAD类似于 GET 但只检索标题而不检索正文
OPTIONS返回已经识别资源所支持的方法

配置WCF服务

现在是配置WCF数据服务的时候了。 在这个例子中我们需要 Entity Framework 4,但是我相信配置 Entity Framework的内容超出了本文的上下文。 那么我们只需要配置WCF数据服务。 在解决方案资源管理器中,右键单击 ASP.NET 项目的名称,然后单击添加新项。 在添加新项对话框中,选择WCF数据服务。

对于该服务的名称,我选择 EFService.svc。 Visual Studio 将向你展示一些生成的代码。 在WCF数据服务的定义中,需要添加 Entity Framework 数据上下文的名称,对于这里特定示例,我将使用下面的SocialShareDatabaseContext:

publicclass EFService : DataService<SocialShareDatabaseContext>

使用 Visual Studio 开发服务器测试服务,该服务应类似于 http://localhost:[port]/EFService.svc/Members//Gets。 如果打开附加示例项目中的EFService.svc.cs,则将看到代码 below:

此外,在 web.config,底部会自动添加 2节,其中一个是: <system.webServer> 和另一个是 <system.serviceModel>,如 below:

从客户端使用 WCF Rest服务

WCF数据服务使你能够以XML格式提供对实体数据的动态访问,这些数据可以由应用程序使用。 你可以从 WCF REST服务返回 XML ( 默认值),JSON。 有几种方法可以从客户端使用REST服务,但是作为JQuery风扇我会坚持它。 在进行潜水之前,JQuery调用需要一些我们首先需要知道的参数,类型: 要调用的REST方法的类型,换句话说, POST/GET/PUT/DELETE

  • url: 服务 URL,它的URL加上附加的URL路径附加的方法名/实体名称。
  • data: 可选参数,如果调用方法/实体需要参数,则需要。
  • contentType: 将数据发送到服务器时,使用这里 Content-Type
  • dataType: 返回的数据类型,换句话说,XML,JSON等。
  • success: 如果请求成功,则要调用的函数如成功,REST服务将返回 json/xml。
  • error: 请求失败时要调用的函数

现在,我们将了解如何使用不同的REST方法调用WCF服务。

使用获取方法

列出uri和集合的其他细节。 在我们的例子中,请求 Collection。

$.ajax({
 type: "GET",
 url: "Services/EFService.svc/Members",
 data: "{}",
 contentType: "application/json; charset=utf-8",
 dataType: "json",
 success: function (data) {
 // Play with returned data in JSON format },
 error: function (msg) {
 alert(msg);
 }
 });

使用POST方法

检索 Collection 地址成员的表示形式,在示例 below 中,在 Collection 中创建一个新条目。

$.ajax({
 type: "POST",
 url: "Services/EFService.svc/Members/",
 data: "{Email:'test@test.com', ScreenName:'TestUser'}",
 contentType: "application/json; charset=utf-8",
 dataType: "json",
 success: function (data) {
 // Play with response returned in JSON format },
 error: function (msg) {
 alert(msg);
 }
 });

使用放置方法

用另一个 Collection 更新整个 Collection,在示例 below 中更新 Collection的地址成员。

$.ajax({
 type: "PUT",
 url: "Services/EFService.svc/Members/",
 data: "{Email:'test@test.com', ScreenName:'TestUser'}",
 contentType: "application/json; charset=utf-8",
 dataType: "json",
 success: function (data) {
 // Play with response returned in JSON format },
 error: function (msg) {
 alert(msg);
 }
 });

使用 DELETE 方法

Delete,整个 Collection 或者特定 Collection,在示例 below 中,带有 id=1的Delete Member

$.ajax({
 type: "DELETE",
 url: "Services/EFService.svc/Members(1)",
 data: "{}",
 contentType: "application/json; charset=utf-8",
 dataType: "json",
 success: function (data) {
 // Play with response returned in JSON format },
 error: function (msg) {
 alert(msg);
 }
 });

使用示例代码

使用附加的示例代码需要:

  • 安装了 service pack 1的VS2010
  • Microsoft sql server 2005或者更高版本
  • 对 Entity Framework 4.0的基本了解

配置你的环境:

  • 附加 sample.mdf sample.ldf
  • 要使用 sql server 2005,请从顶部下载 DbSchema-SQLServer2005.zip 并解压缩。 创建一个数据库名示例并运行解压的SQL脚本
  • 打开 web.config 并查找 connectionStrings 部分并根据本地 SQL Server 登录凭据编辑连接字符串

对于表格数据显示,我使用了JQuery模板插件来呈现 Collection。 运行 default.aspx 页面查看示例。

历史记录

  • 版本 1.0: 基本版本已经更新
  • 版本 1.1: 附加的for sql server 2005数据库架构

JAVA  Javascript  IMP  服务  Opera  WCF  
相关文章