Microsoft ObjectSpaces

Microsoft Excel Object Microsoft Excel Object Microsoft Excel Object 立即下载
Microsoft ObjectSpaces   这是一个在几年前就让众多.NET guy伸长脖子激动不已的技术。就作者来说,那个时候,只要一提起这个话题,一般都是在J2EE guy的嘲笑声中悻悻而归,恨不能自己也搞个ENB(相对EJB)或者NCMP(相对CMP)什么的。    终于,我们可以在.NET Framework 1.2(可在VS.NET 2004Whidbey或Yukon中找到,目前都是Beta版本)中一睹其“芳容”了J。    首先,让我们看看用ObjectSpaces写出的代码是什么样子(依然使用上面的employee例子):    // 初始化ObjectSpace     SqlConnection conn = new SqlConnection("Data Source=localhost;     Integrated Security=SSPI; Database=Northwind");     ObjectSpace os = new ObjectSpace("map.xml", conn);     // 根据EmployeeID返回其Title     Employee oEmp = (Employee)os.GetObject (     new ObjectQuery(typeof(Employee), "ID = 1"));     // 注意:实际字段名为:EmployeeID     string strTitle = oEmp.Title;     ……     // 根据 City 返回所有符合条件的 Employee     ObjectSet oSet = os.GetObjectSet(     new ObjectQuery(typeof(Employee), "City = '”Seattle'"));     // 注意:返回的不是DataTable,而是对象集合    foreach (Employee oEmp in oSet)     {     …… // 注意:在这里可以对oEmp做任何操作    }  针对上面第二段代码,还有一种解决方案,就是以ObjectReader替代ObjectSet,这其中所包含的差异,类似于ADO.NET 1.0(包含ObjectSpacesd的ADO.NET又称为ADO.NET 2.0)中的DataSet / DataTable与DataReader间的不同(不得不佩服Microsoft在前后一致性上表现出的老谋深算J)。    仔细分析上面的代码,就可以发现它和前面讨论的OJB有惊人的相似点(OJB中作者只画了基本类图,但足可看出这种思想上的接近)!    例如:ObjectSpace类基本上提供了OJB中的QueryFacade功能;ObjectQuery类基本上提供了OJB中的Criteria功能;同时,两种解决方案又不约而同的使用了配置文件来存储O/R Mapping信息;而应用程序一般也就通过这2个类进行数据操作,非常方便。稍微有些区别的可能是在数据返回格式上(这一点,ObjectSpaces考虑得更细致,可以参考上面的代码),但这已经对实际的代码实现影响不大了。    如果将ObjectSpaces下的调用代码与前面给出的那段在ADO.NET下撰写的代码作个比较,不难看出,ObjectSpaces给出的代码更易阅读和理解,就算不熟悉ADO.NET整体架构的开发人员,也可轻松上手(唯一涉及RDBMS的代码只有建立数据库连接时需要)。对于已经熟悉ADO.NET或曾接触过O/R Mapping(如:J2EE下的Hibernate)的朋友来说,真可谓小菜一碟!    从.NET Framework 1.2文档中可以知道,ObjectSpaces总共提供了3个命名空间,整体结构非常清晰:    System.Data.ObjectSpaces     System.Data.ObjectSpaces.Query     System.Data.ObjectSpaces.Schema     ObjectSpaces、Query已在上面的代码中见识过,从名字中可以猜出,它们主要负责向外提供基本访问接口(如查询、增 / 删 / 改等)和解析各种查询条件(如对象过滤等),Schema命名空间则主要用来操作O/R Mapping配置文件,并为其它两个命名空间中的类提供服务。    在ObjectSpaces中,O/R Mapping配置文件主要指map.xml,这个文件的名字是可以随意更换的,比较类似OJB中的repository.xml。另外两个分别描述数据库结构和对象结构的配置文件也非常重要:RSD.xml(Relational Schema Definition),OSD.xml(Object Schema Definition)。可以将它们理解为Typed DataSet中的XSD文件,没有它们,所有的数据 / 对象Mapping和Validation都将是“非法”的J!    本文中,作者不准备对ObjectSpaces来个深度探索,也不会提供什么Sample说明其优越性,这方面,.NET Framework SDK早已为大家提供了丰富套餐。    作者只是希望,如果从DAL的角度来分析,ObjectSpaces技术能为我们带来什么,是否意味着从此告别DataReader / DataSet,抑或为开发人员带来了新的烦恼?    好处不多说,仅举数例即可明了:    (1)  ObjectSpaces全部采用对象方式访问数据,大大缓解了很多开发人员的SQL(或者说RDBMS)恐惧症;    (2)  对于比较简单的数据库结构变化,只需要修改配置文件即可,无需重新编译代码(较之OPF中将映射关系以.NET Attribute方式封装于代码中,显得更加灵活、方便);    (3)  对于比较复杂的数据库结构变化,由于只涉及对象操作,所以修改的工作也要比以前简单许多;    (4)  采用了O/R Mapping配置文件后,数据库设计与DAL开发可以分别进行,相互的影响也降到了最低点;    不足则是我们更须关注的话题:    (1)  目前版本不支持中文(永远的话题J)查询,不爽!    (2)  当前版本仅支持SQL Server 2000以上版本的数据库系统,弱(这是个很耐人寻味的限制,有兴趣的读者不妨想想到底是什么原因)!    (1、2引自.NET Framework SDK Document,就这两点已排除了很多跃跃欲试的朋友。而作者参与的.NET项目虽不受1影响,但由于经常使用Oracle,就不得不暂时忍痛割爱了J)    (3)  性能问题。虽然ObjectSpaces也提供了类似DataReader的功能(ObjectReader),但毕竟需要进行一次数据强类型填充,无论如何会有损失,如果返回数据量变大,将是一个不得不考虑的问题;    (4)  还是性能问题。map.xml是个好东东,但如何优化对它的访问以及进行正确的Validation(基于RSD.xml、OSD.xml)毕竟需要时间,甚至在某些时候(数据库结构比较复杂),这会造成比第3点更为严重的后果;
Microsoft Component Object Model (COM)介绍 目的 COM是一个独立于平台的,分布式的、面向对象的系统创建二进制软件组件,这些组件可以进行交互。微软的COM是基础技术OLE(复合文档)和ActiveX(网络组件)技术,以及其他人。 在适用情况下 COM对象可以创建各种编程语言。面向对象的语言(如C++,提供编程机制,简化的实现COM对象。这些对象可以在一个过程中,在其他进程,甚至在远程机器。 阅读详情

相关推荐

ObjectSpace 基础

一、             O/R Mapping框架1、   O/R Mapping介绍在我们开发应该程序的时候,总是要跟很多数据打交道,为这些处理主要是围绕这数据的查询于存储。对于要处理高可靠性和一直性数据的时候我们一般采用数据库,例如:SQL Server。我们都知道SQL Server等数据库都是建立在关系模型之上的,而现在我们大部分所使用的语言(C#和VB.NET,Java)都

simonezhlx的专栏 2059

找到一些工具

找到一些工具 有人问我objectspace在哪下的,我把陶清网站中的一部分摘过来了: objectspaces 是微软提供的数据持久层框架,这个版本已经两年多了,一直没有什么发展,但最近微软推出的vs.net 2004 pdc版(测试版)中包含了这个东东,可见微软将继续发展此一工具。这两个安装文件我做了修正,使其能在.net ...

weixin_30339457的博客 90

Microsoft ObjectSpaces(O/R Mapping)

Microsoft ObjectSpacesobjectspaces是个orm 工具,这个orm应该是object-relational mapping 而不是object rule modal,其主要目的就是为了简化数据库和对象之间的映射。连接 http://groups.msn.com/objectspacesobjectspaces类似于jdo(jdo是java的一个orm工具),在pdc版

1333

A First Look at ObjectSpaces in Visual Studio "Whidbey".

ObjectSpaces是将集成在Whidbey中的O/R Mapping组件。 具体参见: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnadonet/html/objectspaces.asp 即将release的ObjectSpaces暂时只支持SQL Server 2000 &amp...

dengxuanka1837的博客 120

有关O/R Mapping的一些信息

使用O/R Mapping的理由 Traditionally, object oriented business objects and relational databases have differing ways of structuring data. As a result of this impedance mismatch, developers are force...

weixin_30724853的博客 159

剖析 .Net 下的数据访问层技术

l 引言自从 .NET 真正走入开发人员那天起,“效率”两个字就一直成为众多程序员津津乐道的话题。无论是从开发模式(Cross Language)、系统框架(.NET Framework),还是各种使用方便的工具(VS.NET),无一不体现出了它的胜人一筹。同时,在另一方面,.NET 是否可以真正胜任企业级应用(Enterprise Application)开发的重任,却依然争论不断,褒贬不一。通

dajidali的专栏 944

ORM的一些产品

 试用 DeKlarit 4.2 [过于商业,而且要钱,是否要考虑试用?] Castle ActiveRecord 实现对NHibernate的封装,用Atrribute代替配置文件,避免复杂的配置文件编写 DAAB 微软Enterprise Library的一个应用程序快iBATIS.NET 分为DataMapper 和 DataAccessGrove 免费的支持VS

火山赵哥的专栏 594

O/R Mapping有感 (转载)

一、O/R Mapping简介目前大多数项目的实体对象的数据是存储在关系型数据库中的,开发时要求开发人员对SQL语句、语法、规则等必须很熟,在很多情况下,开发人员需要手写SQL语句,同时还得考虑事务处理、逻辑分析等等问题,导致整个项目的SQL语句到处都是,这对程序的可读性、可维护性都带来了阻碍。同时,当新项目加入时,很多地方又不得不重新coding一些大而复杂的相关代码,这样又何来可重用之谈呢?程...

编程开发资料库 91

剖析 .Net 下的数据访问层技术(四)

 Ø        Microsoft ObjectSpaces这是一个在几年前就让众多.NET guy伸长脖子激动不已的技术。就作者来说,那个时候,只要一提起这个话题,一般都是在J2EE guy的嘲笑声中悻悻而归,恨不能自己也搞个ENB(相对EJB)或者NCMP(相对CMP)什么的。终于,我们可以在.NET Framework 1.2(可在VS.NET 2004Whidbey或Yuk

zhangxuefeng的专栏 1227

.NET 的对象关系持久化机制(1)

<!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--><script type="text/javascript"

zgqtxwd的专栏 242

O/R Mapping 研究报告

OR Mapping 研究报告  1. 业务实体层的设计方案选择   1) 业务实体层的作用   一般的应用程序分层的结构如下: 可见,在分层的时候,我们会增加一个实体层,它的作用如下:   a. 将显示数据和实际的存储区域隔离,保证了业务的独立性,提高了可重用性。   b. 在业务层和表现层之间传递数据。(如果没有实体层的话,我们需要把表的每个字段作为一个参数在它们之间传递,如果修改的话,将

lxh的专栏 2035

微软获得O/R映射技术专利 业界担忧阻碍技术进展

一组微软员工申报了O/R映射技术的专利。该专利将对业界现有的O/R映射产品造成怎样的影响目前尚不清楚,但有业界专家担忧微软将借此专利打压竞争对手。 这份专利档案是被网友无意间在专利信息查询网站FreshPatents.com上找到的,点此可以浏览原文。该专利的用词非常宽泛,摘译如下:“本专利针对一个数据映射体系结构,用于在两种或多种数据来源之间彼此映射,而不必修改元数据或者数据来...

99

技术解析:到底什么是 O/R Mapper

技术解析:到底什么是 O/R Mapper (2004.01.07) 来自:Donews 来源:霍炬 原创-IT 到底什么是 O/R Mapper 为什么要翻译这个? 一次和一个群里面的朋友聊天,有人说最近发现了新的设计数据库方法,就是把数据库的列和对象属性一一对应,这样设计很方便。我说寒,那有这么容易的,实际情况复杂去了,怎么能一一对应。 然后老兄大骂了我不懂,...

weixin_30391339的博客 120

享受NHibernate

我是从打开始做程序那天起(92年了吧)就用微软的东西的,从QBasic、Foxpro、VB、VC到.Net,懒惰的“享受”微软提供的一切,微软之外的东西几乎都不关心,包括当年的Java浪潮。那时候的思想就是“用开发工具写代码就是做软件”。可是后来,作的东西也越来越象样,才发现微软给的东西有时候真别扭!于是乎开始正经学习软件工程和面向对象的好多东西,这样开始接触一些J2EE领域的东西,才开始发现微软

孔夫子在思考 1319
上一篇: About O/R Mapping
下一篇: 用Nhibernate实现数据的添加、删除、修改
kagar
博客等级 码龄21年 4粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值