zoukankan      html  css  js  c++  java
  • 自动化 object <> xml

       .NET提供了Soap序列化的方式可以实现 object <-> xml ,但是它有三个缺点:
    (1)它要求object 必须打上[Serializable]标签,这是强侵入性的。
    (2).NET的Soap序列化与程序集的版本紧密关联,如果object的class定义没有发生变化,而定义该class的程序集版本发生了变化,那么反序列化(xml->object)可能就会失败。
    (3).NET的Soap序列化得到的xml中带有太多对我们来说无关紧要的信息,这使得xml结果的个头很大。

       ESBasic.Configuration.SpringFox类提供了更加灵活的 object <-> xml 自动化实现。SpringFox 用于将object 与 xml字符串相互转换。XML大纲遵循Spring.net的object配置大纲。
       (1)将转换object的类型的所有属性。
       (2)除了支持IList<>,将忽略其它集合和数组类型的属性。
       (3)可以转换内嵌的自定义简单类型,但不支持循环对象引用。

       下面是SpringFox类的类图。

       应用SpringFox的一个非常有用的场合就是配置文件(xml)与配置object之间的相互转换,有了SpringFox,我们不需要在手动打造解析和生成配置文件了。ESBasic.Configuration.AgileConfiguration类借助SpringFox封装好了这些功能,你的配置object只要从AgileConfiguration继承,就可以拥有自动化与XML之间同步信息的功能。

       静态的AgileConfiguration.Load 将读取XML配置文件并返回对应的配置Object,Save方法将当前的配置object保存到目标xml文件。
       比如我们的配置object的class定义如下,

        public class AppConfiguration : AgileConfiguration
        {
            
    #region Port
            
    private int port = 6600;
            
    public int Port
            {
                
    get { return port; }
                
    set { port = value; }
            } 
            
    #endregion

            
    #region ServerName
            
    private string serverName = "";
            
    public string ServerName
            {
                
    get { return serverName; }
                
    set { serverName = value; }
            } 
            
    #endregion

            
    #region Url
            
    private string url;
            
    public string Url
            {
                
    get { return url; }
                
    set { url = value; }
            } 
            
    #endregion
        }

       转换该类型的某个object成xml后的结果如下所示:

    <object type="XmlFoxTest.AppConfiguration,XmlFoxTest">
      
    <property name="Port" value="6600" />
      
    <property name="ServerName" value="AppliactionSystem" />
      
    <property name="Url" value="http://www.springframework.net/" />
    </object>

       最后给出一个使用ESBasic.Configuration.AgileConfiguration来进行配置的应用程序的例子,可以点击这里下载,运行一下例子,并研究一下源码,
    你就知道如何使用ESBasic.Configuration.SpringFox和ESBasic.Configuration.AgileConfiguration了。ESBasic.dll可以从下载的源码的文件夹中获得。

  • 相关阅读:
    Flask 【第三篇】使用DBUtils实现数据库连接池和蓝图
    Flask 【第二篇】Flask基础
    Flask 【第一篇】Flask简介
    Django 【第二十五篇】Django admin源码解析
    Django 【第二十四篇】Django admin简单使用
    Django 【第二十三篇】优化查询
    Django 【第二十二篇】ModelForm
    Django 【第二十一篇】中介模型以及优化查询以及CBV模式
    Django 【第二十篇】后端CORS解决跨域问题
    查询续与ajax
  • 原文地址:https://www.cnblogs.com/zhuweisky/p/661016.html
Copyright © 2011-2022 走看看