写点什么

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

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

关注

评论

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

「通义灵码+X」公开课开讲啦!和赛博同桌一起完成开发任务 有奖励

阿里云云效

阿里云 通义灵码

4月用友BIP行动地图发布!

用友智能财务

AI 财务 会计

京东API接口最新指南:店铺所有商品接口的接入与使用

tbapi

京东API 京东店铺所有商品接口 京东店铺所有商品采集

智慧园区管理系统(源码+文档+讲解+演示)

深圳亥时科技

HarmonyOS NEXT 中级开发笔记:健康管理类应用的ArkTS实践

huafushutong

HarmonyOS NEXT

使用 Ollama 本地模型与 Spring AI Alibaba 的强强结合,打造下一代 RAG 应用

阿里巴巴云原生

阿里云 云原生

云原生 Kafka 问卷调研启动,你的声音很重要!参与赢精美礼品!

阿里巴巴云原生

kafka 阿里云 云原生

去中心化云算力的3个发展阶段,走向自治和高效

PowerVerse

发展 去中心化 算力 web3

WebGL软件系统的性能优化方法

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

软件外包公司 webgl开发 three.js开发

不愧是高级Java开发岗,确实有点难~

王中阳Go

Java 面试 Java高级开发工程师

「通义灵码+X」公开课开讲啦!和赛博同桌一起完成开发任务 有奖励

阿里巴巴云原生

运维人员如何抓住 AI 机遇?DeepSeek 给出的转型路线图

嘉为蓝鲸

AIOPS 智能运维 DeepSeek

HarmonyOS NEXT 中级开发笔记:基于ArkTS的简易文件浏览器实现

huafushutong

HarmonyOS NEXT

HarmonyOS NEXT 中级开发笔记:基于ArkTS的拼团电商应用实践

huafushutong

HarmonyOS NEXT

智能运维,由你定义:SAE自定义日志与监控解决方案

阿里巴巴云原生

阿里云 Serverless 云原生

【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(12)

HarmonyOS SDK

harmoyos

HarmonyOS NEXT 中级开发笔记:基于ArkTS的房屋装修App实践

huafushutong

HarmonyOS NEXT

DataWorks数据集成同步至Hologres能力介绍

阿里云大数据AI技术

大数据 Serverless 数据集成 hologres Dataworks

以智能运维一体化平台破局数字化转型深层挑战,湖北数产集团X嘉为蓝鲸

嘉为蓝鲸

数字化转型 AIOPS 一体化运维

智能运维新标杆:OpsPilot V3.3通过MCP实现多源运维知识融合

嘉为蓝鲸

智能运维 #WeOps MCP协议

分布式数据一致性场景与方案处理分析|得物技术

得物技术

分布式 事务消息 分布式一致性 业务场景分析

AI背单词APP的线上运营

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

软件外包公司 AI英语学习 AI背单词

秒哒首发即爆发!上线首日吸引2万用户,打造3万应用!

百度Geek说

百度

嘉为蓝鲸IT服务管理中心V4.0:灵活扩展+敏捷交付,IT服务管理全链路高效协同

嘉为蓝鲸

AIOPS ITSM 智能运维 IT服务管理中心

可观测性+AI双轮驱动!嘉为蓝鲸应用发布中心V6.0打造下一代智能发布操作系统

嘉为蓝鲸

AIOPS 智能运维 应用发布中心

双引擎驱动!WeOps存储监控的全插件支持与自定义开发指南

嘉为蓝鲸

智能运维 #WeOps 监控管理

HarmonyOS NEXT 中级开发笔记:基于ArkTS的消费记账应用实践

huafushutong

HarmonyOS NEXT

钉钉 + AI 网关给 DeepSeek 办入职

阿里巴巴云原生

阿里云 AI 网关

怎么用最小的投入通过等保测评?一站式服务

黑龙江陆陆信息测评部

Web3项目的上线流程

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

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

AI加剧GPU短缺,解决之道在哪里?

PowerVerse

趋势 AI‘’ gpu 算力

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