2014-01-16 206 views
0

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

  1. 我能有这个窗口服务作为我的asp.net web应用程序单独的项目?如果是的话,它应该被添加?此Windows服务可能会从业务层调用。该服务将与数据库交互。那么我可以将它作为单独的服务层来添加吗?

  2. 正如我所说的Windows服务会在后台运行,因此我可以创建线程内窗口服务“的OnStart”事件做了手术。我对么?我知道在'OnStart'事件中编写长时间运行的流程并不是一个好习惯。这就是我使用线程的原因。但是,如果另一个用户登录到该网站,该服务将再次调用,并且它将创建新的工作线程。这种方法是否有任何性能问题?

谢谢。

回答

1

个人而言,我会把该服务在它自己的解决方案。我会把客户端放在网络解决方案中。主要是因为部署将会完全不同,并且帮助保持服务API不被破坏。

你还没有说够什么服务是要干什么,但是我希望。

当用户登录时,一个通知被发送到该服务。登录(USER_ID)

的OnStart的服务应该揭开序幕侦听器线程

然后,当服务“听到”登录(USER_ID)通知它确实像

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

那种事反正...

0

如果Windows服务在后台运行,并不会提供从外部呼叫者的任何要求,那么你可以把你的Windows服务应用程序的UI少表示层的一种形式。它应该放置在一个单独的项目中,并像任何应用程序一样与业务和数据层进行通信。

但是,如果你的Windows服务是服务从外部程序调用,那么你可能需要把你的Windows服务作为一个服务层。

你可能想从这里得到一个更清晰的图层的图片 http://serena-yeoh.blogspot.com/2013/06/layered-architecture-for-net.html