写点什么

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

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

关注

评论

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

恒源云(GPUSHARE)_云GPU服务器如何使用 TensorBoard?

恒源云

深度学习

浏览器的几种防护策略

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

识别AI换脸!百度这项技术夺冠了!

百度大脑

人工智能 百度

验证码

卢卡多多

图片验证码 11月日更

在线假单词随机生成器

入门小站

工具

你现在可以在元宇宙里 “打工”了!

CECBC

一起听、一起看、一起唱掀起Z世代青年社交浪潮

声网

人工智能 算法 音视频

中央银行、不平等和新技术:使用分布式账本、可编程合约和密码学的蓝图

CECBC

15 K8S之容器安全上下文

穿过生命散发芬芳

k8s 11月日更

Python Qt GUI设计:信号与槽的使用方法(基础篇—7)

不脱发的程序猿

Python qt PyQt GUI

Forrester发布「2021年低代码平台中国市场现状分析报告」,钉钉宜搭入选

一只大光圈

低代码 数字化转型 低代码开发 低代码平台 钉钉宜搭

何止一个惨字形容,水滴Java面试一轮游,壮烈了,问啥啥不会,数据库血崩,我该怎么办?

Java 编程 程序员 面试

请问软件测试和渗透测试的区别是什么?

喀拉峻

网络安全 渗透测试

直接破防了,阿里大咖DDD(领域驱动设计)不破不立,GitHub直接霸榜,今天share给大家~

编程 程序员 领域驱动

一个基于PoS共识算法的区块链案例

Regan Yue

区块链 共识算法 11月日更 细讲区块链

赢在2022,面试官常问的软件测试面试题总结

六十七点五

软件测试 面试题 自动化测试 经验总结 测试工程师

NodeJs 深入浅出之旅:V8 内存分配🧙‍♂️

空城机

大前端 Node 11月日更

jodconverter实现在线预览

小鲍侃java

11月日更

数据同步:教你如何实时把数据从 MySQL 同步到 OceanBase

OceanBase 数据库

数据库 开源 oceanbase 分布式,

【算法技术专题】如何用Java实现一致性 hash 算法( consistent hashing )(上)

码界西柚

算法 一致性hash 11月日更

CODING Compass —— 打造行云流水般的软件工厂

CODING DevOps

DevOps 研发管理工具 流程化

科技热点周刊|马斯克套现 440 亿;苹果推出数字身份证;Meta 与微软合作;华为捐赠欧拉

青云技术社区

云计算 物联网

【LeetCode】重新排序得到 2 的幂Java题解

Albert

算法 LeetCode 11月日更

架构设计

AHUI

「架构实战营」

新能源汽车补贴没了,行业还能快速发展吗?

石云升

学习笔记 新能源汽车 11月日更

你不知道的开源分布式存储系统 Alluxio 源码完整解析(上篇)

腾源会

大数据 开源 数据湖

gitlab registry占用存储过大问题解决

ilinux

华为初面+综合面试(Java技术面)附上面试题,share给大家~

Java 编程 程序员 面试

1 分钟学会 30 种编程语言

AlwaysBeta

linux下清理系统缓存并释放内存

入门小站

Linux

监管打压加码!虚拟货币挖矿再遭围堵 “漏网之鱼”当休

CECBC

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