设计模式 - 使用一个服务从其他服务逻辑上获取/释放资源

时间:2011-05-14 10:42:13

标签: web-services design-patterns web-applications

我有一项服务,可以访问数据库。此服务由多个应用程序使用。 其中一个应用程序需要特殊功能。应该只有一个(管理)用户,它可以同时操作数据。此应用程序还与其他服务通信。我想用两种方法扩展第二个服务的功能:

bool Acquire()
    1. Check if an other user currently holds ownership.
        1.1 if true => return false (acquirement failed).
        1.2 if false => proceed.
    2. set ownership to client connection at server side.
    3. return true.

void Release()
    1. Check if the client connection currently holds ownership.
        1.1 if true => remove ownership of client connection at server side.
        1.2 if false => do nothing.

我的问题是:这是一个好的设计模式吗?在我看来,我不应该只为一个特殊的应用程序要求更改数据库服务。

1 个答案:

答案 0 :(得分:2)

同意,这听起来像是一个漏洞抽象。我认为将其转变为安全/授权问题会更合适。

定义一个特殊的安全令牌,一次只能授予一个用户。

现在您可以创建一个Decorator around your data access Gateway来检查该特定安全令牌是否属于当前安全上下文。

通过将问题分成不同的类,您可以遵守SOLID原则。