设为首页
加入收藏
站内地图
旧版入口
首 页
新闻资讯
SEO研究
SEO查询
网站运营
站长学院
赚钱联盟
链接交换
下载中心
搜优客论坛
网页制作
网络编程
数据库
图形图像
操作系统
网络应用
当前位置:
首页
>
站长学院
>
网络编程
>
ASP.NET
O/R Mapping 我们到底要什么?
作者:
佚名
出处:
网络转载
时间:
06-12
点击:
内容载入中...
欢迎向提供原创教程 华腾联合.中国
看了近一段时间cnblogs那么多关于O/R Mapping的文章,忍不住也想发表一下自己的看法。
首先我觉得O/R Mapping和面向过程没有什么关系。他的作用是
在面向对象程序设计过程中,如果涉及到对大量的对象实例进行筛选操作时,用来维护对象实例的生命周期的作用。
我来解释一下我这句话的意思。假如说我们现在有一个BBS系统,按照常理来讲:每一个帖子是一个帖子类的实例。
class
Topic
{
string
Title;
string
Content;
Author Author;
}
假如现在有人发新贴了,那么内存中会实例化出
TopicCollection.Add(
new
Topic(
"
名称
"
,
"
作者
"
,
"
标题
"
));
当要有选择的显示帖子列表的
时候我们会动态遍历帖子集合TopicCollection,找到我们需要的帖子显示出来。这就是我们所说的业务逻辑层,可是这样做有一个致命的弱点就是如果我们重起机器,或是帖子集合过大内存溢出了,我们就不能保存以前的内容,所以我们换一种方式就是将这些信息保存在磁盘上。比如:你可以写一个文本文档用自己的算法保存,或是保存在通用的数据库里面。而当我们需要读取的时候会自动加载这些信息,并将它实例化到我们的内存当中,然后业务逻辑会处理这些实例化的对象。整体过程有些像对象的序列化和反序列化。
而O/R Mapping的过程就是将对象实例化并加载信息的过程。当然这里的R(Relation)是指关系数据库的意思。
无论我们是O/R也好,R/O也罢。这都不是关键,谁说我们先做数据库再做领域模型,设计出的软件就不好了?O和R是没有关系的。他就好比:两个格式不同XML文档进行样式表转换一样。
我也看到一些人说,为了Mapping我们会多写出一些 xxxManager / xxxProvider 等等的类或者什么Save、Load的方法,好像很不面向对象并且这和领域模型没有关系。
其实不然,我们来想象一个场景:一个档案管理中心,当你把你的档案交给管理中心的时候,管理员会根据你的档案内容按一定规律(算法,比如按名字字母的顺序)放在符合条件的档案柜里,如果你因为一些原因要取走档案的时候,管理员又会根据相关条件从档案柜里将你的档案从档案柜里取出来交还给你。难道这些过程都不属于业务逻辑?
答案是肯定的。但对于这种业务逻辑我们一般封装在数据层,因为这样会提高很多效率,例如:假如我们对新闻进行筛选,要找出所有点击量大于10000的新闻列出来,按理论来说这应该是业务逻辑,我们应该把这种筛选放在业务逻辑层,具体做法我们先将所有新闻信息从磁盘中读取出来(数据库也是把信息保存在磁盘中的),然后根据这些信息实例化新闻类news,并将这些实例负值放入新闻集合类的实例中。最后遍历这个新闻集合实例的所有新闻实例,并判断其属性ViewTimes大于10000的显示出来。
好这个方式非常符合将系统分层的理论,可是这种方式的可行性可想而知(如果记录量大的化,肯定会内存溢出),所以这时我们不得不把对信息筛选的过程放入数据层(把对信息筛选的业务逻辑放入数据层)。然后将数据层计算好的结果(记录集)进行对象实例化,再将其进行其他的逻辑处理(在以数据为中心的应用中,往往这里已经没有什么业务逻辑。因为大多数的业务逻辑都是对数据的筛选。)。
不好意思说到这里好像有些走题了,而关于O/R Mapping,O和R没有任何关系,他既不属于面向对象也不属于面向过程,他只相当于一个转换方程式。领域模型和数据库在开发过程中,其实完全可以齐头并进(条件是在对需求认知一样的前提下),而O/R Mapping在其中执行转换的操作。
这是我目前对一些项目的开发认识。可能有很多不对的地方,希望大家给予批评指教。谢谢……
收藏本文:
【
大
中
小
】【
打印页面
】【推荐给朋友】【
关闭窗口
】
<< 上一篇 :
用HTML做软件UI用到的的一些技术
>> 下一篇 :
ORM的讨论
相关新闻
·
hash是如何处理冲突的
·
.Net中TextBox对于焦点的控制(二)
·
URL编码处理
·
ASP.NET页面间的传值的几种方法
·
使用.NET自带的功能制作简单的注册码
·
.net 后台的小偷程序
·
怎样从ASP.NET 2.0中读取连接字符串的
·
is 和 as 类型转换符
最新资讯
·
ASP.NET、JSP及PHP之间的抉择
·
带你走进ASP.NET(1)
·
带你走进ASP.NET(2)
·
ASP.NET效率陷阱之——Attributes
·
ASP.NET技巧:DataGrid传统分页方式
·
asp.NET自定义服务器控件内部细节
·
ASP.NET 2.0高级数据处理之数据绑定
·
ASP.NET立即上手教程(1)
站长学院
[
ASP
]
[
PHP
]
[
JSP
]
[
CGI/perl
]
[
ASP.NET
]
[
C#
]
[
XML
]
[
编程综合
]
关 键 字:
信息分类:
新闻资讯
SEO研究
网站运营
站长学院
下载中心
推荐信息
本类热点
·
ASP.NET网站开发实用代码
·
类型“GridView”的控件“GridVi
·
用window.location.href实现刷新
·
asp.net的Request对象使用方法
·
Community Server系列之十:让CS
·
ASP.net数据库连接程序实例
·
用ASP.NET开发wap的开发心得
·
.net2.0邮件发送代码
·
三层嵌套gridview 的折叠展开
·
asp.net图片加水印