【问题标题】:Pros and Cons of Fluent and XML ConfigurationFluent 和 XML 配置的优缺点
【发布时间】:2016-03-05 00:08:47
【问题描述】:

如果您要使用一些第三方库(logging、orm、di 等)开始一个新项目,您更愿意通过使用流畅接口或 XML 文件编程来配置所有这些库吗?

您会使用仅支持其中一个选项(Fluent 或 XML)的库吗?还是您更喜欢能够让您在多种配置策略之间进行选择的库。

对于喜欢代码的人,以这个为假设示例(用 C# 编写)。

这是流畅的配置:

LogConfiguration.ConfigureStorage()
   .ForDatabase("CommonDB")
     .AsMsSqlDatabase()
     .WithConnectionString("server=(local); database=Northwind; Integrated Security=true;")
     .AsDefault();

这是 XML 配置:

<logging>
    <database name="CommonDB" provider="MSSQL" connString="server=(local); database=Northwind; Integrated Security=true;" default="true" />
</logging>

最后,Fluent 和 XML 配置的优缺点是什么?

到目前为止,我们已经做到了:

代码中的流畅配置

优点

  • 编译器评估的强类型
  • 条件配置

缺点

  • 构建后无法重新配置

XML 配置

优点

  • 能够在部署后轻松更改

缺点

  • XML 很冗长
  • 更容易出现输入错误

【问题讨论】:

    标签: configuration-management fluent-interface xml-configuration


    【解决方案1】:

    我倾向于将 xml 用于我可能想要在构建后更改的属性(例如连接字符串、记录器)

    我更喜欢代码中的强类型(编译)流式配置,例如仅在开发期间更改的 NHibernate 映射。

    【讨论】:

      【解决方案2】:

      如果我正确理解你的流利,你的意思是在代码中?如果是这样,那么我肯定会选择 XML。如果流利的意思是纯文本文件,那么我仍然会选择 XML。 优点:

      • 可读性
      • 自我记录标签(当然,如果您创建这些标签;))

      缺点:

      • 文件长度,但我不会打扰

      目前我所有的项目都是基于 XML 的。

      【讨论】:

      • 您可以通过代码中的配置获得相同(甚至更好)的可读性,以 FluentNHibernate 和 .hbm.xml 文件之间的差异为例。在这种情况下,我发现 Fluent 方式更容易理解。
      • 在示例中作者提到了一些重要的东西 -> 数据库配置。在这种情况下,XML 绝对是更好的方法。而hibernate实体配置,我也放在源码中。问题是作者的真正意思是什么?配置的哪一部分?
      • 我是作者 :) 我对您的回答的评论是关于可读性而不是可维护性。当谈到部署后更改配置(如连接字符串)时,我也同意 XML 更好。
      • 对不起,我错过了你的用户名 ;)
      【解决方案3】:

      我会说 XML 配置可能比 Java 配置更简洁,甚至更简单。

      看我对比the same config on XML and on Java DSL in Spring Integrations's wireTap config

      此外,经验不足的程序员可能更熟悉 XML 配置。因此,将来维护此类配置的努力可能会减少。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-06-09
        • 2011-03-06
        • 2012-05-07
        • 2013-07-13
        • 2010-09-20
        • 2012-03-18
        • 2010-11-03
        相关资源
        最近更新 更多