DDD,ORM还是Ado.Net
三层还是DDD,ORM还是Ado.Net,何去何从?
我本想把这个问题放到博问去,前几次有去博问问过之类的问题,无奈大神们可能都不屑回答别人的低级问题。所以放到随笔里,一方面把自己对ORM、架构的一些看法写下来抛砖引玉,另一方面最主要的是想寻求大神们指指路。
现况
缘由
公司的开发框架用了好些时间,团队在开发过程中遇到了不少问题,需要革新,我自己也有新的开发框架要做。在选择架构和选择数据库访问手段时,遇到不少问题。
架构
我做ASP.Net有些年头了,实际上这几年看过的架构设计不少,但是用的最多的还是工厂三层,基本代码全靠代码生成器,仅代码生成器就改良过不少次。项目做的多了以后,反观自己的代码的时候,就觉得BLL层实在无聊的很,而且有一个我不知道各位都有没有存在的一个问题:F12不能直接定位到DAL层上。
于是我去寻找改良我现有架构的方法。
偶然有天博客园的首页充斥着DDD的文章,我去细观了一下,想找些例子研究一下,可惜的很,但凡涉及DDD的,全是与EF有关的文章,我也留意到DDD解决了一些我存在的问题。但就是不喜欢任何ORM。
ORM
我不是从我知道ORM的时候我就抗拒ORM,实际上,我有认真看过一些ORM:
EntityFramework(EF)、NHibernate(NH)、Castle ActiveRecord(AR)、Linq for Sql
我首先就关注了EF,当时看的时候,还没有听过Model First这个概念,我拖来拖去,最后再看看VS给我生成的东西,内心很憋屈:我有强迫症,我创建类,如果我不能完完整整的控制它,哪怕是它在项目中的具体位置,我心里就十分不舒坦。
更主要的是,截止我写之前,我没有找到任何EF能通过切换配置文件来达到兼容MS SQL、Oracle、MySQL这三个数据库的目的,如果你不接触ZF项目,你估计很难理解我为什么要这么强调数据库兼容
用NH的纠结程度不下于EF,我实在受不了HQL和每一个表都有一个XML配置的问题,更主要的是,公司有采用NH做项目,但最后项目跑的慢的跟蜗牛似的,当然这可能跟以前的代码写不好有原因。
Castle的所有子项目里面,我们用的有两个,Windsor、Castle NVelocity,所以当AR摆在我面前的时候,有理由学习一下,但是NH已经那么慢了,AR到底如何,我不敢草率做决定。
LinQ for Sql我就不说了。
求指路
说这么多,是想各位给提点意见,我该怎么办,我的架构该怎么改,我到底要不要选ORM,还是回归ADO.Net来追求速度.
DDD,ORM还是Ado.Net的更多相关文章
- 三层还是DDD,ORM还是Ado.Net,何去何从?
我本想把这个问题放到博问去,前几次有去博问问过之类的问题,无奈大神们可能都不屑回答别人的低级问题.所以放到随笔里,一方面把自己对ORM.架构的一些看法写下来抛砖引玉,另一方面最主要的是想寻求大神们指指 ...
- 领域驱动设计(DDD)的实践经验分享之ORM的思考
原文:领域驱动设计(DDD)的实践经验分享之ORM的思考 最近一直对DDD(Domain Driven Design)很感兴趣,于是去网上找了一些文章来看看,发现它确实是个好东西.于是我去买了两本关于 ...
- 主流ORM对比分析,莫人云亦云
目前主流的ORM框架有Entity Framework,Dapper,NHibernate,NBear,Castle ActiveRecord,BATIS.NET六种,都是免费开源的.下边从官方支持性 ...
- ASP.NET MVC学习---(一)ORM框架,EF实体数据模型简介
现如今 对象关系映射(ORM)框架 被大量的使用于企业级应用的开发 为什么要使用ORM? ADO.NET操作数据库不好吗? 我们可以仔细想想 当我们使用ADO.NET操作数据库的时候 我们需要先获取连 ...
- 领域驱动和MVVM应用于UWP开发的一些思考
领域驱动和MVVM应用于UWP开发的一些思考 0x00 起因 有段时间没写博客了,其实最近本来是根据梳理的MSDN上的资料(UWP开发目录整理)有条不紊的进行UWP学习的.学习中有了心得体会或遇到了问 ...
- UWP开发的一些思考
UWP开发的一些思考 领域驱动和MVVM应用于UWP开发的一些思考 0x00 起因 有段时间没写博客了,其实最近本来是根据梳理的MSDN上的资料(UWP开发目录整理)有条不紊的进行UWP学习的.学习中 ...
- Unit Of Work--工作单元(二)
回顾 上一篇我们根据工作单元的原理基于ADO.NET进行了简单的实现,但是当项目需求发生变化的时候,比如需要引入ORM框架又要兼容当前ADO.NET实现的方式时,先前的实现就无法满足这个需求了. 话就 ...
- 使用 MarkDown & DocFX 升级 Rafy 帮助文档
最近使用 DocFX 对 Rafy 框架的帮助文档进行了升级. SandCastle 之前 Rafy 框架的帮助文档,是使用 SandCastle 来编写的(https://github.com/EW ...
- asp.net利用HttpModule实现防sql注入和加载样式和JS文件
1.新建一个类,实现IHttpModule接口 代码如下: public class SqlHttpModule : IHttpModule { public void Dispose() { } p ...
随机推荐
- 给AspNetPager分页控件添加bootstrap样式
AspNetPager分页控件算是比较好用的一个分页控件了.想要结合bootstrap使用,官方代码入口 .pagination a[disabled]{ color: #777;cursor: no ...
- SQL Server 2008性能故障排查(四)——TempDB
原文:SQL Server 2008性能故障排查(四)--TempDB 接着上一章:I/O TempDB: TempDB是一个全局数据库,存储内部和用户对象还有零食表.对象.在SQLServer操作过 ...
- React.js入门笔记 创建hello world 的6种方式
一.ReactJS简介 React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站. ...
- HDU 4300 Clairewd’s message(扩展KMP)
思路:extend[i]表示原串以第i開始与模式串的前缀的最长匹配.经过O(n)的枚举,我们能够得到,若extend[i]+i=len且i>=extend[i]时,表示t即为该点之前的串,c即为 ...
- nginx conf by linux kernel
#nginx conf by linux kernel net.ipv4.tcp_max_tw_buckets = 6000 net.ipv4.ip_local_port_range = 1024 6 ...
- Centos使用dd命令制作U盘启动盘 wodim刻录光盘
首先格式化U盘:使用fdisk -l 查看U盘到挂载点,如我的为/dev/sdb1.卸载U盘,运行格式化命令:mkfs.vfat /dev/sdb1 然后又一次挂载U盘,開始制作启动盘: # dd ...
- hdu2571命
称号: Problem Description 穿过幽谷意味着离大魔王lemon已经无限接近了! 可谁能想到,yifenfei在斩杀了一些虾兵蟹将后.却再次面临命运大迷宫的考验.这是魔王lemon设下 ...
- Redis源代码分析(二十)--- ae事件驱动
事件驱动的术语出现更频繁.听起来非常大的,今天我把Redis内部驱动器模型来研究它,奖励的感觉啊.一个ae.c主程序,加4文件的事件类型,让你彻底弄清楚,Redis是怎样处理这些事件的. 在Redis ...
- jquery的智能提示控件
福利到~分享一个基于jquery的智能提示控件intellSeach.js 一.需求 我们经常会遇到[站内搜索]的需求,为了提高用户体验,我们希望能做到像百度那样的即时智能提示.例如:某公司人事管 ...
- Json.Net6.0入门学习试水篇
原文:Json.Net6.0入门学习试水篇 前言 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.简单地说,JSON 可以将 JavaScript 对象中 ...