我本想把这个问题放到博问去,前几次有去博问问过之类的问题,无奈大神们可能都不屑回答别人的低级问题。所以放到随笔里,一方面把自己对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,何去何从?的更多相关文章

  1. DDD,ORM还是Ado.Net

    三层还是DDD,ORM还是Ado.Net,何去何从? 我本想把这个问题放到博问去,前几次有去博问问过之类的问题,无奈大神们可能都不屑回答别人的低级问题.所以放到随笔里,一方面把自己对ORM.架构的一些 ...

  2. 基于三层架构项目下的Ado【六】

    一.基于三层架构项目下的Ado增删改查总结,提示:现在一般都是使用EF框架操作. 1. 先在model层创建出一个和你将会查询出一样类型的表,比如你将查询出的有五个字段,那么你就需要创建出一个和你查询 ...

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

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

  4. 也谈TDD,以及三层架构、设计模式、ORM……:没有免费的午餐

    想在园子里写点东西已经很久了,但一直没有落笔,忙着做 一起帮 的开发直播,还有些软文做推广,还要做奶爸带孩子,还要……好吧,我承认,真正的原因是: 太特么的难写了! 但再难写也要写啊,要等到“能写好了 ...

  5. 也谈TDD,以及三层架构、设计模式、ORM……没有免费的午餐,选择了,必付出代价

    想在园子里写点东西已经很久了,但一直没有落笔,忙着做 一起帮 的开发直播,还有些软文做推广,还要做奶爸带孩子,还要……好吧,我承认,真正的原因是: 太特么的难写了! 但再难写也要写啊,要等到“能写好了 ...

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

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

  7. 基于DDD的.NET开发框架 - ABP依赖注入

    返回ABP系列 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应 ...

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

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

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

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

随机推荐

  1. Spark job执行流程消息图

    Spark job执行流程消息图 1.介绍

  2. 01、Spark安装与配置

    01.Spark安装与配置 1.hadoop回顾 Hadoop是分布式计算引擎,含有四大模块,common.hdfs.mapreduce和yarn. 2.并发和并行 并发通常指针对单个节点的应对多个请 ...

  3. April 25 2017 Week 17 Tuesday

    Have you ever known the theory of chocie? There are a bunch of axiems, but there are only two thing ...

  4. OpenGL学习 Following the Pipeline

    Passing Data to the Vertex Shader Vertex Attributes At the start of the OpenGL pipeline,we use the i ...

  5. NO.003-2018.02.08《江城子·乙卯正月二十日夜记梦》宋代:苏轼

    江城子·乙卯正月二十日夜记梦_古诗文网 江城子·乙卯正月二十日夜记梦 乙卯:公元1075年,即北宋熙宁八年. 宋代:苏轼 十年生死两茫茫,不思量,自难忘.千里孤坟,无处话凄凉.纵使相逢应不识,尘满面, ...

  6. .clone事件当你克隆的时候,DOM节点是克隆出来了,但是克隆出来的节点不能运行时事件 ...

    解决办法如下在clone()里面加个参数true,即可完成事件的植入.即:.clone(true).clone( [ withDataAndEvents ], [ deepWithDataAndEve ...

  7. cudaMemcpy2D

  8. 使用nssm将bat文件注册为windows service (eg:solr, nodejs)

    nssm下载:http://pan.baidu.com/s/1sjAEevj _install.bat @echo off Set BasePath=D:\Tools %BasePath%\nssm- ...

  9. Linux文件服务器实战(匿名用户)

    一.进程与线程 二.vsftp服务器 1.文件传输协议(file transfer protocol,FTP) 基于该协议ftp客户端和服务端实现文件共享,上传下载文件 FTP基于TCP协议生成一个虚 ...

  10. BAT及各大互联网公司2014前端笔试面试题

    很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习前端基础更是大有裨益. 而更多的题目是我一路以来收集的,也有往年的,答案不确保一定正 ...