• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#应用XML作为数据库的快速开发框架实现方法

C#应用XML作为数据库的快速开发框架实现方法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c#xml数据库,c#xml入门经典,c#读取xml,c#读取xml文件,c#解析xml字符串等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了C#应用XML作为数据库的快速开发框架实现方法。分享给大家供大家参考。具体如下:

背景

我经常应用C#开发一些小的桌面程序,这些桌面程序往往有以下几个特点:

① 程序比较小,开发周期很短。
② 程序的数据量不大,多数情况下不超过1万行记录。
③ 对程序的性能要求不高。
④ 程序并发很少或者基本没有。
⑤ 尽量程序部署简单。

因为C#程序很多情况下都是CURD,结合上面的需求,我一直考虑做一个简单的框架,以达到快速开发的目的。应用XML序列化(XmlSerializer)功能,我开发了一个简单符合上面要求的底层框架。

框架思路

我准备用XML文件作为数据存储,为了保证数据同步,同时在内存中存储一份数据,每次操作时,都是操作内存中的数据,操作完之后再同步到数据库中。
另外,为了保证框架的易用性,我把底层实现写成了一个泛型类,所有操作类继承此泛型类。

框架功能描述

框架主要包括以下几个功能:

① 应用XML文件作为数据库,不依赖其他数据库系统。
② 对外提供基本的CURD功能。
③ 减少配置,做到0配置。

数据会存储在运行目录下面的data目录下,数据文件可以由开发者指定,也可以采用默认数据文件。

框架应用示例

如何应用框架进行开发呢?我把框架打成了一个DLL文件,开发项目时,需要引用这个DLL。开发者每定义一个实体类,需要对应定义一个操作类,此操作类需要继承我的泛型操作类。

注意:实体类需要有一个string类型的ID,我一般用GUID
实体类示例代码:
{
    public class CodeEntity
    {
        public string Id { get; set; }
        public string Key { get; set; }
        public string Lang { get; set; }
        public byte[] RealContent { get; set; }
    }
}</div>
我把操作类写成了单例模式,操作类示例代码:
{
    public class CodeBll : Wisdombud.xmldb.BaseXmlBll<CodeEntity>
    {
        private static CodeBll inst = new CodeBll();
        private CodeBll() { }
        public static CodeBll getInst()
        {
            return inst;
        }
    }
}</div>
如何应用:
XML文件的内容
<ArrayOfCodeEntity xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <CodeEntity>
    <Id>1</Id>
    <Key>符号</Key>
    <Lang>C#</Lang>
    <RealContent>e1</RealContent>
  </CodeEntity>
  <CodeEntity>
    <Id>2</Id>
    <Key>符号1</Key>
    <Lang>C#</Lang>
    <RealContent>e1</RealContent>
  </CodeEntity>
</ArrayOfCodeEntity></div>
由上面的例子可以看到,应用此框架进行开发还是非常容易的。

总结

框架优点:

① 快速开发,完全不需要考虑底层
② 易于部署
③ 框架代码比较短小,总共200行左右。

框架缺点:

① 效率低下
② 未考虑并发,非线程安全

后续还会介绍如何应用这个框架开发一个代码片段管理系统

附:框架源代码
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using System.Xml.Serialization;
namespace Wisdombud.xmldb
{
    public class XmlSerializerBll<T>
    {
        private static XmlSerializerBll<T> instance;
        private string dbFile;
        public string Dbfile
        {
            get { return dbFile; }
            set
            {
                if (!string.IsNullOrEmpty(value) && !value.Equals(dbFile))
                {
                    this.entityList.Clear();
                }
                dbFile = value;
                this.ReadDb();
            }
        }
        private List<T> entityList = new List<T>();
        private XmlSerializerBll()
        {
            this.SetDbFile();
            this.ReadDb();
        }
        private void SetDbFile()
        {
            string folder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "data");
            try
            {
                if (Directory.Exists(folder) == false)
                {
                    Directory.CreateDirectory(folder);

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#应用XML作为数据库的快速开发框架实现方法

相关文章

  • 2017-05-28C#预定义数据类型之值类型和引用类型介绍
  • 2017-05-28C#实现主窗体最小化后出现悬浮框及双击悬浮框恢复原窗体的方法
  • 2017-05-28C#将DataTable转换成list的方法
  • 2017-05-28C#中WebClient实现文件下载
  • 2017-05-28c#定时运行程序分享(定时程序)
  • 2017-05-28C#判断指定驱动器是否是Fat分区格式的方法
  • 2017-05-28C#开发的人脸左右相似度计算软件源码分析
  • 2017-05-28C#切换鼠标左右键习惯无需控制面板中修改
  • 2017-05-28c#多线程编程基础
  • 2017-05-28C#设置右键菜单的方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#将布尔类型转换成字节数组的方法
    • c#异步读取数据库与异步更新ui的代码实现
    • c#取得控制台应用程序根目录
    • C#中几个未知的Visual Studio编码技巧分享
    • C#获取硬盘编号的方法
    • 学会使用C#异常
    • 深入解析C#中的abstract抽象类
    • c#分页读取GB文本文件实例
    • C#实现通过ffmpeg从flv视频文件中截图的方法
    • C#操作word的方法示例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有