multithreading - Windows服务作为分层体系结构中的服务层

标签 multithreading windows-services 3-tier

我有一个使用分层体系结构(演示,业务和数据访问层)创建的asp.net项目。现在,我需要向项目添加Windows服务,该服务将执行后台处理。用户可以从站点注销,但是该服务将在后台运行。完成任务可能需要几个小时。我有以下问题。

  • 我可以将此Windows服务作为单独的项目包含在asp.net Web应用程序中吗?如果是这样,应该在哪里添加? Windows服务可以从业务层调用。并且该服务将与数据库进行交互。我可以将其添加为单独的服务层吗?
  • 正如我所说的,Windows服务将在后台运行,因此我可以在Windows服务的'OnStart'事件中创建线程来进行操作。我对么?我知道在“OnStart”事件中编写长时间运行的过程不是一个好习惯。这就是为什么我使用线程。但是,如果另一个用户登录到该网站,该服务将再次调用并创建新的工作线程。这种方法是否存在性能问题?

  • 谢谢。

    最佳答案

    我个人将服务放在它自己的解决方案中。我会把一个客户放在网络解决方案中。主要是因为部署会有根本的不同,并有助于保持服务API不受损坏。

    您对服务将要做什么还没有说清楚,但我希望如此。

    用户登录时,将向该服务发送通知。登录名(user_Id)

    服务中的OnStart应该启动一个监听器线程

    然后,当服务“听到”登录(User_id)通知时,它会执行类似的操作

    if (LogInTaskThread == null)
    {
      LoginTaskThread = new Task("loginTask");
    }
    

    无论如何,那种事情...

    关于multithreading - Windows服务作为分层体系结构中的服务层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21164705/

    相关文章:

    c# - Monitor.PulseAll 的正确用法?

    java - 为什么执行相同行为的线程需要不同的时间?

    c# - Process.WaitForExit 方法在 Process.Close 后抛出 InvalidOperationException

    c# - 3 层架构 - 数据层仅存储数据?

    wcf - 如何在 MVC5 WCF 中实现 3 层架构

    architecture - 新ERP(3层)的设计方法-请指教

    .net - 使用线程池和普通线程有什么区别?

    c# - Windows 服务的检测信号事件

    delphi - 如何发现我的服务的依赖项是什么?

    c - 无法理解 pthread_join()