如果我部署 C# 控制台应用程序,它将执行以下操作:
- 读取消息(ActiveMQ)
- 处理消息内容
- 将结果写入数据库 (SQL Server)
多次运行是否会出现任何问题,例如如果我创建一个批处理文件并运行 100 个实例怎么办?如果每个实例都使用相同的共享 DLL,例如,是否会存在任何冲突? Apache.NMS.ActiveMQ。
另一个选择是多次部署应用程序,但我不想管理重复的文件夹。目前我也在避免使用线程,但这将是 future 进一步开发的一个选项。
只是想澄清这些 DLL 发生了什么,并检查是否存在线程类型冲突,例如一个实例将另一个实例的处理结果写入数据库...
最佳答案
不,正如您所描述的,将相同的 DLL 文件加载到多个进程中不会有问题。仅当进程需要独占访问共享资源(如文件)时,运行同一应用程序的多个实例时才会遇到问题。关于写入数据库,只要您设计应用程序,以便多个客户端可以写入数据,而不会覆盖数据或导致与数据的域完整性出现某种不一致,那么就没有问题。
但是,如果您需要并发性,我强烈建议您考虑使应用程序成为多线程,或者如果您需要隔离,则考虑使应用程序域成为多线程。就资源而言,运行多个进程比这两个选项中的任何一个都要昂贵得多。
关于C# 多个控制台应用程序运行和隔离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9176273/