惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Simon Willison's Weblog
Simon Willison's Weblog
T
Threatpost
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Spread Privacy
Spread Privacy
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Engineering at Meta
Engineering at Meta
T
Tenable Blog
C
Cisco Blogs
T
The Blog of Author Tim Ferriss
NISL@THU
NISL@THU
T
Threat Research - Cisco Blogs
T
The Exploit Database - CXSecurity.com
P
Privacy & Cybersecurity Law Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
S
Secure Thoughts
N
News and Events Feed by Topic
Google DeepMind News
Google DeepMind News
博客园 - 三生石上(FineUI控件)
Microsoft Azure Blog
Microsoft Azure Blog
月光博客
月光博客
H
Hacker News: Front Page
I
InfoQ
L
LangChain Blog
Security Latest
Security Latest
The Cloudflare Blog
Forbes - Security
Forbes - Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Stack Overflow Blog
Stack Overflow Blog
TaoSecurity Blog
TaoSecurity Blog
量子位
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
Visual Studio Blog
Scott Helme
Scott Helme
爱范儿
爱范儿
A
Arctic Wolf
F
Full Disclosure
酷 壳 – CoolShell
酷 壳 – CoolShell
Schneier on Security
Schneier on Security
N
News and Events Feed by Topic
C
CXSECURITY Database RSS Feed - CXSecurity.com
L
LINUX DO - 最新话题
V2EX - 技术
V2EX - 技术
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
人人都是产品经理
人人都是产品经理
The Hacker News
The Hacker News
Hugging Face - Blog
Hugging Face - Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
Know Your Adversary
Know Your Adversary
Application and Cybersecurity Blog
Application and Cybersecurity Blog

博客园 - 蒋建华

使用SharePoint 2010 Management Shell修改SharePoint 2010 身份认证方式的两种方法 推荐几款兼容移动终端和PC终端的UI控件 八大免费SharePoint MasterPage 和Theme 一个完整的微软官方提供的SharePoint 2010 完整模板 Sample Master Pages for SharePoint 2010 Windows 7下安装SharePoint Server 2010指南 使用Create EndPoint创建本机XML Web Service 将PD的物理模型导入Erwin 使用PowerDesigner 15生成SQL Server中文注释 Workflow4 持久化之数据库模型 私有云、公有云与传统数据中心 ORM及相关技术概念入门 SharePoint 2010企业应用解决方案 微软云计算解决方案之特性及案例分析 不竭动力:云计算中虚拟化管理详解 云协作新利器:微软SharePoint Online 云计算版的PC管理工具:Windows Intune 私有云:构建DDC测试环境需求分析 教你如何安装配置动态数据中心测试环境
PetShop与ORM架构的比较
蒋建华 · 2011-07-20 · via 博客园 - 蒋建华
 

最近项目处于前期阶段,对项目的架构进行了一些探讨,对PetShop架构与ORM架构进行简单的对比分析,抛砖引玉之作,欢迎大家参与讨论。

1 概述

       相关术语

软件架构:是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。

软件架构模式:捕获了软件架构中的核心元素,并难以改变的提供了系统结构方面的支持。

三层架构:微软推荐的分层式结构一般分为三层,从下至上分别为:数据访问层、业务逻辑层(又或成为领域层)、表示层。数据访问层:有时候也称为是持久层,其功能主要是负责数据库的访问;业务逻辑层:是整个系统的核心,它与这个系统的业务(领域)有关;表示层:是系统的UI部分,负责使用者与整个系统的交互。

ORMObject-Relational Mapping,对象关系映射,在维基百科上对ORM的解释如下:是一种用于转换在面向对象编程语言之间的不兼容的类型系统的数据编程技术。

业界目前流行的企业应用软件架构模式:基于分层架构、SOA、针对表现层的MVC、针对业务逻辑层的领域驱动模型和服务层等。在目前企业应用的架构中,分层式结构是最常见,也是最重要的一种结构,这种架构的典型代表是PetShop和基于ORM的架构。除此之外,还有很多开源架构也是分层架构,如Nhibernate、Spring.Net、Castel Windsor、Nbear、Ibatis.Net等等。

说明:

    PetShop是一个范例项目,不是一个具体架构,但是为.Net平台下进行企业应用开发提供了一个模板,这里我们认为这个模板就是一套应用架构。

ORM实际上是数据访问层的一个架构,但是这里我们并不严格对此界定,而更多的认为ORM是企业应用的一种架构。

这里的PetShop和ORM各代表了一种应用架构。

2 PetShop架构

PetShop是微软为了同SUN(现已被Oracle收购)的J2EE平台下的Pet StoreShop实例项目进行比较而开发的一个案例项目,是微软为了展现.Net平台的开发能力而做的一个范例。

PetShop最早是基于.Net Framework1.1来开发的,后来随着Framework2.0的发布升级到PetShop 3.0,在2006年,使用Visual Studio 2005进行了重构,完成了目前为止PetShop的最新版本PetShop4.0,本文对PetShop架构的分析都是基于此版本来进行的。

2.1 体系结构

       PetShop的项目结构如下图所示:

PetShop项目结构

