Windows服务到Azure?
我已经用C#编写了一个Windows服务,它在数据库上完成了一大堆后台pipe理任务。 现在我的客户希望将整个shebang迁移到Azure。 我几乎不知道Azure,而我的客户说你不能在Azure上运行Windows服务。 我已经search了这个主题,并提出了一些非常具体的案例研究,介绍了如何将他们的Windows服务迁移到Azure,假设对Azure的工作原理有相当高的理解程度,但是没有关于Windows服务可以在Azure下运行,或者采取什么措施来适应它们。
我真的很想看到第一个问题的明确答案和解释(你可以在Azure下运行Windows服务吗?),如果答案是否定的,我很想find一个转换Windows服务与Azure兼容。
谢谢!
是的,你可以做到这一点 – 一个简单的演练见http://blogs.msdn.com/b/mwasham/archive/2011/03/30/migrating-a-windows-service-to-windows-azure.aspx
其他相关信息链接:
- 获取服务以在Azure工作者angular色内部运行
- http://www.codeproject.com/KB/azure/WCFWorkerRole.aspx
你可以运行任何你想要的,包括一个Windows服务。
不过,我想你会更高兴地转换成WorkerRole ,这应该是非常简单的。
对于较小的作业,可以使用Azure的WebJob工具,该工具在Web应用程序中运行(如果您正在对与前端网站pipe理的数据相同的数据执行后台任务,则可使用该工具)。
这里有一个很好的细分: https : //azure.microsoft.com/en-us/documentation/articles/web-sites-create-web-jobs/
WebJobs很容易运行,但没有Worker Roles的function。 请参阅下面的比较: 工作者angular色与Web作业
是的,没问题,这里是另一个不错的,容易遵循的例子Azure云服务入门 。 它(也)清楚地显示了如何实施WorkerRole。 您可以使用WebRole来pipe理您的服务。
以下是在运行Windows Server 2008 R2的Windows Azure上安装Windows服务的步骤:
- 在Windows Azure控制台中启动您的虚拟机并使用远程桌面连接器连接到它
-
将您的存储映射为虚拟机中的新驱动器:
net use z:\ mystorage.file.core.windows.net \ endoint / u:myusername verylongkeythatendswith ==
存储密钥可以在您的Azurepipe理控制台 – >存储 – >pipe理访问密钥中find
- 将所有必要的安装文件复制到映射存储器(复制并粘贴)
- 将nssm复制到本地驱动器(不是z:因为它使用MAFS文件系统,并且不能用低级别的Windows API命令访问)
- 使用以下条目创build一个.bat文件
set username = xxx set password = yyy call d:\ nssm install“My service”“%programfiles%\ PathToService \ myservice.exe”“-p 8677”d:\ nssm set“My service”ObjectName“%username%”“ %password%“sc失败”My service“actions = restart / 60000 / restart / 60000 / restart / 60000 reset = 240 d:\ nssm start”我的服务“
用户名和密码应该是你用来创build虚拟机的。
- 运行脚本。 该服务应该显示在您的服务列表中。
请享用!
PS:我使用NSSM来简化服务部署。
我会使用networking作业,这是调度function和简单的部署/configuration使这是一个微不足道的任务。 压缩你的.exe并上传,然后设定一个时间表,你就完成了。
是的,你可以在网站上有一个任务,可以创build批处理,wsh,powershell(需要azure power shell)或使用web作业API,rest API,另一方面我们有azure色的自动化类似的任务使用工作stream程