Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET MVC后台服务处理_Asp.net Mvc_Iis_Service - Fatal编程技术网

Asp.net mvc ASP.NET MVC后台服务处理

Asp.net mvc ASP.NET MVC后台服务处理,asp.net-mvc,iis,service,Asp.net Mvc,Iis,Service,我们运行了许多ASP.NET MVC站点—每个客户端实例一个站点,服务器上大约有50个站点。每个站点都有自己的配置/数据库等 根据我们的维护计划,每个站点可能运行在稍微不同的应用程序版本上 目前,我们正在使用Quartz.net进行后台处理,它运行在网站的应用程序域中。这在大多数情况下运行良好,但显然会遇到一些问题,如appdomain关闭时(如长时间活动后)它无法运行 我们有哪些选项可以创建更强大的解决方案? 正在讨论Windows服务,但我不知道如何在IIS中获得的不同版本上实现相同的多站点

我们运行了许多ASP.NET MVC站点—每个客户端实例一个站点,服务器上大约有50个站点。每个站点都有自己的配置/数据库等

根据我们的维护计划,每个站点可能运行在稍微不同的应用程序版本上

目前,我们正在使用Quartz.net进行后台处理,它运行在网站的应用程序域中。这在大多数情况下运行良好,但显然会遇到一些问题,如appdomain关闭时(如长时间活动后)它无法运行

我们有哪些选项可以创建更强大的解决方案?

正在讨论Windows服务,但我不知道如何在IIS中获得的不同版本上实现相同的多站点


我真的希望每个IIS站点都有自己的后台处理,它总是像服务一样运行,但与IIS站点隔离的方式相同。

您可以为每个客户端安装windows服务。不过,这似乎是一个维护难题

您还可以编写一个服务,了解应用程序的所有版本,然后逐个处理每个客户端


您还可以创建sql server作业来执行此操作,并为每个客户设置一个作业

我假设,正如您所提到的,每个客户机都有多个数据库。 为每个客户端创建带有db连接字符串的自定义配置文件

e、 g


编写一个windows服务,将上述配置文件(clients | connectiostring)加载到内存中,并遍历每个客户端数据库配置。我猜所有的客户机都有相似的作业队列基础设施,所以您可以对每个数据库执行相同的逻辑


您可以使用启动客户端的windows服务,以确保同一客户端的两个服务实例不会同时运行。

但每个客户端的windows服务听起来不是很可扩展。SQL作业正在将域逻辑移动到应用程序外部。如果逻辑仍在IIS站点内部(通过rest/wcf等进行访问),则单个服务可能会工作。另外,请查看AppFabric,因为它似乎提供了一些合适的基础设施
<?xml version="1.0" encoding="utf-8" ?>
<MyClients>
  <MyClient name="Cleint1">
    <Connection key="Client1" value="data source=<database>;initial catalog=client1DB;persist security info=True;user id=xxxx;password=xxxx;MultipleActiveResultSets=True;App=EntityFramework" />       
  </MyClient>
  <Myclient name="client2".....></MyClient>
</MyClients>