写点什么

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:191807
用户头像

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

关注

评论

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

明道云HAP成功通过了AWS 的 FTR 认证

明道云

鸿蒙HarmonyOS实战-ArkUI组件(Canvas)

蜀道山

鸿蒙 架构 HarmonyOS 鸿蒙系统 鸿蒙 Ability

鸿蒙HarmonyOS实战-ArkUI动画(布局更新动画)

蜀道山

鸿蒙 架构 HarmonyOS 鸿蒙系统 鸿蒙 Ability

Intel HDSLB 高性能四层负载均衡器 — 快速入门和应用场景

云物互联

云计算 负载均衡 网络

工作卷,是主动选择还是迫于无奈?

王中阳Go

golang 微服务 面试题 大厂面经 Go进阶

Pandabuy VS Wegobuy 淘宝代购系统

tbapi

淘宝代购系统 Pandabuy wegobuy

线上展厅是什么?和传统展厅相比有什么区别和优势?

点量实时云渲染

云展厅 3D展厅 线上展厅

PingCAP 黄东旭参与 CCF 秀湖会议,共探开源教育未来

PingCAP

数据库 分布式 TiDB

Pencils Protocol Valut 板块:实现杠杆挖矿收益&一鱼多吃

石头财经

一文读懂 Pencil 积分,打开 Pencils Protocol 生态权益大门

股市老人

多点 Dmall x TiDB:出海多云多活架构下的 TiDB 运维实战

PingCAP

数据库 分布式 TiDB 多云

什么是正向控制,反向控制?

玄兴梦影

正向控制 反向控制

OpenHarmony公开课 - 开发者手机OTA升级适配

Laval小助手

一文读懂Pencils Protocol Valut的收益叙事:一鱼多吃

大瞿科技

一文读懂Pencils Protocol Valut的收益叙事:一鱼多吃

加密眼界

一文读懂Pencils Protocol Valut的收益叙事:一鱼多吃

BlockChain先知

大模型一体机是在“卖盒子”吗?

脑极体

AI

一文读懂Pencils Protocol Valut的收益叙事:一鱼多吃

股市老人

银行核心背后的落地工程体系丨混沌测试的场景设计与实战演练

PingCAP

数据库 开源 分布式 TiDB

淘宝开放平台API接口:淘宝店铺订单列表接口丨淘宝店铺订单详情接口丨淘宝店铺订单物流接口

tbapi

淘宝店铺订单接口 淘宝店铺订单详情接口 淘宝店铺订单物流接口

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