asp.net 配置文件提供程序

标签 asp.net profile-provider

我知道网站上已经有一些关于此主题的问题...

我只是想了解使用 ASP.NET Profile Provider 是否安全拥有一个流量巨大的网站?

在我看来,它的布局效率很低。您存储属性名称(它是一个字符串)和属性值(它也是一个字符串)。如果您只是尝试在个人资料中存储偶数年龄,则不必要在数据库中一遍又一遍地存储字符串“年龄”,而使用自行创建的表,您可以只添加一个标题为年龄的列,而不需要冗余?

(我只是想确保我没有遗漏任何东西,因为我对它还很陌生。)

最佳答案

配置文件提供程序故意使用 EAV ( Entity-Attribute-Value ) 设计,因为配置文件通常具有稀疏填充的模式 - 也就是说,有许多潜在的属性,但只有少数属性将用于给定的单个实体,并且所使用的少数几个实体在不同实体之间差异很大。

让我们使用一个完全任意的例子 - 假设只有十分之一的用户想要提供他们的年龄。现在将其设为专栏似乎更像是一种浪费,不是吗?

但是如果您的申请强制要求年龄怎么办?好的,该列已为每个人填充。但是,如果您需要在配置文件中添加注释“用户不想再看到这个晦涩的对话框”,该怎么办?您是否真的希望应用程序中的每个对话框都有一个列,无论用户是否希望看到它?可能不会。当您了解任何重要范围的应用程序的一次性小细节时,EAV 实际上成为更经济的选择。

总的来说,它的扩展性非常好(比您想象的要好得多)。具体而言,这并不重要 - 一如既往,使用有效的方法并在性能问题出现时修复它们。无论配置文件提供程序的可扩展性限制是什么,您都会在遇到这些限制时知道。我保证两件事 - (1) 在解决这个问题之前,你必须先解决许多你没有预料到的其他性能问题; (2) 如果您的网站获得足够的流量来破坏配置文件提供程序,那么这是一个好问题。

关于asp.net 配置文件提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1365983/

相关文章:

asp.net - 移动设备 Javascript/CSS 支持。外面有什么?

asp.net - 在没有 Global.asax 的情况下处理应用程序范围的事件

c# - 帮我找到一个适用于 asp.net 应用程序的最小摩擦日志记录解决方案

c# - Web API 验证不会使用自定义模型 Binder 触发

c# - 有效跟踪最新搜索

asp.net-mvc - 在 ASP.NET MVC 中实现自定义配置文件提供程序

asp.net-mvc - 在 ASP.NET MVC 中实现配置文件提供程序

asp.net - Asp.net成员资格配置文件的名字和姓氏(未声明。由于其保护级别,可能无法访问)