写点什么

OData v3 与 WCF Data Services 5.x 简介

  • 2013-01-13
  • 本文字数:756 字

    阅读完需:约 2 分钟

如果使用.NET 构建新的 Web Services,那么 OData 就应该处于很重要的位置,特别是在需要支持未知的第三方应用时更是如此。该技术本身支持 SOAP 与 REST 风格的消息,对于后者又提供了 ATOM(XML)与 JSON 表示。这意味着使用者可以请求最适合自身的格式。

一个不错的起始点是 Mohamad Halabi 的文章 Understanding OData v3 and WCF Data Services 5.x 。这篇文章超越了传统的快速指南,重点关注于通信协议本身。

关于 WCF Data Services(微软的 OData 实现)的一个常见误解是它被绑定到了其 ORM Entity Framework 上。Mohamad 的文章中则介绍了公开一个非 EF 数据源的做法。对于静态数据来说,这就像是通过调用 List.AsQuerable 公开一套 IQueryable 属性一样简单。微软称其为 Reflection Provider

对于更加复杂的场景,你需要参考 MSDN 上的 Custom Data Service Providers 页面。它包含了你需要实现的各种接口的链接及一篇同名文章。但遗憾的是,很多接口的文档都不太完善。

在创建 OData 服务时,你需要知道一些兼容性问题。幸好,Mohamad 还介绍了 OData V2 与 OData V3 之间的差别。你主要应该关注如何注册 JSONMessageInspector 以及 JSON 与 JSON Light 之间的差别(后者去掉了很多 OData 元数据)。

WCF Data Services 主要用于提供 CRUD 式的服务,即创建、读取、更新与删除操作。你还可以公开 RPC 风格的服务,比如说 ProcessInvoice 方法。这是通过 WebGet 与 WebInvoke 属性实现的。但遗憾的是,这要比一般的 WCF 服务多了很多限制,比如说“每个参数都必须是原生类型”。 Service Operations 页面对其进行了详尽的介绍。

修改与查询拦截器可用于重写CRUD 式的请求。使用附加的验证与安全检查来阻止操作,通过错误消息告知你希望执行的其他操作。

查看英文原文: Getting Started with OData v3 and WCF Data Services 5.x

2013-01-13 12:301990
用户头像

发布了 88 篇内容, 共 273.2 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

聊聊那些奇葩的代码规范 —— 滥用静态导入

HoneyMoose

Pilota:为什么一个代码生成工具如此复杂丨GOTC Rust系列分享

字节跳动技术范儿

rust GOTC

Vue使用axios进行get请求拼接参数的两种方式

不觉心动

6 月 优质更文活动

SpringBoot项目使用hutool工具进行HttpClient接口调用的处理(文件上传)

不觉心动

6 月 优质更文活动

解决vue组件终端报错: error Component name “xxx“ should always be multi-word vue/multi-word

不觉心动

6 月 优质更文活动

RabbitMQ工作模式总结

不觉心动

6 月 优质更文活动

SaaS公司如何成为 AI 独角兽?发挥长板:流程、用户需求和数据积累

B Impact

Springboot整合RabbitMQ生产端和消费端

不觉心动

6 月 优质更文活动

openEuler22+GreatSQL+dbops玩转MGR

GreatSQL

MySQL 高可用 greatsql greatsql社区

RabbitMQ工作模式 Pub/Sub订阅模式

不觉心动

6 月 优质更文活动

节省90%编译时间,这是字节跳动开源的基于Rust的前端构建工具

字节跳动技术范儿

rust 前端 前端构建

Go 空结构体:零内存的魔力

陈明勇

Go golang 空结构体 6 月 优质更文活动

浅谈中小企业如何选择适合自己的网络营销方式

石头IT视角

C语言编程—头文件

芯动大师

C语言 头文件 6 月 优质更文活动

Redis.confp配置文件的一些配置

不觉心动

6 月 优质更文活动

【Netty】「NIO」(五)多线程优化

sidiot

Java 后端 Netty 6 月 优质更文活动

RabbitMQ工作模式 Routing路由模式

不觉心动

6 月 优质更文活动

《弥合鸿沟——2023校园招聘调研报告&备战攻略》重磅发布!一文速览10大关键发现

用友BIP

招聘 人才 校招

npm安装nanoid生成随机id并简单使用

不觉心动

6 月 优质更文活动

Redis的发布订阅

不觉心动

6 月 优质更文活动

SpringBoot整合RabbitMQ生产者

不觉心动

6 月 优质更文活动

ESP8266调用NTP服务器进行时间校准

DS小龙哥

6 月 优质更文活动

常见的软件可靠性度量和分析方法

穿过生命散发芬芳

可靠性度量 6 月 优质更文活动

Vue安装并使用axios发送请求

不觉心动

6 月 优质更文活动

解决SpringBoot整合Mybatis和Mybatis-Plus不能公用(版本兼容性问题)

不觉心动

6 月 优质更文活动

2023-06-08:给你一棵二叉树的根节点 root ,返回树的 最大宽度 。 树的 最大宽度 是所有层中最大的 宽度 。 每一层的 宽度 被定义为该层最左和最右的非空节点(即,两个端点)之间的长度

福大大架构师每日一题

算法 福大大

使用SpringBoot整合数据库连接池Druid的错误总结

不觉心动

6 月 优质更文活动

RabbitMQ工作模式之Work queues工作队列模式

不觉心动

6 月 优质更文活动

新斗罗大陆游戏详细图文架设教程

echeverra

斗罗大陆

OData v3与WCF Data Services 5.x简介_REST_Jonathan Allen_InfoQ精选文章