【问题标题】:What is the best way to store site configuration data?存储站点配置数据的最佳方式是什么?
【发布时间】:2011-03-05 08:10:41
【问题描述】:

我有一个关于存储站点配置数据的问题。

我们有一个用于 Web 应用程序的平台。这个想法是不同的客户可以将他们的数据托管和显示在他们自己的网站上,该网站位于该平台的顶部。每个站点都有一个配置,用于确定与客户相关的面板出现在哪些页面上。

系统最初旨在将每个站点的所有配置数据保存在数据库中。加载站点时,所有配置数据都加载到 SiteConfiguration 对象中,并且客户端面板是根据该对象的内容生成的。这行得通,但我发现很难应用更改请求或添加新站点,因为要筛选的数据太多,而且很难维护站点的心理模型其配置。

最近,我的任务是开发一些网站的子集,以生成 PDF 文档以供打印。我决定采用不同的方法来定义配置,而不是将配置数据存储在数据库中,而是编写 XML 文件来包含数据。我发现使用起来更容易,因为我不是读取与其他无意义数据行相关的无意义数据行,而是拥有有意义的文档,这些文档具有语义、可读信息以及由视觉上可理解的元素嵌套定义的关系。

因此,现在有了这两种存储站点配置数据的方法,我想就处理这两种方法获得在处理这个问题方面更有经验的人的意见。存储站点配置数据的最佳方式是什么?有没有比我在这里概述的两种方法更好的方法?

注意: StackOverflow 告诉我这个问题似乎是主观的,很可能会被关闭。我不想主观。我想知道下次如何最好地解决这个问题,以及有这方面行业经验的人是否可以提供一些意见。

【问题讨论】:

  • fyi - Stack Overflow 会告诉您这个问题似乎是主观的,因为它在标题中包含“最佳”一词......并且您正在征求意见,这是主观的定义恕我直言
  • “最好的方法”根据定义是主观的,用于存在太多特定情况和影响变量的问题。
  • 配置是指内容和网站结构?将这些数据放入表中没有任何问题。只要您有一个(用户)界面来执行维护(子)站点所需的任务。使用 Management Studio 不是这样做的方法。
  • @rdkleine,是的,配置站点和结构。我曾建议老板们做一个用户界面,但他们拒绝了这个想法(钱),但我会再次提出来!! @Graphain 和 @Jon,我想根据定义它是主观的,但我不想开始争论! :-)
  • 使用 SQL 维护站点要比使用 UI 花费更多的时间。时间就是金钱……

标签: asp.net configuration oop


【解决方案1】:

如果每个客户特定的配置都需要信息,最好在数据库中完成,并为其编写管理工具,以便非技术人员也可以管理它。当您需要对其进行版本控制/历史记录时,这种方式也更容易。 XML 在这方面并不总是最好的。最后,XML 也更难维护(对于非技术人员)。

您是每次都从磁盘读取 XML(性能下降)还是将其缓存在内存中?无论您选择哪种解决方案,缓存最终都会对性能产生重大影响。

Grz,克里斯。

【讨论】:

  • 我目前每次都从磁盘读取xml,但是如果需要的话很容易将数据存储在缓存中。该系统子集仅定期运行,因此目前磁盘性能并不是真正的问题
【解决方案2】:

您使用的是 ASP.NET,那么 web.config 的基本设置有什么问题(如果它是每个项目部署),那么正如您所说,自定义 XML 或数据库配置设置用于更复杂的任何事情(或者如果您有多个用户/客户部署同一个项目)?

我只会将自定义 XML 文档用于“站点布局文档”之类的东西,在这种情况下事情不会经常发生变化,并且您将拥有大量半无意义的数据(例如 23553123)。而且布局还是尽量由css来处理。

【讨论】:

  • 每个文件约为 20kb,因此将其存储在 web.config 中并不实际。我明白你在说什么
【解决方案3】:

对于我们的团队来说,XML 是一个不错的选择(app.config 或 web.config 或自定义配置文件,视情况而定),但有时最好设计配置 API 以在代码中进行配置。例如,modern IoC containers 具有带有fluent interfaces 的代码内配置 API。如果您需要配置许多彼此相似的实体或想要获得良好的人类可读性,这种方法可以带来好处。但如果非程序员需要进行配置,这将不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-21
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 2017-03-26
    • 2013-07-22
    • 2021-10-22
    • 1970-01-01
    相关资源
    最近更新 更多