OData 和 AtomPub: 使用WCF数据服务绑定 AtomPub 服务器

如果您不熟悉开放数据协议 (OData),我要告诉您它很美妙。OData(在 odata.org 上有详细介绍)以下列各种基于 HTTP 的功能优势 为基础:用于发布数据的 Atom;用于创建、更新和删除数据的 AtomPub;以及用于定义数据类型的 Microsoft 实体数据模型 (EDM)。

如果您拥有 JavaScript 客户端,则可以采用 JSON 格式(而不是 Atom 格式)直接返回数据;如果您拥有其他客户端(包括 Excel、 .Microsoft NET Framework、PHP、AJAX 等),则可以使用客户端库来形成 OData 请求和处理 OData 响应。如果您在服务器端使用 .NET Framework,则 Microsoft 还提供一个易于使用的库,该库称为 WCF 数据服务,用于公开 Microsoft 实体框架支持的 .NET Framework 类型或数据库作为 OData 源。这样,您就可以采用基于 HTTP 的方式和标准方式,通过 Internet 轻松公开您的数据。

话虽如此,您也可能希望使用 OData 执行一些并不完全属于现成功能的任务,如将 OData 与现有基于 Atom 和 AtomPub 的阅读器和 编写器集成。这正是我们要尝试的功能。

一个简单的博客

例如,假设我要构建一个简单的博客系统(事实上,此工作基于我对 sellsbrothers.com 上的内容管理系统的重新编写)。我对 Visual Studio 2010 中的模型优先支持十分着迷,因此创建了一个 ASP.NET MVC 2.0 项目,添加了一个名为 MyBlogDB.edmx 的 ADO.NET EDM 文件,并设计了一个 Post 实体,如图 1 所示。

图 1 在 Visual Studio 2010 中创建的 Post 实体

博客软件越复杂,需要跟踪的数据越多,但图 1 显示了一些基本数据。右键单击设计器图面时,可以选择“根据模型生成数据库”, 这会显示将创建的 SQL 文件(在本例中为 MyBlogDB.sql)以及将为创建数据库而生成的 SQL。单击“完成”将创建 SQL 文件并将数据库 绑定到我在 EDM 设计器中创建的实体。SQL 的重要部分如图 2 所示。

图 2 使用“根据模型生成数据库”生成的 SQL 代码

...
USE [MyBlogDB];
GO
...
-- Dropping existing tables
IF OBJECT_ID(N'[dbo].[Posts]', 'U') IS NOT NULL
   DROP TABLE [dbo].[Posts];
GO
...
-- Creating table 'Posts'
CREATE TABLE [dbo].[Posts] (
   [Id] int IDENTITY(1,1) NOT NULL,
   [Title] nvarchar(max) NOT NULL,
   [PublishDate] datetime NULL,
   [Content] nvarchar(max) NOT NULL
);
GO
...
-- Creating primary key on [Id] in table 'Posts'
ALTER TABLE [dbo].[Posts]
ADD CONSTRAINT [PK_Posts]
   PRIMARY KEY CLUSTERED ([Id] ASC);
GO

时间: 2024-08-04 06:43:05

OData 和 AtomPub: 使用WCF数据服务绑定 AtomPub 服务器的相关文章

Visual Studio-Visual Studio 2010中的实体框架4.0和WCF数据服务4.0

在诸多新改进之中,Visual Studio 2010 引入了用户期待已久的实体框架 4.0 和 WCF 数据服务 4.0(以前称为 ADO.NET 数据服务),这两项功能综合起来,简化了您建立数据模型.使用数据和生成数据的方式. 实体框架 4.0 (EF 4.0) 致力于启用和简化两种主要方案:以域为中心的应用程序开发和传统以数据为中心的"基于数据的窗体设计".它引入了诸如模型优先开发等功能(该功能允许您创建模型并为您生成自定义 T-SQL):对持久化透明的支持:外键:延迟加载以及实

远程数据服务

数据     远程数据服务(Remote Data Services,RDS)是允许我们处理客户端数据的一系列服务的统称.现在不用担心这方面的问题,因为RDS本身就是ADO的一部分,只有在需要传送和使用客户端数据时,才会使用.实际上RDS是由几个组件构成的.图10-1说明了这些组件以及它们之间是如何协同工作的. 组件似乎很多,但并不是所有的组件在每种情形下都被使用,实际上有一些不是RDS的一部分.然而这里还是把所有可能出现的组件都放在了图上,以备需要时查看.图10-1分成了两部分,因为使用客户端

RIA服务-使用WCF RIA服务的企业模式

