我在asp.net mvc中正在做一个web应用程序。现在,我正在做很多文本信息,例如帮助文本,eula,隐私政策等。我意识到我不确定存储这些文本的最佳方式是什么。 1.直接在aspx页面中 2.在文本文件中,然后通过ViewData []将文本加载到aspx文件 3.在我的sql数据库中
如果使用选项3,我将如何设计数据库,例如eula = table x,privacypolicy = table y?
我想我只需要指出上述选项的优缺点。
答案 0 :(得分:1)
直接在ASPX页面中 - >一定不行! 。您将不得不为每个更改重新编译和发布。那太可怕了。
如果这些数据不经常更改,文本文件将使您能够使用更简单的缓存,但文本文件在很多不同方面都很糟糕。最后你将有几十个/几百个文本文件,不知道是什么引用了什么。 (因此,无论如何,您必须使用指向文件的指针来保留数据库表。)
这导致了唯一可行的解决方案,保存数据库中的所有内容。您也可以使用缓存,如果不是很多,则将所有内容存储在Application变量中,该变量将在每个iisreset中重新编制索引。
没有太多经验,但使用LocalResources可能是个好主意。这将使您(如果需要)进一步支持多语言支持。
答案 1 :(得分:0)
如果您的应用程序非常小,那么保留页面中的文本可能没问题,但只要应用程序及其背后的团队增长,这可能会成为一个问题。当文本与您的代码混合时,将文本交给专业作家,翻译,律师校对等事情将会很麻烦
将文本存储在简单的文本文件中应该适用于大多数应用程序。这里唯一的问题可能是当应用程序的一部分实际更改文本时。在这些情况下,将它们存储在数据库中可能是个好主意。
在大多数情况下,在数据库中存储文本是过度的。数据库主要提供ACID事务和结构化数据索引的好处。但是,如果您的文本没有通过应用程序进行更改,则ACID属性没有多大用处。如果这些只是要在应用程序中使用的文本片段,您将能够直接指定片段/文件的名称,因此数据所做的索引也没有任何好处。但是数据库也需要成本:大量数据可能会使缓存对于真正属于数据库的数据效率低下。事务处理会导致性能下降。因此,如果您不需要,则不应使用数据库。
答案 2 :(得分:0)
如果这些文件已经存在,并且可以在以后更改,那么最好通过文件名从数据库中引用它们。
另一方面,如果您希望文本本身存在于数据库中,那么拥有“页面内容”表可以很好地处理表示单独文本的每个元组:一个属性是文本的标识符,一个属性是全文本身。
无论您选择哪种方式,我都建议您关注DRY principle :选择一个规范易于管理的位置,并在整个应用程序中坚持使用。