我知道网站上已经有一些关于此主题的问题...
我只是想了解使用 ASP.NET Profile Provider 是否安全拥有一个流量巨大的网站?
在我看来,它的布局效率很低。您存储属性名称(它是一个字符串)和属性值(它也是一个字符串)。如果您只是尝试在个人资料中存储偶数年龄,则不必要在数据库中一遍又一遍地存储字符串“年龄”,而使用自行创建的表,您可以只添加一个标题为年龄的列,而不需要冗余?
(我只是想确保我没有遗漏任何东西,因为我对它还很陌生。)
最佳答案
配置文件提供程序故意使用 EAV ( Entity-Attribute-Value ) 设计,因为配置文件通常具有稀疏填充的模式 - 也就是说,有许多潜在的属性,但只有少数属性将用于给定的单个实体,并且所使用的少数几个实体在不同实体之间差异很大。
让我们使用一个完全任意的例子 - 假设只有十分之一的用户想要提供他们的年龄。现在将其设为专栏似乎更像是一种浪费,不是吗?
但是如果您的申请强制要求年龄怎么办?好的,该列已为每个人填充。但是,如果您需要在配置文件中添加注释“用户不想再看到这个晦涩的对话框”,该怎么办?您是否真的希望应用程序中的每个对话框都有一个列,无论用户是否希望看到它?可能不会。当您了解任何重要范围的应用程序的一次性小细节时,EAV 实际上成为更经济的选择。
总的来说,它的扩展性非常好(比您想象的要好得多)。具体而言,这并不重要 - 一如既往,使用有效的方法并在性能问题出现时修复它们。无论配置文件提供程序的可扩展性限制是什么,您都会在遇到这些限制时知道。我保证两件事 - (1) 在解决这个问题之前,你必须先解决许多你没有预料到的其他性能问题; (2) 如果您的网站获得足够的流量来破坏配置文件提供程序,那么这是一个好问题。
关于asp.net 配置文件提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1365983/