对每个会话的服务修改

Service modification to per-session

我有一个系统,其中已经为特定进程设置的服务曾经有一个单一的实例模式。该服务用于 运行 一个只能为一个客户服务的漫长过程。架构如下:


现在我正在尝试为每个会话创建此 wcf 服务,以便它可以 运行 同时为两个或多个客户端进行长时间操作。因为这个过程通常需要时间。我还使用回调通道将完成百分比发送回客户端。架构如下所示:


两种架构的主要区别在于:

  1. 以前只有一个用户可以 运行 处理多个 objects.Now 每个用户都可以 运行 漫长的过程,但因人而异 对象。
  2. 我们在新架构中添加了回调功能 每个会话服务。
  3. 我们还计划为用户提供便利 终止进程,如果他愿意或客户端连接是 已关闭。

    但是在努力实现上述目标的同时,我们面临着以下问题。

    1. 耗时较长的操作,发生在数据库中借助多个存储过程,从static数据管理器class.[=43=中一一调用]
    2. 每个 SP 负责在多个表中添加大约 50 万行。
    3. 虽然从客户端终止连接会删除服务实例,但由于数据库操作是在静态 class 中完成的,因此控件会卡在那里,一切都停止响应。
    4. 我知道有一个 DBCommand.Cancel() 方法可以停止与 DBCommand 关联的操作,但是由于 class 是静态取消,所以也是不可能的。

请提出解决此问题所需的体系结构更改。我准备分享更多细节。

据我了解,您希望同时有多个客户端,并且 static 行为导致 singleton 不匹配。

我会更正。

此致