PDC09 和 Mix10 上宣布了两条重大消息,分别是推出 Silverlight 4 Beta 和 RC.读到本文时,发布到网上的 Silverlight 4 完全版本已经可供下载.除广泛的打印支持外,它还支持权限升级.网络摄像头.麦克风.toast.剪贴板访问,等等.凭借其全新的功能集,Silverlight 4 作为一种多平台的丰富 UI 框架,可以从容应对与 Adobe AIR 之间的正面交锋. 尽管我对这一切确实感到兴奋,但我的主要角色是一名业务应用程序开发人员,我所关注的一点是如何

WCF分布式开发步步为赢(7):WCF数据契约与序列化

本节继续学习WCF分布式开发步步为赢(7):WCF数据契约与序列化.数据契约是WCF应用程序开发中一个重要的概念,毫无疑问实现客户端与服务端数据契约的传递中序列化是非常重要的步骤.那么序列化是什么?为什么会有序列化机制?或者说它是为了解决什么问题?作用是什么?现有的.NET 序列化机制和WCF序列化机制有什么不同?我们在本节文章里都会详细介绍.本节结构:[0]数据契约[1]序列化基本概念[2].NET 序列化机制[3]WCF序列化机制[4]代码实现与分析[5]总结. 下面我们正式进入今天的学习阶

甲骨文开源Avatar项目 JS构建数据服务

甲骨文公司近日在博客中宣布,将其Avatar项目开源. Avatar是一个用于HTML5开发的框架,提供了一个着重支持REST.http://www.aliyun.com/zixun/aggregation/17116.html">WebSockets和Server-Sent事件(SSE)的JavaScript服务层,以及一个富客户端框架,只需要你掌握很少的JavaScript知识. Avatar服务端专注于使用JavaScript构建 数据服务,客户端专注于支持HTML5和TSA(瘦服务

MySQL成勒索新目标,数据服务基线安全问题迫在眉睫

本文讲的是MySQL成勒索新目标,数据服务基线安全问题迫在眉睫,据最新报道显示,继MongoDB和Elasticsearch之后,MySQL成为下个数据勒索目标,从2月12日凌晨开始,已有成百上千个开放在公网的MySQL数据库被劫持,删除了数据库中的存储数据,攻击者留下勒索信息,要求支付比特币以赎回数据. 问题分析 遍观MongoDB和Elasticsearch以及现在的MySQL数据库勒索,可以发现都是基线安全问题导致被黑客劫持数据而勒索,原因在于这些服务都开放在公网上,并且存在空密码或者弱口

[深度分析]金融数据服务创业机会

在一些企业家和风投眼里,彭博的金融终端机多少是一个异类, 甚至是属于上个时代的产物. 当今时代,免费信息充斥互联网, 开源的大数据分析工具也不少,然而彭博的终端机业务却可以通过销售数据和数据分析工具,每年获得数十亿美元的收入, 且很多数据是彭博从第三方获得的.偶尔,你可能会听到人们嘲讽它的操作界面让人回想起 DOS 时代的简陋. 如今,各个行业都在加速细分和解绑(unbundling),金融服务业也并非例外,然而,彭博的的金融终端却毫不动摇的继续推进绑定(bundling)策略:一个产品,一个价

国家物联网CTO沈烁:智慧城市中的基础数据服务-标识数据服务

2016年1月20日,数据猿作为独家全程直播与专访媒体,受邀参加"全球大数据峰会 Global Big Data Conference 简称为 GBDC"本届大会由世界O2O组织.全球大数据联盟GBDC.全球移动游戏联盟GMGC.光合资本主办,中国互联网协会O2O工作组.中国汽车流通协会 支持. GBDC全球大数据峰会在北京国家会议中心举办,本届大会规模逾3000人.大会从大数据改变政务管理方式.引领全球企业营销.智能交通综合服务. 互联网整合营销运营.前沿科技等方面同现场嘉宾进行深入

通过一些细节入微的服务绑定老客户

导读:这篇文章我学到一点,通过一些细节入微的服务绑定老客户.老客户产生的二次交易比新客户更容易,也更节约成本. 我不太喜欢穿短裤子,因为我的小腿不好看,有那么一点粗,所以平时喜欢穿牛仔裤套衬衣,遮丑嘛,你懂的! 但是,天气一天比一天热,于是我去淘宝上买了一条较薄一些的牛仔裤,没过几天我收到货了,穿上身试试,还不错,呵呵!于是我打算去淘宝给人家一个好评,刚登 陆旺旺一条信息就弹出来了"亲,您的裤子收到了吧!非常感谢您光顾本店,亲如果试了裤子觉得还不错,希望您能5星好评,好评后我们将给您返现5元!&