我有一个使用分层架构(演示,业务和数据访问层)创建的asp.net项目。现在我需要为项目添加一个Windows服务,它将执行后台进程。用户可以从站点注销,但该服务将在后台运行。完成任务可能需要几个小时。我有以下问题。
我可以在我的asp.net Web应用程序中将此Windows服务作为单独的项目包含在内吗?如果是这样的话应该添加?此Windows服务可以从业务层调用。该服务将与数据库进行交互。我可以将其添加为单独的服务层吗?
正如我所说的windows服务将在后台工作,所以我可以在Windows服务的'OnStart'事件中创建线程来进行操作。我对么?我知道在'OnStart'事件中编写长时间运行的进程并不是一个好习惯。这就是我使用线程的原因。但是如果另一个用户登录到该网站,该服务将再次调用,它将创建新的工作线程。这种方法有任何性能问题吗?
感谢。
答案 0 :(得分:1)
我个人将服务放在自己的解决方案中。我将客户端放在Web解决方案中。主要是因为部署将完全不同,并有助于保持服务API不被破坏。
你还没有详细说明该服务会做什么,但我期待。
用户登录时,会向服务发送通知。登录(USER_ID)
服务中的OnStart应启动监听器线程
然后,当服务“听到”登录(User_id)通知时,它会执行类似
的操作if (LogInTaskThread == null)
{
LoginTaskThread = new Task("loginTask");
}
无论如何......
答案 1 :(得分:0)
如果Windows服务在后台运行且不提供外部呼叫者的任何请求,则可以将Windows服务应用程序视为无UI表示层的形式。它应该放在一个单独的项目中,并像任何应用程序一样与业务和数据层进行通信。
但是,如果您的Windows服务正在从外部程序提供呼叫,那么您可能需要将Windows服务视为服务层。
您可能希望从此处获得更清晰的图层图片 http://serena-yeoh.blogspot.com/2013/06/layered-architecture-for-net.html