PetShop4.0基本上延续了3.0的结构,但在性能上作了一定的改进,引入了缓存和异步处理机制,同时又充分利用了ASP.Net 2.0的新功能MemberShip,在设计模式上,PetShop4.0的系统架构如下图所示:

 

PetShop体系结构

表示层 (WEB) 包含各种用户界面元素。业务逻辑层 (BLL) 包含应用程序逻辑和业务组件。数据访问层 (DAL) 负责与数据库交互,进行数据存储和检索。

2.2 架构特点

PetShop架构有以下技术特点:

1)面向接口编程,在业务逻辑层使用IBllStrategy,在数据访问层使用IDALIProfileDALIMessaging

2)使用分层架构,从整体架构上来说,分成四层:业务实体层(Model)、数据访问层(DAL)、业务逻辑层(BLL)、显示层(UI),但实际上还是一个典型的三层架构。

3)抽象工厂模式,.NET Pet Shop 4 使用抽象工厂设计模式,该模式中的接口用于创建一系列相关或依赖的对象,而无需指定其具体类。数据访问层中有一个该模式的示例,其中包括针对 IDALDAL 工厂、Oracle DAL SQL Server DAL 的项目。为缓存、库存和定单数据访问、消息处理,以及配置文件数据访问创建抽象工厂。

4)使用缓存技术,PetShop 4.0则引入了SqlCacheDependency特性,使得系统对缓存的处理较之以前大为改观。

5)使用异步,使用了Microsoft Messaging Queue(MSMQ)技术来完成异步处理,利用消息队列临时存放要插入的数据,使得数据访问因为不需要访问数据库从而提供了访问性能,至于队列中的数 据,则等待系统空闲的时候再进行处理,将其最终插入到数据库中。

2.3 优劣分析

PetShop架构的优势/劣势分析

PetShop

优势

1.      采用三层架构,层次清晰,简单;

2.      整个系统代码量不大,运行效率高;

3.      使用面向接口编程、工厂模式、缓存技术、异步以及其它一些Framework2.0的技术,如母版页、Membership

4.      大部分开发者都有所了解,学习成本低,容易上手;

5.      可以结合代码生成工具来生成ModelDALBLL的基本代码

劣势

1.      对程序员的数据库水平有要求,在数据访问层需要程序员能够编写SQL语句和存储过程等

2.      ModelDALBLL需要编写代码,降低了开发效率

3 ORM架构

对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。

3.1 ORM常用工具

常用的ORM工具有:

ORM工具

参考

Entity Framework

http://msdn.microsoft.com/en-us/library/bb399572.aspx

EntitySpaces

http://www.entityspaces.net/Portal/Default.aspx

Genome

http://www.genom-e.com/

LINQ to SQL

http://msdn.microsoft.com/zh-cn/library/bb386976.aspx

llblgen pro

http://www.llblgen.com/defaultgeneric.aspx

NHibernate

http://community.jboss.org/wiki/NHibernateForNET

3.2 架构特点

ORM架构具有以下特点:

(1)    使用ORM框架自动完成数据库的CRUD操作,节省了开发的工作量,提高了工作效率。

(2)    职责分离,把程序员从数据库里解放出来,数据库的分析、设计、维护这些工作可以交给DBA来做,虽然一些项目中并没有专职的DBA,但是至少使开发团队成员的大部分人不用再写SQL了。

(3)    更加OO(面向对象),使开发人员把主要精力放在业务逻辑及其处理上,这将会使开发人员运用领域驱动开发。

(4)    目前有比较成熟的框架可以使用,如NHibernateLINQ To SQLEntity Framework,也可以自主开发ORM框架。

3.3 优劣分析

ORM

优势

1.      具有更多的OO特征

2.      开发人员对SQL的关注减少,对业务逻辑关注增多

3.      通过使用ORM框架,可以自动生成代码,提高了开发效率

4.      适合于企业应用架构

劣势

1.      应用程序运行性能有所降低,因为ORM大量使用了反射技术,在实例化的时候会占用大量资源。

2.      大部分开发人员需要学习ORM的相关技术,有一个学习的成本和时间

4 PetShop VS ORM

PetShop

ORM

开发速度

中等

PetShop

开发人员能力

熟悉.Net平台即可

更高一些,需要所有团队成员掌握ORM的相关技术

面向对象的支持

面向对象

面向对象

程序性能

ORM

中,可能会有性能问题

灵活性

PetShop高一些

复杂程度

简单

PetShop复杂

应用级别

项目级-适合任何项目级开发

企业级-适合大型项目或大型应用

由上面的比较可以看出,PetShop适合任何项目级的开发,有开发人员的基础,但是需要开发人员具有数据库的一些基本功;ORM更适合大型项目开发,开发效率相对更高一些,但是需要开发人员掌握ORM的相关技术,而目前大多数程序员并不具备此项能力,而且大量使用了对象(可能是复杂对象),实例化大量对象以及大量的使用反射技术必定会占用更多资源,从而可能导致系统性能下降。

结合当前具体项目来说,使用PetShopORM架构都能解决问题,如果ORM架构在程序性能上能够解决高并发的问题,使用现有的ORM架构无疑会降低工作量,加快开发进度。