层还是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来追求速度.

 
分类: ASP.Net

DDD,ORM还是Ado.Net的更多相关文章

  1. 三层还是DDD,ORM还是Ado.Net,何去何从?

    我本想把这个问题放到博问去,前几次有去博问问过之类的问题,无奈大神们可能都不屑回答别人的低级问题.所以放到随笔里,一方面把自己对ORM.架构的一些看法写下来抛砖引玉,另一方面最主要的是想寻求大神们指指 ...

  2. 领域驱动设计(DDD)的实践经验分享之ORM的思考

    原文:领域驱动设计(DDD)的实践经验分享之ORM的思考 最近一直对DDD(Domain Driven Design)很感兴趣,于是去网上找了一些文章来看看,发现它确实是个好东西.于是我去买了两本关于 ...

  3. 主流ORM对比分析,莫人云亦云

    目前主流的ORM框架有Entity Framework,Dapper,NHibernate,NBear,Castle ActiveRecord,BATIS.NET六种,都是免费开源的.下边从官方支持性 ...

  4. ASP.NET MVC学习---(一)ORM框架,EF实体数据模型简介

    现如今 对象关系映射(ORM)框架 被大量的使用于企业级应用的开发 为什么要使用ORM? ADO.NET操作数据库不好吗? 我们可以仔细想想 当我们使用ADO.NET操作数据库的时候 我们需要先获取连 ...

  5. 领域驱动和MVVM应用于UWP开发的一些思考

    领域驱动和MVVM应用于UWP开发的一些思考 0x00 起因 有段时间没写博客了,其实最近本来是根据梳理的MSDN上的资料(UWP开发目录整理)有条不紊的进行UWP学习的.学习中有了心得体会或遇到了问 ...

  6. UWP开发的一些思考

    UWP开发的一些思考 领域驱动和MVVM应用于UWP开发的一些思考 0x00 起因 有段时间没写博客了,其实最近本来是根据梳理的MSDN上的资料(UWP开发目录整理)有条不紊的进行UWP学习的.学习中 ...

  7. Unit Of Work--工作单元(二)

    回顾 上一篇我们根据工作单元的原理基于ADO.NET进行了简单的实现,但是当项目需求发生变化的时候,比如需要引入ORM框架又要兼容当前ADO.NET实现的方式时,先前的实现就无法满足这个需求了. 话就 ...

  8. 使用 MarkDown & DocFX 升级 Rafy 帮助文档

    最近使用 DocFX 对 Rafy 框架的帮助文档进行了升级. SandCastle 之前 Rafy 框架的帮助文档,是使用 SandCastle 来编写的(https://github.com/EW ...

  9. asp.net利用HttpModule实现防sql注入和加载样式和JS文件

    1.新建一个类,实现IHttpModule接口 代码如下: public class SqlHttpModule : IHttpModule { public void Dispose() { } p ...

随机推荐

  1. JavaScript 初识Promise 对象

    什么是Promise? 其实, Promise就是一个类,而且这个类已经成为ES6的标准,是 ECMAScript 6 规范的重要特性之一.这个类目前在chrome32.Opera19.Firefox ...

  2. Unity3D合并着色器

    unity 3d倒每次模型更多的是一种着色器.我可以拥有这些车型共享的地图想分享一个着色器.所以每次删除,然后附加,很麻烦.如何才能合并这些着色器? 采纳TexturePacking对 1.遍历gam ...

  3. Atitit..文件上传组件选择and最佳实践的总结(2)----HTTP

    Atitit..文件上传组件选型and最佳实践总结(2)----断点续传 1. 断点续传的原理 1 2. 怎样推断一个插件/控件是否支持断点续传?? 1 3. 经常使用的组件选型结果::马 1 4.  ...

  4. 怎么理解Condition(转)

    在java.util.concurrent包中,有两个很特殊的工具类,Condition和ReentrantLock,使用过的人都知道,ReentrantLock(重入锁)是jdk的concurren ...

  5. Base64中文不能加密问题

    最近用到了Base64.js来对url参数进行加密,字母和数字都可以很好地加密/解密. 但测试中文时发现不能进行转换,貌似Base64.js不支持中文字符. 联想到encodeURI()对url的编码 ...

  6. Java Main如何被执行?(转)

    java应用程序的启动在/hotspot/src/share/tools/launcher/java.c的main()函数中,而在虚拟机初始化过程中,将创建并启动Java的Main线程.最后将调用JN ...

  7. AsyncTask来源分析(一)

    于android开发过程AsyncTask我会经常处理它.在网上,也有很多的其描述,因此,这里是不是说的用法,直接写自己的学习经验,以及它的一些浅显的认识,忘记错批评. AsyncTask它是一个抽象 ...

  8. thinkphp学习笔记7—多层MVC

    原文:thinkphp学习笔记7-多层MVC ThinkPHP支持多层设计. 1.模型层Model 使用多层目录结构和命名规范来设计多层的model,例如在项目设计中如果需要区分数据层,逻辑层,服务层 ...

  9. STL algorithmi算法s_sorted和is_sorted_until(28)

    is_sort原型: ::is_sorted default (1) template <class ForwardIterator> bool is_sorted (ForwardIte ...

  10. hdu2602 Bone Collector (01背包)

    本文来源于:http://blog.csdn.net/svitter 题意:典型到不能再典型的01背包.给了我一遍AC的快感. //================================== ...