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 ...
随机推荐
- WebStorm的compass配置
在webstorm中配置compass WebStorm是功能强大的前端开发专用IDE,拥有即时编辑(chrome).自动完成.debugger.Emmet.HTML5 支持.JSLint.Less. ...
- Java和C#的socket通信相关(转)
这几天在博客园上看到好几个写Java和C#的socket通信的帖子.但是都为指出其中关键点. C# socket通信组件有很多,在vs 使用nuget搜索socket组件有很多类似的.本人使用的是自己 ...
- hdu3037Saving Beans
Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission ...
- mvc验证jquery.unobtrusive-ajax
Unobtrusive Ajax Ajax (Asynchronous JavaScript and XML 的缩写),如我们所见,这个概念的重点已经不再是XML部分,而是 Asynchronous ...
- Android Studio中导入Android项目StepbyStep
想把在eclipse的项目导入Android studio,有两种方法,但是我喜欢的是不改变项目文件结构的方法,因为这样可以兼容eclipse. 第一步: 导入的项目不能运行,需要配置运行环境.And ...
- synchronized和进程间通信(转)
关于JAVA多线程同步 JAVA多线程同步主要依赖于若干方法和关键字 1 wait方法: 该方法属于Object的方法,wait方法的作用是使得当前调用wait方法所在部分(代码块)的线程停止执行, ...
- 用Maven打包成EAR远程部署JBoss(二)——部署到远程JBoss
用Maven打包成EAR远程部署JBoss(一)讲了如何使用Maven打包,可是在文章的最后也留下了一个问题,那就是如何将包部署到远程的JBoss中呢?近期在对之前的学习进行总结,发现少了这样一篇重要 ...
- ORDER BY RAND()
大概是因为需要研究了一下MYSQL随机样本实现.例如:离tablename表随机抽取了创纪录,我们一般的写法是:SELECT * FROM tablename ORDER BY RAND() LIMI ...
- document.all使用
document.all 一个. document.all它是在页面中的所有元素的集合.例如: document.all(0)一个元素 二. document.all能够推断浏览器是否是IE ...
- MVC中使用SignalR
MVC中使用SignalR打造酷炫实用的即时通讯功能附源码 前言,现在这世道写篇帖子没个前言真不好意思发出来.本贴的主要内容来自于本人在之前项目中所开发的一个小功能,用于OA中的即时通讯.由于当时 ...