Преглед на файлове

服务器间通信调整

Jeremy преди 2 години
родител
ревизия
ccee0a09ae
променени са 3 файла, в които са добавени 13 реда и са изтрити 33 реда
  1. 2 1
      src/InteractionCenter/MasterInteractionCenterService.cs
  2. 8 29
      src/InteractionCenter/MasterInteractionSyncService.cs
  3. 3 3
      src/WingServer.cs

+ 2 - 1
src/InteractionCenter/MasterInteractionCenterService.cs

@@ -81,8 +81,9 @@ namespace WingCloudServer.InteractionCenter
                         using JsonRpcLite.Rpc;
                         using WingInterfaceLibrary.Interface.DBInterface;
                         using WingCloudServer;
+                        using WingCloudServer.InteractionCenter;
 
-                        public interface IDynamicSlaveService{serverID}
+                        public interface IDynamicSlaveService{serverID}:IDynamicSlaveService
                         {{
                             Task<bool> DynamicSlaveAsync(SyncReceiveServiceDataRequest request);
                         }}

+ 8 - 29
src/InteractionCenter/MasterInteractionSyncService.cs

@@ -53,6 +53,7 @@ namespace WingCloudServer.InteractionCenter
                 var getOpLogsByCodesFormMasterRequest = new GetOpLogsByCodesFormMasterRequest();
                 getOpLogsByCodesFormMasterRequest.Codes = new List<string> { baseLiveConsultation.ConsultationRecordCode, baseLiveConsultation.RoomCode };
                 var oplogs = await _opLogDBService.GetOpLogsByCodesAsync(getOpLogsByCodesFormMasterRequest);
+                request.Oplogs = oplogs;
                 //通知副服务器
                 var otherSlaves = usersConnectOtherSlave.Select(x => x.LoginServerHost).Distinct();
                 if (otherSlaves.Count() > 0)
@@ -78,35 +79,13 @@ namespace WingCloudServer.InteractionCenter
 
         public void DynamicSlaveService(SyncReceiveServiceDataRequest request, string serverID)
         {
-            var eval = CSScript.Evaluator.ReferenceDomainAssemblies(DomainAssemblies.AllStaticNonGAC);
-            var str = @$"using System;
-                        using System.Threading.Tasks;
-                        using WingServerCommon.Service;
-                        using WingInterfaceLibrary.OpLog;
-                        using System.Collections.Generic;
-                        using JsonRpcLite.Rpc;
-                        using WingInterfaceLibrary.Interface.DBInterface;
-                        using WingCloudServer;
-
-                        public interface IDynamicSlaveService{serverID}
-                        {{
-                            Task<bool> DynamicSlaveAsync(SyncReceiveServiceDataRequest request);
-                        }}
-
-                        public class DynamicSlaveServiceClass
-                        {{
-                            public void DynamicSlaveMethod(SyncReceiveServiceDataRequest request)
-                             {{
-                                var _dynamicService = WingServer.WingServerGetProxy(""IDynamicSlaveService{serverID}"");
-
-                                (_dynamicService as IDynamicSlaveService{serverID}).DynamicSlaveAsync(request);
-                           }}
-                        }}";
-            Assembly compilecode = eval.CompileCode(str);
-            var ps = compilecode.GetType("css_root+DynamicSlaveServiceClass");
-            var obj = compilecode.CreateInstance("css_root+DynamicSlaveServiceClass");
-            var mes = ps.GetMethod("DynamicSlaveMethod");
-            mes.Invoke(obj, new object[] { request });
+            var _dynamicService = WingServer.WingServerGetProxy($"IDynamicSlaveService{serverID}");
+            var result = _dynamicService.DynamicSlaveAsync(request).Result;
         }
     }
+
+    public interface IDynamicSlaveService
+    {
+        Task<bool> DynamicSlaveAsync(SyncReceiveServiceDataRequest request);
+    }
 }

+ 3 - 3
src/WingServer.cs

@@ -34,7 +34,7 @@ namespace WingCloudServer
         private JsonRpcHttpServerEngine _jsonRpcHttpServerEngine;
         private Dictionary<Type, object> _rpcServices;
         private static JsonRpcClientPool _rpcClientPool;
-        private static Dictionary<string, object> _remoteServices = new Dictionary<string, object>();
+        private static Dictionary<string, IDynamicSlaveService> _remoteServices = new Dictionary<string, IDynamicSlaveService>();
 
 
         public WingServer(string host)
@@ -83,7 +83,7 @@ namespace WingCloudServer
         /// </summary>
         /// <param name="serviceName"></param>
         /// <param name="url"></param>
-        public static void AddRemoteService<T>(string serviceName, string url)
+        public static void AddRemoteService<T>(string serviceName, string url) where T : IDynamicSlaveService
         {
             try
             {
@@ -107,7 +107,7 @@ namespace WingCloudServer
             }
         }
 
-        public static object WingServerGetProxy(string serviceName)
+        public static IDynamicSlaveService WingServerGetProxy(string serviceName)
         {
             try
             {