我正在重写一个网站,该网站必须从通过远程对象访问的第三方系统中提取其用户数据数据。出于标准化的考虑,我实现了一个用于身份验证的自定义MembershipProvider和一个用于授权的自定义RoleProvider,但我现在正在考虑处理配置文件数据的最佳方法。我见过的大多数建议都表示如果可能的话,使用ProfileProvider模型来处理配置文件数据,但它的设计似乎与我必须连接的系统不能很好地融合。
最大的问题是ProfileProvider坚持Profile是一个对象,它作为一个单独的实体进行操作。对于基于SQL的提供程序来说,这可能很好,但调用远程对象是一项非常昂贵的操作。如果我调用Profile.FirstName,GetPropertyValues看起来像是发送了一个包含配置文件中定义的每个对象的SettingsPropertyCollection。对于本网站,这将包括多组地址信息,订单信息,出勤信息和其他内容。一次性提取所有这些信息对于表现来说是凶残的。它看起来似乎可以通过在每个SettingsPropertyValue对象上使用IsDirty标志来完成目标保存,但前提是它只是一个基本类型......大部分属性都没有。
我是否理解正确?如果所有ProfileProvider提供的是“返回此配置文件”或“保存此配置文件”,则延迟加载似乎不可能,并且性能损失太大。如果我放弃了配置文件模型,那么处理所有配置文件数据的替代方法是什么?我应该只使用自己的会话支持机制吗?