![](/img/trans.png)
[英]Can I run multiple instances of 'the same' Windows Store Application at once?
[英]Multiple Instances of same Application as a Windows Service?
我有一个应用程序来管理我的项目的繁重处理,并需要将其转换为“Windows服务”。 我需要允许运行应用程序处理的多个
版本
实例,这似乎是一个相当正常的要求。
我可以看到至少三种方法来做到这一点:
我的意图是方法#1,但我一直在设计和特别是服务文档的限制上绊倒:
所以,问题:
注意:我通过使用方法#3来解决这个问题,所以我无法证明这一点。 但我认为有人可能有关于如何实施#1的信息 - 或者很好的理由为什么它不是一个好主意。
[编辑]我最初有一个第四个选项( 在硬盘上安装应用程序的多个副本 ),但我删除它,因为它只是感觉,嗯,hackish。 这就是我说“ 至少有三种方法 ”的原因。
但是,除非重新编译应用程序,否则它必须动态设置其ServiceName,因此它具有上述第三个项目符号/问题的解决方案。 因此,除非需要更改其安装文件的实例,否则#1应该可以正常使用目录中的N个配置文件和指示实例应该使用的注册表项。
虽然我无法回答您对选项#1的具体问题,但我可以告诉您选项#2对我们来说非常有效。 我们希望为每个“子”服务创建一个应用程序域,以便在每个“子”服务下运行并为每个子服务使用不同的配置文件。 在我们的服务配置文件中,我们存储了要启动的应用程序域以及要使用的配置文件。 因此,对于每个条目,我们只需创建应用程序域,设置配置文件等,然后关闭。 这种配置分离使我们能够轻松地为每个实例唯一地指定端口和日志文件位置。 我们的另一个好处是我们将“子服务”编写为命令行exe,并在每个“子”服务的新线程上简单地调用AppDomain的ExecuteAssembly()。 解决方案中唯一的“笨拙”是关闭,我们没有打算为它创建一个“好”的解决方案。
2012年2月更新
前段时间我们开始使用“命名”服务(如SQL Server)。 我在博客的“构建Windows服务 - 第1 部分到第7部分 ”系列中详细介绍了整个过程。 它们将指导您完成自行安装的命令行/ Windows服务混合。 满足以下目标:
构建Windows服务 - 第7部分:完成触摸系列的最后一篇文章中提供了完整的Visual Studio项目模板。
看看这个: 多实例.NET Windows服务
有一个选项#4,我在我的项目中成功使用了“命名实例”。
您应用的每次安装都有自定义名称,每个安装都有自己的服务。 它们是完全独立的并且彼此隔离。 如果您尝试在单台计算机上多次安装它,MS SQL Server将使用此模型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.