写点什么

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

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

关注

评论

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

隔断设计这样做,瞬间提升家居颜值!跟着皮阿诺抄作业就对了

新消费日报

华为云Flexus X实例下的场景体验——小企业使用Python语言——超迅速搭建简单公网API接口服务

轶天下事

大语言模型提示词工程

测试人

人工智能 软件测试

我从 2024 年的 LLM 应用开发实践中学到了什么?Part 1

Baihai IDP

程序员 AI LLM Baihai IDP GenAI

在华为云X实例上安装部署企业Wiki知识分享平台的实践

轶天下事

华为云Flexus X轻松实现Redis一主多从高效部署

轶天下事

Web3项目的上线流程

北京木奇移动技术有限公司

区块链技术 软件外包公司 web3开发

华为云Flexus X搭建借贷管理系统、二次开发借贷小程序 前端源码uniapp

轶天下事

当AI遇见大数据:决策优化的下一个风口

天津汇柏科技有限公司

大数据 AI 人工智能

GitHub 上排名前 11 的开源管理后台(Admin Dashboard)项目

NocoBase

GitHub 开源 低代码 无代码 dashboard

什么样的MES系统能够让制造业IT部门省事省心呢?

万界星空科技

数字化 制造业 mes 万界星空科技mes 生产管理MES系统

京东API接口深度探索:如何使用关键词搜索商品及代码示例详解

代码忍者

京东API接口 京东评论API接口

官宣!雀巢携手赛博威,共同引领行业数字营销新变革!

赛博威科技

数字营销 赛博威

MySQL遇到瓶颈怎么办?GaiaDB 支撑「账三丰·代账业务」服务数万家企业

Baidu AICLOUD

数据库 :MySQL 数据库

Golang 终极备忘录

俞凡

golang

什么是 单点登录SSO?SSO工作原理

运维有小邓

SSO 密码管理 密码管理软件 多因素身份验证

管报经分,助力企业构筑管理大脑

用友智能财务

财务 会计 政策解读

拿捏!高效掌握离线数据,让数据资产快速释放价值

赛博威科技

离线数据 赛博威

阿里巴巴1688 API接口深度探索:商品详情获取与按图搜索商品(拍立淘)实战指南

代码忍者

1688API接口 关键词搜索1688API

华为云Flexus X服务器推荐公司、企事业单位及生产环境使用,特别注重安全和稳定性

轶天下事

京东供应链创新与实践:应用数据驱动的库存选品和调拨算法提升履约效率

京东零售技术

供应链

去哪儿机票智能预警系统-雷达系统落地实践

Qunar技术沙龙

技术 互联网 后端 雷达

全方位破解终端运营管理的“最后一公里”难题

赛博威科技

终端 精细化运营 快消行业 赛博威

部署基于LLM的私有知识库系统AnythingLLM

轶天下事

在线CAD绘制墙体(WEB CAD开发室内设计软件)

WEB CAD SDK

深度评测,华为云Flexus X实例在Sysbench性能测试中的亮眼表现

轶天下事

华为云服务器Flexus X搭建BTC虚拟币质押投资理财系统(仅测试学习)

轶天下事

Web3软件开发需要注意的问题

北京木奇移动技术有限公司

区块链技术 软件外包公司 web3开发

自学记录HarmonyOS Next Image API 13:图像处理与传输的开发实践

李游Leo

鸿蒙 HarmonyOS HarmonyOS NEXT

【GreatSQL优化器-08】statistics和index dives

GreatSQL

望来路,启新程:皮阿诺2024卓越时刻

新消费日报

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