C# 对于不经常更改的web应用程序,存储本地数据的首选方法是什么?

C# 对于不经常更改的web应用程序,存储本地数据的首选方法是什么?,c#,asp.net,azure,linq-to-xml,C#,Asp.net,Azure,Linq To Xml,我有一个自定义的ASP.NET 4 web应用程序,当前正在Windows Azure上运行。有一大组数据数千个条目,每个条目都有一个键值和一个1-3句的描述,在过去25年中很少更改两次,我需要能够在下拉控件、网格等中显示为应用程序的一部分 我认为将数据存储在数据库中是没有意义的,因为它几乎不需要更改,并且在每个页面上都会发送几个句子。我正在评估通过LINQtoXML访问的XML文件或资源文件。可能需要对字符串进行本地化,我认为这将转向资源文件,但由于涉及到业务逻辑,我有时还需要根据各种属性特定

我有一个自定义的ASP.NET 4 web应用程序,当前正在Windows Azure上运行。有一大组数据数千个条目,每个条目都有一个键值和一个1-3句的描述,在过去25年中很少更改两次,我需要能够在下拉控件、网格等中显示为应用程序的一部分

我认为将数据存储在数据库中是没有意义的,因为它几乎不需要更改,并且在每个页面上都会发送几个句子。我正在评估通过LINQtoXML访问的XML文件或资源文件。可能需要对字符串进行本地化,我认为这将转向资源文件,但由于涉及到业务逻辑,我有时还需要根据各种属性特定的键值或其他属性查询数据,我相信使用LINQ会更容易


有人对这里用什么有什么想法吗?也许还有其他选择,我当然也会考虑这些。。。谢谢

我不会因为数据没有变化就排除数据库的可能性——假设Azure允许,像SQL CE或SQLite这样的轻量级数据库可能工作得很好

也就是说,您提到的从键映射到短字符串的其他因素,本地化的可能性,作为UI的一部分显示,使资源文件看起来是最好的方法


然而,基于资源字符串运行查询似乎有点奇怪-我相信这是可能的,但是运行任何类型的查询,例如包含“foo”的give me all resource string,都会在您本地化任何内容时中断。

您可以使用Windows Azure表。它快速可靠,部分支持LINQ。查询运算符可用于Azure上的LINQ。此外,如果需要本地化,则可以使用与PartitionKey相同的表和区域性。此外,在放大或缩小时也不会出现问题,因为存储对所有节点都是公用的


WindowsAzure表的一个选项可能是一个专用容器,其中包含一个通过LINQtoXML访问的XML文件。但是我更喜欢第一种变体。

为什么不将XML文件存储在资源中?这将使您同时拥有两个优点:简单的打包、快速访问、LINQ和本地化

然而,如果您已经在那里托管了一个数据库,我不会排除SQLAzure。对它的访问速度很快,而且只要已经部署了数据库,就不必支付任何额外费用,无论您多久连接一次数据库。ATS稍微慢一点,尽管它的可扩展性更强,但只要你去ATS做几乎任何事情,它都会花费你几分之一便士


总的来说,有十几种方法可以做到这一点,所有的方法都可以。如果性能是您最关心的问题,那么通过资源将其嵌入到应用程序中可能是最好的方法。如果灵活性和部署是您最关心的问题,那么SQL Azure可能是最好的方法。

鉴于数据不太可能更改,为什么您更喜欢Azure表?似乎成本会比本地磁盘上的文件更高,访问速度也会更慢,我缺少了什么吗?