写点什么

IQueryable 对于 API 是个错误的选择吗?

  • 2012-04-11
  • 本文字数:546 字

    阅读完需:约 2 分钟

Mark Seemann 在他的一篇名为“ IQueryable 之紧耦合”的文章中建议不要在设计 API 时暴露 IQueryable 接口,并列出了几点原因。

……IQueryable 接口是.NET 提供的 Header Interface 中一个优秀的接口示例。不过,我们几乎没办法完整地实现这个接口。

言下之意就是说,你没法确保方法会返回 IQueryable 接口的一个完整实现。

虽然该接口非常灵活、表达力很强,但是有个例外,那就是我们总能够写出一个查询让给定的 provider(供应程序)没法转化。

IQueryable 唯一的完整实现是内存实现

Mark 说,这种方式会导致抽象泄露(leaky abstraction),因为大部分情况下 IQueryable 都会由代码中的 Store provider 实现。

虽然这种说法很有道理,但是反过来想想,抽象泄露又有多大问题呢?使用它至少能够在我们可接受的范围内让写代码变得简单些也说不定呢?

比方说,如果 ASP.NET Web API 的返回类型为 IQueryable,那么它可以通过请求参数让同样用于过滤数据的webapi 变得更加简单。类似地,WCF RIA Service 中的DomainContext 方法返回的也是IQueryable,客户端可以借助它可在XAML 中使用过滤描述符(filter descriptor)或从 JQuery 客户端中取回所需的数据。

亲爱的读者,你是怎么考虑的呢?灵活性带来的好处是否能盖过抽象泄露呢?

查看英文原文: Is IQueryable A Bad Choice For APIs?

2012-04-11 19:191712
用户头像

发布了 125 篇内容, 共 37.1 次阅读, 收获喜欢 5 次。

关注

评论

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

GreatSQL一个关于主从复制的限制描述与规避

GreatSQL

主从复制 greatsql 运维实战

简化 Go 开发:使用强大的工具提高生产力

SEAL安全

Go 语言 开发. 企业号9月PK榜

什么是立方体led显示屏?立方体led显示屏适合用在什么地方?

Dylan

设计 模块 LED显示屏 led显示屏厂家

技术贴 | 深度解析 PostgreSQL Protocol v3.0(二)— 扩展查询

KaiwuDB

一键登录是如何为应用开发者实现降本增效的

MobTech袤博科技

大数据 智能推送

我为什么选择这样一份经常出差的工作

codists

编程人 codists

亚马逊云科技【云上探索实验室】来啦,体验编码新伴侣赢好礼!

科技热闻

Mac电脑文本识别 TextSniper 免激活最新版

胖墩儿不胖y

Mac软件 文本识别工具

数字中国下西洋,需要一支怎样的船队?

脑极体

AI风控

在亚马逊云科技控制台上创建 Amazon Cognito 用户池

亚马逊云科技 (Amazon Web Services)

亚马逊云科技 生成式人工智能

HarmonyOS线性容器特性及使用场景

HarmonyOS开发者

HarmonyOS

从繁琐到一键直达:秒验助力实现优化用户登录体验

MobTech袤博科技

大数据 智能推送

架构实战营 模块二作业

Chong Liu

ThingsBoard 前端项目背景图片部件开发

echeverra

thingsboard

英特尔CEO帕特·基辛格阐述“芯经济”概念,AI正在推动其蓬勃发展

E科讯

快速读懂Etcd

Quincy

golang 源码 分布式 etcd

Mac系统设置维护软件 TinkerTool System激活最新版

mac大玩家j

系统优化 Mac软件 系统清理工具

MobTech全面助力开发与运营用户进行APP生命周期智能管理

MobTech袤博科技

大数据 智能推送

Mac Office安装许可工具后,软件显示只读模式,如何解决?

展初云

Office Mac软件

IQueryable对于API是个错误的选择吗?_.NET_Roopesh Shenoy_InfoQ精选文章