Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.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# 有哪些.NET功能允许我;“重新加载”;及;“重新启动”;嵌入式服务器?_C#_.net_Reload - Fatal编程技术网

C# 有哪些.NET功能允许我;“重新加载”;及;“重新启动”;嵌入式服务器?

C# 有哪些.NET功能允许我;“重新加载”;及;“重新启动”;嵌入式服务器?,c#,.net,reload,C#,.net,Reload,哪些.NET功能允许我加载“重新加载”和“重新启动”嵌入式服务器?我不知道如何问好这个问题。我正在编写一个服务器,它需要定期更新附加功能。我希望它在不同的端口上运行2台相同的服务器(为了冗余),然后当我进行新的更改时,关闭其中一台服务器,加载新代码,运行测试,开始将流量移动到新版本,然后在第二台服务器上开始相同的过程 我想也许AppDomains或MEF是我想要的,但我对这些技术了解不多。我想知道在.NET框架中是否已经有一些我遗漏的东西可以帮助我 有什么建议吗?如果我对AppDomains或M

哪些.NET功能允许我加载“重新加载”和“重新启动”嵌入式服务器?我不知道如何问好这个问题。我正在编写一个服务器,它需要定期更新附加功能。我希望它在不同的端口上运行2台相同的服务器(为了冗余),然后当我进行新的更改时,关闭其中一台服务器,加载新代码,运行测试,开始将流量移动到新版本,然后在第二台服务器上开始相同的过程

我想也许AppDomains或MEF是我想要的,但我对这些技术了解不多。我想知道在.NET框架中是否已经有一些我遗漏的东西可以帮助我


有什么建议吗?如果我对AppDomains或MEF不感兴趣,请随时通知我。

将每台服务器作为单独的进程运行如何?您可以在命令行中输入端口号,这样它就可以从磁盘上的一个exe运行(在生产中)。

我在带有AppDomains的windows服务中执行此操作。该服务只有网络IO代码,以及下载新版本和实例化应用程序域的代码。所有真正的代码都隐藏在一个众所周知且不变的接口后面,该接口具有“处理请求”代码和长期本地状态的序列化/反序列化机制

结果是单个服务可以永久运行。当一个新版本可用并通过冒烟测试时,它可以简单地更改一个引用(封送/取消包装实例),然后hey presto:upgraded。然后它可以卸载旧的应用程序域


对于冗余(硬件等),我们仍然使用多个节点来实现这一点,并在客户端应用负载平衡(尽管您也可以在NLB上实现这一点;我们有理由不这么做)。

是的,我也在考虑这一点。实际上,这正是我想要做的,但我不太确定从“管理器/容器”中启动外部流程的最佳方式。只是因为我认为StartProcess()会一直挂起进程,直到它完成。也许有什么方法可以像叉子一样做到这一点?你所说的“抓住过程”是什么意思?启动新进程不是阻塞操作。你是对的。我错了。嗯,我将探讨这两种方法,应用程序域和单独的过程。。。我现在开始考虑其他管理功能。谢谢