我正在重建一个网站,并尝试使用 SOA 方法。当前网站采用 .NET 2.0 并使用开箱即用的 SqlMembershipProvider。
我们正在尝试消除与数据库的直接连接,并通过 WCF 服务层推送所有内容。我们为此使用的方法是将所有内容分开 - 有一个用于模型和接口的库,一个用于服务的库,然后是一个用于服务代理的库。
迄今为止最大的障碍是弄清楚如何管理用户身份验证及其会话。使用这种方法执行此操作的最佳方法是什么?
我们是否应该放弃 .NET 成员资格模型并采用 OpenId 之类的模型,只允许用户将其数据重新连接到新帐户?
我已经进行了一些搜索,但找不到很多关于如何管理此问题的信息,尽管我知道以前已经这样做过。
这就是我最终所做的,以防有人感兴趣。我开始使用 WCF 身份验证服务,但后来意识到它并没有给我想要的一切。我可以登录和注销,但仍然需要创建自己的注册方法和获取 MembershipUser。
因此,我进入 ServiceContracts 库并创建一个名为 IMembership 的接口。首先,我将其创建为一个类并从 MembershipProvider 继承,以便我可以获得为我生成的所有方法存根。生成它们后,我修改了存根并将其制作成界面。
然后我进入我的服务库并创建了接口的实现,这很简单,因为对于实现我只使用了 Membership.Provider...
然后在我的服务提供商客户端库中,我执行了 IMembership 接口的通常实现,也继承自 ClientBase。在它旁边,我创建了一个 WCFMembershipProvider,它实现了 MembershipProvider,并调用了我刚刚创建的 MembershipClient 中的方法。
在托管 WCF 服务的 Web 应用程序中,我在 web.config 中设置了 SQL 成员资格提供程序,然后为该服务创建了 svc 文件和端点。
在使用 Web 应用程序中,我只是将服务客户端引用添加到 svc,然后为我的 WCFMembershipProvider 设置成员资格提供程序。
还有中提琴——我在做生意。
虽然有很多重复的代码,但是效果很好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)