Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.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
C# 对于SOA解决方案,我应该使用什么服务类型来执行长时间运行的任务?_C#_Asp.net_.net_Vb.net_Web Services - Fatal编程技术网

C# 对于SOA解决方案,我应该使用什么服务类型来执行长时间运行的任务?

C# 对于SOA解决方案,我应该使用什么服务类型来执行长时间运行的任务?,c#,asp.net,.net,vb.net,web-services,C#,Asp.net,.net,Vb.net,Web Services,我正在.Net中开发一个解决方案,利用VMWare Web Service API创建新的隔离虚拟化开发环境 前端将基于网络。请求者输入将持久化到SQL的特定环境的详细信息。因此,我需要编写某种引擎来从SQL中提取数据,并执行创建资源池、交换机端口组和克隆现有VM模板等长期运行的任务。随着工作的进行,将引发事件,以将日志和更新信息写入SQL。这允许请求者将数据拉回到网页中,以查看其进展情况或是否完成 我正在努力解决的问题是如何设计引擎来执行创建环境的长期任务。我无法编写windows服务(我希望

我正在.Net中开发一个解决方案,利用VMWare Web Service API创建新的隔离虚拟化开发环境

前端将基于网络。请求者输入将持久化到SQL的特定环境的详细信息。因此,我需要编写某种引擎来从SQL中提取数据,并执行创建资源池、交换机端口组和克隆现有VM模板等长期运行的任务。随着工作的进行,将引发事件,以将日志和更新信息写入SQL。这允许请求者将数据拉回到网页中,以查看其进展情况或是否完成


我正在努力解决的问题是如何设计引擎来执行创建环境的长期任务。我无法编写windows服务(我希望如此),因为我们在一个非常安全的环境中工作,这是不可能的(组策略等)。我可以编写一个web服务来执行任务,扩展httpRuntime executionTimeout以允许任务完成。但我很想听听你们认为什么是更好的解决方案(基于.NET3.5)。解决方案需要面向服务,因为我们可能会在组织内的其他项目上使用它。世界自然基金会和世界自然基金会呢?自从.Net 2.0以来,我没有使用过任何更新的技术,因为我们刚刚被批准从.Net 2.0升级。

首先,Windows服务并不是不安全的。软件开发魔鬼之一是由于无知或缺乏调查、需求分析和协同决策而放弃解决方案

无论如何,如果你想用SOA的方式来做,WCF将是你最好的朋友

但也许您可以混合使用由Internet信息服务和消息队列服务器(MSMQ)托管的WCF服务

客户端调用WCF服务操作并将消息排入某个消息队列服务器队列。稍后,Windows计划任务会超时执行,检查队列中是否至少有传入消息,任务会处理此消息和其他消息,直到您将所有消息出列

通过这种方式,IIS WCF主机将永远不需要增加其执行时间,它将提供更多的请求,而执行如此长的任务的繁重工作是由Windows计划的任务执行的,例如控制台应用程序或PowerShell cmdlet(或仅是PowerShell脚本,为什么不?)


查看这篇关于MSMQ的旧但有用的MSDN文章:

我不理解你关于服务不安全的评论,我认为这是错误的

不过,我将研究如何创建使用消息传递总线/守护进程的东西

RabbitMQ:
大众运输:
N服务总线:


然后,您基本上可以使用WCF、控制台应用程序或服务作为您的守护进程。

我从来没有说过服务是不安全的。我说我们的prod env是安全的,并且已经锁定。这使我无法安装服务。@TomPickles你没有这么说,但概括地说,你说你公司的某个系统管理员不允许安装windows服务,因为他/她认为这些服务不安全(如果不是这样,为什么你不能使用windows服务?)。无论如何,正如我在回答中所说,我认为windows服务不是正确的解决方案;对任何混乱表示歉意。这不仅仅是一个系统管理员的决定。我在一个庞大的外包账户上工作,安全是由严格的政策定义的。另一方面,SOA是通过混合使用某种消息队列来定义的吗?@TomPickles这就是为什么我讨厌为外包公司工作(还有许多其他原因)。。。回答你的问题,我会说“不一定”。