2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

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

关注

评论

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

C/C++ 操作注册表与服务

Nginx unexpected end of file 配置证书遇到问题,如何解决?

程序员泥瓦匠

nginx

软件动力学:我理解的可演进架构

agnostic

可演进架构

JavaScript 中获取数组最后一个元素3种方法及性能

devpoint

JavaScript slice 数组操作

为什么字节跳动选择使用 Go 语言?

Jackpop

响应式操作实战

老周聊架构

响应式编程 2月月更

构建有参与感的干系人小组指南(译)

Bruce Talk

Scrum 敏捷开发 Agile

Java学习路线阅读计划时间线

kcodez

后端开发 Java 开发

后GameFi时代下的新宠Umi'Friends,能否成为下一个Axie Infinity?

股市老人

支持30+,这款文档提取工具太好用了!

Jackpop

从技术专家到总经理,在不确定中探索和成长

石云升

极客时间 2月月更 技术领导力实战笔记

管理者既要安定内部,也要团结外部

石云升

极客时间 2月月更 技术领导力实战笔记

京东前端高频react面试题集锦

beifeng1996

React

从0到1:健身房私教预约小程序开发笔记

CC同学

私教预约小程序

设计模式之模板模式

程序员大彬

设计模式

JUC 常用 4 大并发工具类

鱼找水需要时间

Java spring JUC

第九期-毕业设计

wuli洋

开源免费!一款性能和体验超棒的编程IDE

Jackpop

软件测试/测试开发 | web前端的HTML浅析

测试人

软件测试 自动化测试 测试开发 web测试

编程界的劣驱良现象有哪些? 圆桌收录 用代码构建世界

Jackpop

20K+ Star!一款开源免费B站视频下载工具

Jackpop

JS模块化—CJS&AMD&CMD&ES6-前端面试知识点查漏补缺

loveX001

JavaScript

一天梳理完React所有面试考察知识点

beifeng1996

React

毕业项目 - 设计电商秒杀系统

in9

parallels desktop2023汉化版虚拟机下载

茶色酒

parallels desktop2023

校招前端必会面试题及答案

loveX001

JavaScript

2023面试官常考的前端面试题

loveX001

JavaScript

基于Magma构建灵活、低成本无线接入网

俞凡

架构 网络 通信

80%的前端开发都答不上来的js异步面试题

loveX001

JavaScript

一道React面试题把我整懵了

beifeng1996

React

高效学 C++|编程实例之计算器

TiAmo

c++ 语言 & 开发 语言设计

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