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

时间: 2024-10-14 11:25:26

三层还是DDD,ORM还是Ado.Net,何去何从?的相关文章

从三层架构迈向领域驱动设计

本文读者基本要求:从事信息管理系统开发,略懂GOF设计模式及SOLID设计原则,对三层面向过程机械编码厌倦,并且不知道出路在何方,如果还掌握代码坏味和重构手法,那是极好的. 1. 三层架构 理论介绍-->实际经验-->总结反思 1.1 简单介绍三层架构 严格分层架构模式的特点是上层只能访问相邻的下层,其他层次间的调用都不允许.三层架构就是一种严格分层模式,它把职责划分为界面展示.业务逻辑.数据访问三层,还有一个业务实体,前面三层都要依赖它,所以它并不构成一个层.结构如图1. 三层架构的特点是一

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

返回ABP系列 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应用程序的新起点,它旨在成为一个通用的WEB应用程序框架和项目模板. ABP的官方网站:http://www.aspnetboilerplate.com ABP官方文档:http://www.aspnetboilerplate.com/Pages/Documents Github上的开源项目:http

越走越迷茫,越走越犹豫,越走越烦恼

14年初考研失败,拿到分数当天就果断断掉了调剂或者继续考研的念头,第二天就急冲冲的跑去了一家用.net开发的小IT公司实习.公司不大,同事都是一两年的新人, 项目是做两个旅游方面的管理系统,业务没什么复杂的.公司最大的特点就是,给加班费鼓励加班,但是没有一个同事想加班,每天到了时间点,就跑了,到现在都想不通 咋回事儿.干了4个月,学到的东西不多,而且混日子的感觉好像火烧屁股浑身难受,想干一番大事的激情被磨灭的所剩无几,果断跳槽了. 第一家公司是给移动做路测分析平台的.公司是一家上市公司,技术总监

01-学习前说明

ASP.Net 常见问题l 互联网开发和管理系统开发l 什么是网站开发?• “网站运营”. “网站设计”.“网站开发”之间的区别.“800元做网站”.“688元全包做网站”• 有这么多开源系统为什么还需要开发人员?• 这么多网站已经开发好了,还要我们做什么?l ASP.Net Webform与ASP.Net MVC,这里不是专门讲WebForm,而是ASP.net基础 学ASP.Net之前需要学什么l .net.C#和ASP.Net的关系l .Net学习路线:要有C#.ADO.Net.html.

Navi.Soft20.WinForm操作手册

1概述 1.1应用场景 尽管互联网高速发展,互联网软件也随之越来越多,但桌面应用程序在某些领域中还是不可替代,如MIS,ERP,CRM等软件产品,同时,这类软件均包括一些通用的功能,如:与数据库操作,日志管理,权限管理等 本框架指在解决这些问题,并将通用的功能抽离并实现.使在开发过程中,将更多的精力放在业务逻辑 1.2面向对象 Net程序开发员 1.3开发环境 解决方案 开发环境 描述 NaviSoft20 VS2010或以上 整个框架只有此一个解决方案.Net类库包含2种.分别是Net4.0和

Navi.Soft20.WebMVC4操作手册(含EasyUI组件源码)

阅读导航 Navi.Soft20.WebForm操作手册http://www.cnblogs.com/xiyang1011/p/4049711.html Navi.Soft20.WinForm操作手册http://www.cnblogs.com/xiyang1011/p/3972118.html Navi.Component.工作流开发手册(含示例)http://www.cnblogs.com/xiyang1011/p/3820038.html Navi.Component.DataWindow

.NET深入解析LINQ框架(二:LINQ优雅的前奏)

阅读目录: 1.LINQ框架的主要设计模型 1.1.链式设计模式 (以流水线般的链接方式设计系统逻辑) 1.2.链式查询方法(逐步加工查询表达式中的每一个工作点) 2.LINQ框架的核心设计原理 2.1.托管语言之上的语言(LINQ查询表达式) 2.2.托管语言构造的基础(LINQ依附通用接口与查询操作符对应的方法对接) 2.3.深入IEnumerable.IEnumerable<T>.Enumerable(LINQ to Object框架的入口) 2.4.深入IQueryable.IQuer

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

1.新建一个类,实现IHttpModule接口 代码如下: public class SqlHttpModule : IHttpModule { public void Dispose() { } public void Init(HttpApplication context) { context.AcquireRequestState += new EventHandler(context_AcquireRequestState); } } 在实现接口的Init方法时,我们选择了Acquir

20代码生成工具

1.1 CodeSmith 一款人气很旺国外的基于模板的dotnet代码生成器 官方网站:http://www.codesmithtools.com 官方论坛:http://forum.codesmithtools.com/default.aspx 版权形式:30天试用 开源:否 需要先注册确认后才能下载 1.2 MyGenerator MyGenerator是又一个国外很不错的代码生成工具,有人觉得比CodeSmith简单.好用.所有api可以在帮助菜单中找到. 官方网站:http://www