科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件用不到140行C-sharp代码开发面向对象的数据库(下篇)

用不到140行C-sharp代码开发面向对象的数据库(下篇)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在开始深入代码的细节之前,我们需要看看我们的解决方案背后的体系结构。其基本的体系结构由两个类和一个接口构成。

作者:builder.com.cn 2007年3月2日

关键字: ZachSmith csharp C#

  • 评论
  • 分享微博
  • 分享邮件
用不到140行C-sharp代码开发面向对象的数据库(上篇)

体系结构

在开始深入代码的细节之前,我们需要看看我们的解决方案背后的体系结构。其基本的体系结构由两个类和一个接口构成:

类:

  • XmlDBState ——这是一个抽象类,包括数据库所需要的所有功能。其中有搜索、保存、删除,以及文件管理/创建功能。
  • XmlDBBase——这是一个公共类,专门用作要被保存到数据库里的对象的基类。虽然我们并不要求对象继承自这个类,但是继承自XmlDBBase会自动地实现IxmlSerializable接口并保存编码时间。

接口

  • IXmlSerializable——任何要被保存到数据库里的对象都必须实现这个接口。正如上面所提到的,如果一个对象继承自XmlDBBase,那么它就已经实现了这个接口,因此把对象保存到数据库里不需要采取进一步的操作。

既然已经搭好了基本的体系结构,我们就可以开始研究源代码,看看这个数据库是如何工作的了。

加载数据库

下面的XML(列表A)是在数据库被写入磁盘时的样子,仅供参考:

列表A

<Database>
  <XmlDB.Order>
    <Order xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Identity>76a0558b-a8c7-42e3-8f1d-c56319365787</Identity>
      <CustomerIdentity>6f5e9a2b-b68f-4b6d-9298-fbe5f135dd25</CustomerIdentity>
      <DatePlaced>2006-11-21T07:12:16.3176493-05:00</DatePlaced>
    </Order>
    <Order xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Identity>16d8f0b8-46c6-47c3-ac6b-a0b0e0852970</Identity>
      <CustomerIdentity>61cf2db4-0071-4380-83df-65a102d82ff2</CustomerIdentity>
      <DatePlaced>2006-11-21T07:12:26.0533326-05:00</DatePlaced>
    </Order>
  </XmlDB.Order>
  <XmlDB.Customer>
    <Customer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Identity>6f5e9a2b-b68f-4b6d-9298-fbe5f135dd25</Identity>
      <LastName>Cunningham</LastName>
      <FirstName>Marty</FirstName>
    </Customer>
    <Customer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Identity>61cf2db4-0071-4380-83df-65a102d82ff2</Identity>
      <LastName>Smith</LastName>
      <FirstName>Zach</FirstName>
    </Customer>
  </XmlDB.Customer>
</Database>

在本文的示例里,有两个客户和两个订单被保存在数据库里。保存在数据库的每个对象类型都被包含在一个节点里,这个节点专门用于特定类型的对象。例如,Database\XmlDB.Order (Database\[namespace].[type])节点就包含有所有已经被保存的Order(订单)对象。

在每个专用的类型节点里都有保存序列化对象的对象节点。列表B就是这样一个例子。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章