写点什么

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

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

关注

评论

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

基于Raft算法的DLedger-Library分析 | 京东物流技术团队

京东科技开发者

算法 分布式系统 raft DLedger

深入理解嵌入式系统中的GPIO控制与应用

申公豹

嵌入式

避坑指南之财务共享中心建设项目团队搭建

用友BIP

财务共享

新一代“垫图”神器,IP-Adapter的完整应用解读

京东科技技术说

人工智能

49 | 搜索:如何用A*搜索算法实现游戏中的寻路功能

鲁米

数字化商品计划已经Out啦 揭秘哪些国际⼤牌⽤了AI智能商品计划?

第七在线

探秘AI赋能的未来世界:CyberAI深度学习技术助力变革

数新网络官方账号

人工智能 大数据

第七在线引领零售供应链智能化,助力企业实现效能提升

第七在线

基于Vue.js和Spring Boot的口罩自助售卖系统:设计、实现与技术深度解析

申公豹

系统

敏感信息泄漏怎么破?来试试极狐GitLab 的密钥检测吧

极狐GitLab

DevOps 安全 DevSecOps 安全左移 密钥检测

「智造」第15期:十问用友TimensionDB时序数据库

用友BIP

时序数据库

计算机设计大赛信息可视化设计的获奖经验剖析解读—4C大赛【全网最全万字攻略-获奖必读】

申公豹

可视化

用友BIP数智干部管理,落实国有企业人才强企战略

用友BIP

干部管理

火眼金睛破局ES伪慢查询 | 京东物流技术团队

京东科技开发者

数据库 慢查询 Elastic Search

深入探索嵌入式系统开发:从LED控制到物联网集成

申公豹

嵌入式

app开发

Geek_8da502

2024年企业堡垒机采购要考虑因素详解

行云管家

网络安全 堡垒机 企业堡垒机

JS获取当前系统电量情况

南城FE

JavaScript 前端 电量计算

48 | B+树:MySQL数据库索引是如何实现的

鲁米

防御性编程?这不就来了

越长大越悲伤

前端 后端 防御性编程

Spring Cloud Netflix移除后,我们又该何去何从?

木风mind

云原生 spring cloud alibaba java‘ spring cloud

华秋DFM荣获第三届智能制造创新大赛全国总决赛-新技术应用赛道三等奖

华秋电子

基于STM32的物联网节点设计与实现-传感器数据采集与无线通信

申公豹

嵌入式

嵌入式系统中的低功耗定时器应用与优化实战

申公豹

嵌入式

拆解 2 篇文章

6点无痛早起学习的和尚

写作 21 天技术人写作行动营

HTML5+Canvas数字孪生智慧机房可视化系统

2D3D前端可视化开发

物联网 数字孪生 三维可视化 智慧机房 智慧数据中心

华秋荣获亿邦动力2023产业互联网千峰奖,引领电子产业数字化变革

华秋电子

数智时代,业财融合如何助力企业数智化转型?

用友BIP

业财融合

活动预告| 字节跳动基于DataLeap的DataOps最佳实践

字节跳动数据平台

大数据 数据治理 数据安全 数据研发 企业号12月PK榜

【腾讯云 HAI域探秘】体验大模型的多种业务应用

Hanson

DFM引领电子产业变革,智能制造助力高效生产

华秋电子

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