【问题标题】:How to save structured data on ASP.NET MVC side如何在 ASP.NET MVC 端保存结构化数据
【发布时间】:2014-10-16 18:51:05
【问题描述】:

在我们的项目中,我们有一些实体,比如类别和基本信息:ID、名称、描述等。保存在数据库中。但是在 MVC 方面,每个类别都可能有一些前端特定的属性:css 类名、徽标 URL 等。而且我们支持本地化,因此每个语言环境都有不同的类别集。目前所有前端特定的东西都保存在 MVC 端的 JSON 文件中,具有以下结构:

  • zh
    • 类别1
      • css 类名
      • 徽标网址
    • 类别2
      • css 类名
      • 徽标网址
    • 类别3
      • css 类名
      • 徽标网址
    • 类别4
      • css 类名
      • 徽标网址

它在少量数据时很好,但随着添加新的语言环境和类别属性而变得更大,所以现在很难支持它。

我认为可能存在一些机制来在 MVC 端存储一些结构化信息。它的存储方式无关紧要,但它应该允许:

  • 易于访问
  • 易于管理(添加/删除/编辑)

【问题讨论】:

  • 您的数据库是否也无法将此信息作为用户配置文件的一部分保存?
  • 我们不想在 DB 中有前端相关的东西
  • 如果您不想使用数据库,可以在App_Data 文件夹中使用xml 文件,并使用XDocumentLINQ to XML 读取和写入数据

标签: asp.net-mvc json database asp.net-mvc-4 code-first


【解决方案1】:

回答您的问题:我认为 ASP.NET MVC 没有为此提供概念。

不过,据我了解,您是在问一个一般的应用程序设计问题:我可以在哪里存储我的 UI 特定信息?由于您不想将其与您的实际数据混合,据我所知,您需要将其存储在其他地方。这是事实。 ;)

我认为有不同的方法,保存这些信息的方式和位置,各有优缺点:

文本文件(JSON、XML 等)

优点:

  • 几乎没有实施工作
  • “易于”访问(见缺点)
  • 架构更改后易于调整

缺点:

  • 您需要对服务器进行物理访问,或者至少有机会将其上传到服务器。根据您的环境,您可能没有这个。
  • 可能会变得一团糟(这就是你要纠正这篇文章的原因,对吧?)
  • 容易出错(我的意思是,您对文本文件进行了哪些验证?)

数据库(现有的或新的,包含 GUI/应用程序相关信息)

优点:

  • 干净且结构化的架构(并且您正在尝试保存您所说的结构化数据)
  • 所有数据都在数据库中(= 不在网络服务器的硬盘上),这使得迁移、更新等变得更加容易。
  • 听起来比编辑文本文件更好,但这是我个人的看法

缺点:

  • 实施工作量大(您需要创建表单来添加、编辑和删除项目等 - 除非您手动将数据添加到数据库?)

字符串资源 (resx)

这种接缝位置很合适,因为您要存储与语言相关的信息,并且显然可以在生产期间更改而无需重新编译,具体取决于您的项目结构: Editing resource files without recompiling ASP.NET application

很难说,你想要什么,需要什么,因为这也取决于你公司的政策等等。 另一个因素是,这些数据多久更改一次,谁应该能够更改它?当您谈论 CSS 类和 URL 时,这听起来像是技术人员所做的事情,但您永远不知道..

我想我会选择一个包含 GUI 相关内容的数据库。如果你不能将它与实际的应用程序数据混合,为什么不应该为前端明确地创建一个包含数据的新数据呢?也许会有或已经有比你所指的更多的信息,也可以去那里。

如果数据库不是选项,我将创建一个包含您需要的结构的可序列化(缓存和单例)类,然后将 XML/JSON 存储在文件系统中。如果你有时间,你甚至可以创建一个 UI 来编辑这个类/文件。我的意思是,如果只有技术人员在编辑这个,那么它不需要任何花哨的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-02
    • 2010-12-01
    • 2019-05-18
    • 2019-09-29
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    相关资源
    最近更新 更多