11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

你还需要数据层吗?

  • 2007-08-27
  • 本文字数:948 字

    阅读完需:约 3 分钟

随着 LINQ 的临近发布,独立数据访问层的必要性需要重新进行评估了。它是否仍是应用程序设计的一个重要部分?或者它是否会变成一个过去的附属物?

重要的问题是 LINQ 让数据访问层和业务层的界线变模糊了。Kris Vandermotten 在一个包含两篇帖子的序列文章中,通过试验基于 LINQ 的数据访问层,来讨论了这个问题,使用 LINQtoSQL 来创建数据访问层

在他的第一个试验当中,Kris 从数据访问层中创建和返回了一个查询。Kris 讨论了一些其中涉及的问题,总结如下:

  1. 不像传统的数据层,在这样的设计这下,查询实际上是在业务层中执行的。
  2. 业务层具有重新定义查询的能力
  3. 层之间的界限不清,迫使开发人员要做出类似把“order by”语句放到什么地方的选择。

我讨厌让开发人员在日常开发工作中做出类似这样的选择。选择是需要时间的,并且这样的选择似乎也没有提高生产力。但是更坏的现实是,不同的开发人员将会做出不同的选择。甚至一个单独的开发人员也可能在不同的时间做出不同选择。这会导致在代码中前后矛盾。开发人员将需要花费很多时间来理解他们正在阅读的代码,仅仅由于这些代码没有一直按照同样的方式编写。对于生产力这是很糟糕的。在最糟糕的案例中,开发人员会重写每一行别人的代码,仅仅因为这些代码不符合他们在今天的选择。这对生产力是致命的(这也何谈 Linq 来提高生产力呢?)

Kris 最终得到一个结论:

我很想说对于所有情况只需做出一次明确和简单选择的唯一途径,就是使用非常抽象的方法。当然,那样意味着我们不需要 / 编写 / 使用一个实体访问层。业务逻辑直接访问一个由 SQLMetal 生成的程序集。

Adam Herscher 也研究了 LINQ,但得出完全不同的结论:

那么,在看完整篇文章后,并花了一些时间大致研究之后,我可以有把握的说,我们得到的结论表明 LINQ 是一个有前途的技术,它在未来很可能减少在设计、实现和维护一个数据访问层过程中大量的开销,虽然它今天还不是银弹。我们或许以某种功能(比如:查询 SQL 的语法辅助工具)把它合并到我们的系统中,但它也可能通过抽象出一套数据访问机制,来在现在或未来满足数据访问的需要,这些数据很可能会被缓存、分割或被多个组件 / 层来访问。

虽然可以肯定 LINQ 将会改变.NET 应用程序编写的方式,不过社区需要有足够的时间来让设计模式达成一致。

查看英文原文: Do You Need a Data Layer?

2007-08-27 22:10586
用户头像

发布了 254 篇内容, 共 46.7 次阅读, 收获喜欢 2 次。

关注

评论

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

什么是云效?通过云效体验一站式研发,实现10 倍效能提升

阿里云云效

阿里云 DevOps 云原生 研发效能 云效

为什么在数据驱动的路上,AB实验值得信赖?

字节跳动数据平台

字节跳动 数据分析 AB testing实战 ab测试

iOS自动化测试驱动工具探索

字节跳动终端技术

ios 字节跳动 自动化测试 测试工具 火山引擎MARS

js几种网络请求方式梳理——摆脱回调地狱

有道技术团队

Linux之ping命令

入门小站

Linux

应对EAST 5.0新挑战!索信达推出灵矩全景式监管合规平台

索信达控股

数据治理 金融 监管平台 数智化 合规性

当渲染遇上边缘计算,打造视频交互新模式

火山引擎边缘云

云原生 边缘计算 实时渲染

【C语言】野指针

謓泽

C语言 3月月更 野指针

ImageView变灰、倒影、圆角、加水印

逆锋起笔

android 图片处理 3月月更 imageView

谁能在第四代算力革命中脱颖而出?CPU?GPU?算法?数据?

蓝海大脑GPU

Web 键盘输入法应用开发指南 (4) —— 组合键

天择

JavaScript 键盘 输入法 3月月更

selenium相对定位器

红毛丹

3月程序媛福利 3月月更

【等级保护】等级保护共分为几级?保护对象是指什么?

行云管家

网络安全 等保 等级保护 等保2.0

老牌软件厂商亚信科技加入,携手龙蜥社区共建开源生态

OpenAnolis小助手

开源 亚信科技 互联网社区

语音顶会 ICASSP 2022 成果分享:基于时频感知域模型的单通道语音增强算法

阿里云视频云

阿里云 音频 论文 视频云 智能降噪

一个好的持续交付流水线是怎样的? | 研发效能提升36计

阿里云云效

云计算 阿里云 云原生 持续交付 持续部署

TiDB Online DDL 在 TiCDC 中的应用丨TiDB 工具分享

PingCAP

在线HTML转PUG工具

入门小站

工具

简单说明一下数据库审计能带来的价值

行云管家

数据库 数据安全 数据库审计

大规模异构数据的线索列表进化之路

百度Geek说

后端

深入浅出特征工程 -- 基于 OpenMLDB 的实践指南(下)

第四范式开发者社区

数据库 sql 人工智能「 特征 特征平台

面向体验,助推超视频时代新增长

字节跳动视频云技术团队

音视频开发

2022年中国个人云盘行业发展年度分析

易观分析

个人云盘

恒源云(Gpushare)_【活动专区】已上线,没有最优只有更优

恒源云

人工智能 算法 服务器

网易智企发布“易+”开源计划,网易会议组件正式开源

网易云信

音视频 开发

大数据培训:Spark 性能调优详解

@零度

spark 大数据培训

你还需要数据层吗?_.NET_Jonathan Allen_InfoQ精选文章