private static void Main() { //相关服务初始化。 ISerializer serializer = new JsonSerializer(); IServiceIdGenerator serviceIdGenerator = new DefaultServiceIdGenerator(); IServiceInstanceFactory serviceInstanceFactory = new DefaultServiceInstanceFactory(); IClrServiceEntryFactory clrServiceEntryFactory = new ClrServiceEntryFactory(serviceInstanceFactory, serviceIdGenerator); var types = AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetExportedTypes()); var serviceEntryProvider = new AttributeServiceEntryProvider(types, clrServiceEntryFactory); IServiceEntryManager serviceEntryManager = new DefaultServiceEntryManager(new IServiceEntryProvider[] { serviceEntryProvider }); IServiceEntryLocate serviceEntryLocate = new DefaultServiceEntryLocate(serviceEntryManager); //自动生成服务路由(这边的文件与Echo.Client为强制约束) { var addressDescriptors = serviceEntryManager.GetEntries().Select(i => new ServiceRoute { Address = new[] { new IpAddressModel { Ip = "127.0.0.1", Port = 9981 } }, ServiceDescriptor = i.Descriptor }); var configString = serializer.Serialize(new { routes = addressDescriptors }); File.WriteAllText("d:\\routes.txt", configString); } IServiceHost serviceHost = new DefaultServiceHost(serializer, serviceEntryLocate); Task.Factory.StartNew(async () => { //启动主机 await serviceHost.StartAsync(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9981)); Console.WriteLine($"服务端启动成功,{DateTime.Now}。"); }); Console.ReadLine(); }
private static void Main() { //相关服务初始化。 ISerializer serializer = new JsonSerializer(); IServiceIdGenerator serviceIdGenerator = new DefaultServiceIdGenerator(); IServiceInstanceFactory serviceInstanceFactory = new DefaultServiceInstanceFactory(); ITypeConvertibleService typeConvertibleService = new DefaultTypeConvertibleService(new[] { new DefaultTypeConvertibleProvider(serializer) }); IClrServiceEntryFactory clrServiceEntryFactory = new ClrServiceEntryFactory(serviceInstanceFactory, serviceIdGenerator, typeConvertibleService); var types = AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetExportedTypes()); var serviceEntryProvider = new AttributeServiceEntryProvider(types, clrServiceEntryFactory); IServiceEntryManager serviceEntryManager = new DefaultServiceEntryManager(new IServiceEntryProvider[] { serviceEntryProvider }); IServiceEntryLocate serviceEntryLocate = new DefaultServiceEntryLocate(serviceEntryManager); //自动生成服务路由(这边的文件与Echo.Client为强制约束) { var addressDescriptors = serviceEntryManager.GetEntries().Select(i => new ServiceRoute { Address = new[] { new IpAddressModel { Ip = "127.0.0.1", Port = 9981 } }, ServiceDescriptor = i.Descriptor }); var serviceRouteManager = new SharedFileServiceRouteManager("d:\\routes.txt", serializer); //zookeeper服务路由管理者。 // var serviceRouteManager = new ZooKeeperServiceRouteManager(new ZooKeeperServiceRouteManager.ZookeeperConfigInfo("172.18.20.132:2181"), serializer); serviceRouteManager.AddRoutesAsync(addressDescriptors).Wait(); } IServiceHost serviceHost = new DefaultServiceHost(serializer, serviceEntryLocate); Task.Factory.StartNew(async () => { //启动主机 await serviceHost.StartAsync(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9981)); Console.WriteLine($"服务端启动成功,{DateTime.Now}。"); }); Console.ReadLine(); }