【问题标题】:What is a good pattern to load data and perform various checks at application start? (desktop)在应用程序启动时加载数据和执行各种检查的好模式是什么? (桌面)
【发布时间】:2010-08-25 16:18:54
【问题描述】:

我有一个应用程序需要通过 Web 服务调用加载数据并执行各种权限和数据检查。相当典型。我目前在应用程序启动时在后台执行此操作,但是它是一个向导类型的应用程序,因此在所有这些完成之前用户不能做太多事情。如果在执行此操作时出现任何问题,我想向用户显示一条有用的消息(您“缺少权限 x”或“无法检索 y”)。

对于以下内容,请理解我可以改变我做某事的方式,但我无法改变我需要执行的步骤。这也被简化了。

一个典型的项目可能是这样的。我需要检索用户所属的组列表。但是,首先我需要检查用户是否有权查看此组列表,否则其他呼叫将失败。获得列表后,我需要检查他们在每个项目中是否具有某些权限并丢弃那些不适用的权限。如果他们在任何组中都没有权限,请通知用户。

最初,我在 LoadAndCheck() 类型调用中包含所有内容,以计算出我需要的所有各种项目。显然,这是一个大而笨重的东西。

然后我将每个步骤分解为模式,其中每个项目都在接口后面的类中

interface IInitialize {
    bool InitializeAction();
    void OnFailure();
}

(即 CheckThisPermission、LoadThisList、CheckThatPermission)。每个类执行一个小动作,如果该动作失败(加载数据)或错误(权限检查),它包含通知用户问题的步骤。

然后我可以循环遍历这些类并在一个步骤失败时,不执行以下步骤并配置一些内容以通知用户。如果我确定这种模式,这也适用于 DI。

然而,这种模式感觉有些不对劲,尽管它比一个大电话中的所有东西都要好。也许这只是我给事物起的名字。然而,我的大脑被消灭了,我没有想出更好的办法。

那么在启动应用程序时,你有什么好的模式可以做类似的事情吗?

【问题讨论】:

    标签: c# wpf desktop-application


    【解决方案1】:

    我个人有一个 SecurityManager 静态类,我调用它来检查某些类型(组/项目/用户/等)的方法,例如

    HasTradePermission(PermissionType type, User user, Trade trade);
    HasInvoicePermission(PermissionType type, User user, Invoice invoice);
    

    只有在这个方法中我才开始调用是组的一部分/什么组/这个组有这个和这个权限等,所以就应用程序所知,它与之交互的只是“HasPermission”对象,因此在我的应用程序中,我只是迭代例如交易,并调用 HasTradePermission。

    在这些具有权限的对象中,我将获取用户所属的组列表,并检查是否与 TradePermissionGroups 等中的组之一匹配。

    【讨论】:

      猜你喜欢
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 2019-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多