ASP.NET内置用户配置文件与旧式用户类/表格

24

我正在寻求关于在ASP.NET中使用Profile功能的最佳实践方面的指导。

如何决定应该将什么保存在内置用户Profile中,或者是否应该创建自己的数据库表并添加所需字段的列?例如,一个用户有一个邮政编码,我应该将邮政编码保存在自己的表中,还是应该将其添加到web.config xml配置文件的Profile中,并通过用户Profile ASP.NET机制访问它?

我目前能想到的优缺点是,由于我不太了解Profile(它现在有点像Matrix),如果我选择使用表格路线(例如,使用SQL获取与当前用户具有相同邮政编码的所有用户),那么我可以随心所欲地做任何想做的事情。但我不知道如果我使用ASP.NET Profile是否也可以这样做。

5个回答

11

我只构建过两个使用配置文件提供程序的应用程序。自那以后,我就避免使用它了。在这两个应用中,我使用它来存储用户的信息,例如公司名称、地址和电话号码。

直到我们的客户想要能够通过其中一个字段找到用户,这种方式才有效。搜索需要循环访问每个用户的信息,并将其与搜索条件进行比较。随着用户基数的增长,搜索时间变得不可接受。唯一的解决方案是创建一个表来存储用户信息。搜索速度大大提高。

我建议将这种类型的信息存储在自己的表中。


1

用户个人资料是一个方便进行个性化定制的干净框架(也称为个人资料属性),例如iGoogle。 问题在于它并非为查询而设计,对于向公共用户分享数据也不理想(仍然可以做到,但性能较低)。

因此,如果您想增强自定义用户体验,用户个人资料是一个不错的选择。否则,使用自己的类和表将是更好的解决方案。


0

我认为最好将其用于补充数据,这些数据对用户不是至关重要的,只有在用户登录时才通常很重要。考虑一些数据,如果全部被清除,不会破坏任何重要的东西。

当然,这是个人偏好,但其他人提出了一些其他重要问题。

此外,它非常有用,因为它可以用于未经身份验证的用户,其配置文件使用匿名 cookie 维护。


0
根据我的经验,最好将个人资料中的信息保持到最少限度,只放入直接需要进行身份验证的基本信息。其他诸如地址之类的信息应该由您自己的应用逻辑保存在自己的数据库中,这种方法更具可扩展性和可维护性。

其他信息,例如地址,应由您自己的应用程序逻辑保存在您自己的数据库中。好的,这似乎是正确的方法,有人可以告诉我如何最好地将asp_用户表与此新表进行链接吗?我应该使用asp_表中的userName作为链接,userID(那个我甚至不知道如何获取的丑陋的guid)还是什么? - csmba
你也可以自己创建一个用户表,保存相同的信息,然后使用会话变量或类似的东西,在这种情况下,你将拥有完全的控制权。这次我转向了自己的用户表,我没有后悔过。 - Sean

0

我认为这取决于你需要多少个字段。据我所知,Profile 本质上是一个长字符串,在给定字段大小处被拆分,这意味着如果你有许多字段和用户,则它们不会很好地扩展。

另一方面,它们是内置的,因此这是一种简单而标准化的方式,这意味着没有太大的学习曲线,并且您可以在将来的应用程序中使用它,而无需调整到新的表结构。

自行开发允许您将其放入正规化的数据库中,从而大大提高性能,但您必须自己编写几乎所有的配置文件管理代码。

编辑:此外,配置文件未缓存,因此对配置文件的每次访问首先进入数据库(然后对该请求进行缓存,但下一个请求再次从数据库获取)

如果您正在考虑编写自己的东西,也许 自定义配置文件提供程序 可以为您带来最好的两个世界 - 无缝集成,以及您想要做的自定义内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接