对每个会话的服务修改

时间:2015-11-10 18:44:52

标签: c# sql wcf architecture

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

enter image description here

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

enter image description here

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

  1. 以前只有一个用户可以运行多个进程 对象。现在每个用户都可以运行长进程但不同 对象。
  2. 我们在新架构中添加了回调功能 每次会话服务。
  3. 我们还计划提供用户设施 如果他希望或客户端连接,则终止该过程 闭合。

    但在尝试实现上述目标时,我们面临以下问题。

    1. 长时间执行操作,在数据库中借助多个存储过程进行,逐个从静态数据管理器类中调用。
    2. 每个SP负责在多个表中添加大约500k行。
    3. 虽然从客户端终止连接会删除服务实例,但由于数据库操作是在静态类中完成的,因此控件会卡在那里,一切都停止响应。
    4. 我知道有一个DBCommand.Cancel()方法可以停止与DBCommand相关的操作,但由于该类是静态取消,这也是不可能的。
  4. 请建议解决此问题所需的架构更改。我准备分享更多细节。

1 个答案:

答案 0 :(得分:1)

根据我的理解,您希望同时拥有多个客户端以及staticsingleton不匹配的行为。

我会纠正这个。

此致