C#开发的服务端怎么实现热更新
C#开发的服务端如何实现热更新
之前是用python做服务端,但里面的中文字符编码和类型转换实在让人恼火,所以打算转型到C#中,但不知如何实现像python里面的reload热更新,即有函数改动时,不需要重启服务端,就像php asp更新一样方便
------解决方案--------------------
要有以下条件
1.主程序exe ,Models.DLL,Common.DLL这三个如果要更新必需重启
2.把逻辑处理全放到一个工程(Process.dll)项目下
关系如下:
主程序.exe引用Models.Dll与Common.DLL
Common.DLL引用Models.DLL(COMMON.DLL定义方法的委托)
如
class Common
{
public static void Action<string,string> XXXX;
public static void Action<string,string> XXXX2;....这些全是静太的
}
然后呢主程序只要调用上面定义的委托
在你所需的地方调用,还有把缓存数据也放到CommonDLL里这样数据也不会丢失
Common.XXXX(xxx,xxx);
Common.XXXX2(xxx,xxx);
这样
Process.DLL引用 用Models.Dll与Common.DLL
Procles.DLL定义一个
public static class Process
{
public static void IniMethod()
{
这里绑定委托
Common.XXXX=xxx 这就是你要绑定的哪个方法
Common.XXXX2=xxx 这就是你要绑定的哪个方法
}
}
然后程序启动或要更新时写个通用的调用
只要用
Assembly.Load(xxx)
找出 Process 这个静态类 然后执行一下Process.IniMethod() 就可以了 这样程序就不用停下来了
之前是用python做服务端,但里面的中文字符编码和类型转换实在让人恼火,所以打算转型到C#中,但不知如何实现像python里面的reload热更新,即有函数改动时,不需要重启服务端,就像php asp更新一样方便
------解决方案--------------------
要有以下条件
1.主程序exe ,Models.DLL,Common.DLL这三个如果要更新必需重启
2.把逻辑处理全放到一个工程(Process.dll)项目下
关系如下:
主程序.exe引用Models.Dll与Common.DLL
Common.DLL引用Models.DLL(COMMON.DLL定义方法的委托)
如
class Common
{
public static void Action<string,string> XXXX;
public static void Action<string,string> XXXX2;....这些全是静太的
}
然后呢主程序只要调用上面定义的委托
在你所需的地方调用,还有把缓存数据也放到CommonDLL里这样数据也不会丢失
Common.XXXX(xxx,xxx);
Common.XXXX2(xxx,xxx);
这样
Process.DLL引用 用Models.Dll与Common.DLL
Procles.DLL定义一个
public static class Process
{
public static void IniMethod()
{
这里绑定委托
Common.XXXX=xxx 这就是你要绑定的哪个方法
Common.XXXX2=xxx 这就是你要绑定的哪个方法
}
}
然后程序启动或要更新时写个通用的调用
只要用
Assembly.Load(xxx)
找出 Process 这个静态类 然后执行一下Process.IniMethod() 就可以了 这样程序就不用停下来了