static void Main(string[] args) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var host = new ServiceHostBuilder() .RegisterServices(builder => { builder.AddMicroService(option => { option.AddClient() .AddClientIntercepted(typeof(CacheProviderInterceptor)) .AddClientIntercepted(typeof(LogProviderInterceptor)) //option.UseZooKeeperManager(new ConfigInfo("127.0.0.1:2181")); .UseConsulManager(new ConfigInfo("127.0.0.1:8500")) .UseDotNettyTransport() .UseRabbitMQTransport() .AddCache() //.UseKafkaMQTransport(kafkaOption => //{ // kafkaOption.Servers = "127.0.0.1"; //}); //.UseProtoBufferCodec() .UseMessagePackCodec(); builder.Register(p => new CPlatformContainer(ServiceLocator.Current)); }); }) .Configure(build => build.AddEventBusFile("eventBusSettings.json", optional: false)) .Configure(build => build.AddCacheFile("cacheSettings.json", optional: false, reloadOnChange: true)) .UseNLog(LogLevel.Error) // .UseLog4net(LogLevel.Error) .UseServiceCache() .UseProxy() .UseClient() .UseStartup <Startup>() .Build(); using (host.Run()) { Startup.Test(ServiceLocator.GetService <IServiceProxyFactory>()); //Startup.TestRabbitMq(ServiceLocator.GetService<IServiceProxyFactory>()); // Startup.TestForRoutePath(ServiceLocator.GetService<IServiceProxyProvider>()); /// test Parallel //var connectionCount = 250000; //var requestThread = new Thread(() => StartRequest(connectionCount)) { IsBackground = true }; //requestThread.Start(); //Console.ReadLine(); } }
static void Main(string[] args) { // Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var host = new ServiceHostBuilder() .RegisterServices(builder => { builder.AddMicroService(option => { option.AddServiceRuntime() .AddRelateService() .AddConfigurationWatch() //option.UseZooKeeperManager(new ConfigInfo("127.0.0.1:2181")); .AddServiceEngine(typeof(SurgingServiceEngine)) .AddClientIntercepted(typeof(CacheProviderInterceptor)); builder.Register(p => new CPlatformContainer(ServiceLocator.Current)); }); }) .ConfigureLogging(logger => { logger.AddConfiguration( AppConfig.GetSection("Logging")); }) .UseServer(options => { }) .UseConsoleLifetime() .Configure(build => { #if DEBUG build.AddCacheFile("${cachePath}|/app/configs/cacheSettings.json", optional: false, reloadOnChange: true); build.AddCPlatformFile("${surgingPath}|/app/configs/surgingSettings.json", optional: false, reloadOnChange: true); build.AddEventBusFile("${eventBusPath}|/app/configs/eventBusSettings.json", optional: false, reloadOnChange: true); build.AddConsulFile("${consulPath}|/app/configs/consul.json", optional: false, reloadOnChange: true); build.AddZookeeperFile("${zookeeperPath}|/app/configs/zookeeper.json", optional: false, reloadOnChange: true); #else build.AddCacheFile("${cachePath}|configs/cacheSettings.json", optional: false, reloadOnChange: true); build.AddCPlatformFile("${surgingPath}|configs/surgingSettings.json", optional: false, reloadOnChange: true); build.AddEventBusFile("${eventBusPath}|configs/eventBusSettings.json", optional: false); build.AddConsulFile("${consulPath}|configs/consul.json", optional: false, reloadOnChange: true); build.AddZookeeperFile("${zookeeperPath}|configs/zookeeper.json", optional: false, reloadOnChange: true); #endif }) .UseStartup <Startup>() .Build(); using (host.Run()) { Console.WriteLine($"服务端启动成功,{DateTime.Now}。"); } }
static void Main(string[] args) { var builder = new ServiceHostBuilder(); builder.ConfigureOptions <ClusterMembershipServiceOptions>(); builder.ConfigureOptions <GatewayMembershipServiceOptions>(); builder.AddSystemTarget <IClusterMembershipService, ClusterMembershipService>(); builder.AddSystemTarget <IGatewayMembershipService, GatewayMembershipService>(); builder.AddService <IDataService, DataService>(); serviceHost = builder.Build(); serviceHost.Start(); Console.WriteLine("started..."); Console.ReadLine(); serviceHost.Stop(); }
static void Main(string[] args) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var host = new ServiceHostBuilder() .RegisterServices(builder => { builder.AddMicroService(option => { option.AddServiceRuntime() .AddRelateService() //添加支持服务代理远程调用 .AddConfigurationWatch() //添加同步更新配置文件的监听处理 //option.UseZooKeeperManager(new ConfigInfo("127.0.0.1:2181")); //.UseConsulManager(new ConfigInfo("127.0.0.1:8500"))//使用Consul管理 .AddServiceEngine(typeof(SurgingServiceEngine)); builder.Register(p => new CPlatformContainer(ServiceLocator.Current)); //初始化注入容器 }); }) .ConfigureLogging(logger => { logger.AddConfiguration(Surging.Core.CPlatform.AppConfig.GetSection("Logging")); }) .UseServer(options => { //options.Ip = "127.0.0.1"; //options.Port = 2801; //options.Token = "True"; //options.ExecutionTimeoutInMilliseconds = 30000; //options.MaxConcurrentRequests = 200; }) //.UseLog4net("log4net.config") //使用log4net记录日志 //.UseLog4net(LogLevel.Error) //使用log4net记录日志 //.UseNLog(LogLevel.Error, "NLog.config") .UseConsoleLifetime() .UseLog4net() .Configure(build => build.AddCacheFile("${cachepath}|cacheSettings.json", optional: false, reloadOnChange: true)) .Configure(build => build.AddCPlatformFile("${surgingpath}|surgingSettings.json", optional: false, reloadOnChange: true)) .UseStartup <Startup>() .Build(); //在启动的时候吧连接字符串赋值 SurgingtestContext.DbConnStr = Surging.Core.CPlatform.AppConfig.GetSection("ConnectionStrings").GetSection("MySqlStr").Value; SqlClient.ConnectionString = Surging.Core.CPlatform.AppConfig.GetSection("ConnectionStrings").GetSection("MySqlStr").Value; using (host.Run()) { Console.WriteLine($"Surging.TestDemo服务端启动成功,{DateTime.Now}"); } }
static void Main(string[] args) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var host = new ServiceHostBuilder() .RegisterServices(builder => { // builder.RegisterAssemblyModules(); //这里写自己的注册 }) .RegisterServices(builder => { builder.AddMicroService(option => { option.AddServiceRuntime(); option.AddRelateService(); option.UseConsulManager(new ConfigInfo("127.0.0.1:8500")); option.UseDotNettyTransport(); option.UseRabbitMQTransport(); option.AddRabbitMQAdapt(); //option.UseMessagePackCodec(); option.UseJsonCodec(); builder.Register(p => new CPlatformContainer(ServiceLocator.Current)); }); }) .SubscribeAt() .UseLog4net("Configs/log4net.config") .UseServer(options => { options.Ip = "127.0.0.1"; options.Port = 10241; options.Token = "True"; options.ExecutionTimeoutInMilliseconds = 30000; options.MaxConcurrentRequests = 200; }) .UseProxy() .UseStartup <Startup>() .Build(); using (host.Run()) { Console.Title = "认证授权"; Console.WriteLine($"认证授权——服务端启动成功,{DateTime.Now}。"); Console.ReadLine(); } }
static void Main(string[] args) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var host = new ServiceHostBuilder() .RegisterServices(builder => { builder.AddMicroService(option => { option.AddClient() .AddCache(); builder.Register(p => new CPlatformContainer(ServiceLocator.Current)); }); }) .ConfigureLogging(logger => { logger.AddConfiguration( Core.CPlatform.AppConfig.GetSection("Logging")); }) .Configure(build => { #if DEBUG build.AddCacheFile("${cachePath}|/app/configs/cacheSettings.json", optional: false, reloadOnChange: true); build.AddCPlatformFile("${surgingPath}|/app/configs/surgingSettings.json", optional: false, reloadOnChange: true); // build.AddEventBusFile("${eventBusPath}|/app/configs/eventBusSettings.json", optional: false); #else build.AddCacheFile("${cachePath}|configs/cacheSettings.json", optional: false, reloadOnChange: true); build.AddCPlatformFile("${surgingPath}|configs/surgingSettings.json", optional: false, reloadOnChange: true); build.AddEventBusFile("configs/eventBusSettings.json", optional: false); #endif }) .UseClient() .UseProxy() .UseStartup <Startup>() .Build(); using (host.Run()) { // Startup.Test(ServiceLocator.GetService<IServiceProxyFactory>()); //Startup.TestRabbitMq(ServiceLocator.GetService<IServiceProxyFactory>()); // Startup.TestForRoutePath(ServiceLocator.GetService<IServiceProxyProvider>()); /// test Parallel //var connectionCount = 300000; //StartRequest(connectionCount); //Console.ReadLine(); } }
static void Main(string[] args) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var host = new ServiceHostBuilder() .RegisterServices(builder => { builder.AddMicroService(option => { option.AddServiceRuntime() .AddRelateService() .AddConfigurationWatch() //option.UseZooKeeperManager(new ConfigInfo("127.0.0.1:2181")); .AddServiceEngine(typeof(SurgingServiceEngine)); //option.UseConsulManager(new ConfigInfo("192.168.1.224:32769")); builder.Register(p => new CPlatformContainer(ServiceLocator.Current)); }); }) .ConfigureLogging(logger => { logger.AddConfiguration( Surging.Core.CPlatform.AppConfig.GetSection("Logging")); }) //.UseServer(options => { }) .UseServer(options => { options.Ip = "127.0.0.1"; options.Port = 9990; options.Token = "True"; options.ExecutionTimeoutInMilliseconds = 30000; options.MaxConcurrentRequests = 200; options.NotRelatedAssemblyFiles = "Centa.Agency.Application.DTO\\w*|StackExchange.Redis\\w*"; }) .UseConsoleLifetime() .Configure(build => build.AddCacheFile("${cachepath}|cacheSettings.json", basePath: AppContext.BaseDirectory, optional: false, reloadOnChange: true)) .Configure(build => build.AddCPlatformFile("${surgingpath}|surgingSettings.json", optional: false, reloadOnChange: true)) .UseStartup <Startup>() .Build(); using (host.Run()) { Console.WriteLine($"服务端启动成功,{DateTime.Now}。"); } }
private static void Main(string[] args) { var host = new ServiceHostBuilder() .RegisterServices(builder => { builder.AddMicroService(option => { option.AddServiceRuntime() .AddRelateService() .AddConfigurationWatch() .AddServiceEngine(typeof(SurgingServiceEngine)); builder.Register(p => new CPlatformContainer(ServiceLocator.Current)); }); }) .ConfigureLogging(loggging => { loggging.AddConfiguration( AppConfig.GetSection("Logging")); }) .UseServer(options => { }) .UseConsoleLifetime() .Configure(build => { #if DEBUG build.AddCacheFile("${cachePath}|/app/configs/cacheSettings.json", optional: false, reloadOnChange: true); build.AddCPlatformFile("${surgingPath}|/app/configs/surgingSettings.json", optional: false, reloadOnChange: true); build.AddEventBusFile("${eventBusPath}|/app/configs/eventBusSettings.json", optional: false); build.AddConsulFile("${consulPath}|/app/configs/consul.json", optional: false, reloadOnChange: true); #else build.AddCacheFile("${cachePath}|configs/cacheSettings.json", optional: false, reloadOnChange: true); build.AddCPlatformFile("${surgingPath}|configs/surgingSettings.json", optional: false, reloadOnChange: true); build.AddEventBusFile("configs/eventBusSettings.json", optional: false); build.AddConsulFile("configs/consul.json", optional: false, reloadOnChange: true); #endif }) .UseProxy() .UseStartup <Startup>() .Build(); using (host.Run()) { Console.WriteLine($"服务主机启动成功{DateTime.Now}。"); } }
static void Main(string[] args) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var host = new ServiceHostBuilder() .RegisterServices(builder => { builder.AddMicroService(option => { option.AddServiceRuntime(); option.AddRelateService(); //option.UseZooKeeperManager(new ConfigInfo("127.0.0.1:2181")); option.UseConsulManager(new ConfigInfo("127.0.0.1:8500")); option.UseDotNettyTransport(); option.UseRabbitMQTransport(); option.AddRabbitMQAdapt(); //option.UseProtoBufferCodec(); option.UseMessagePackCodec(); builder.Register(p => new CPlatformContainer(ServiceLocator.Current)); }); }) .SubscribeAt() .UseLog4net("Configs/log4net.config") //.UseServer("127.0.0.1", 98) //.UseServer("127.0.0.1", 98,“true”) //自动生成Token //.UseServer("127.0.0.1", 98,“123456789”) //固定密码Token .UseServer(options => { // options.IpEndpoint = new IPEndPoint(IPAddress.Any, 98); options.Ip = "127.0.0.1"; options.Port = 98; options.Token = "True"; options.ExecutionTimeoutInMilliseconds = 30000; options.MaxConcurrentRequests = 200; options.NotRelatedAssemblyFiles = "Centa.Agency.Application.DTO\\w*|StackExchange.Redis\\w*"; }) .UseProxy() .UseStartup <Startup>() .Build(); using (host.Run()) { Console.WriteLine($"服务端启动成功,{DateTime.Now}。"); } }
static void Main(string[] args) { var loggerFactory = new LoggerFactory(); loggerFactory.AddProvider <ConsoleLoggerProvider>(); Logger.LoggerFactory = loggerFactory; var builder = new ServiceHostBuilder(); builder.ConfigureOptions <ClusterMembershipServiceOptions>(p => { p.InsideAddress = new SlioAddress("0.0.0.0", 64000); p.Backlog = 10; p.MaxConnections = 100; }); builder.ConfigureOptions <GatewayMembershipServiceOptions>(p => { p.InsideAddress = new SlioAddress("0.0.0.0", 64001); p.Backlog = 10; p.MaxConnections = 100; p.Cluster = new SlioAddress("0.0.0.0", 64000); }); builder.AddSystemTarget <IClusterMembershipService, ClusterMembershipService>(); builder.AddSystemTarget <IGatewayMembershipService, GatewayMembershipService>(); builder.AddService <ISayService, SayService>(metadata: new ServiceMetadata() { ID = 45 }); builder.AddService <IHelloService, HelloService>(); serviceHost = builder.Build(); serviceHost.Lifecycle.WithStarted(nameof(Program), (token) => { var serviceFactory = serviceHost.ServiceFactory; var helloService = serviceFactory.GetSingleService <ISayService>(); var metadata = helloService.Metadata; var result = helloService.Say("cxx"); }); serviceHost.Start(); Console.WriteLine("started..."); Console.ReadLine(); }
public static async Task Main(string[] args) { var hostBuilder = new ServiceHostBuilder(); hostBuilder.Build((hostBuilderConext, serviceCollection) => { serviceCollection.AddScoped <ITask, AccountServiceTask>(); }); await hostBuilder.StartAsync(); //Just to Start the Flow var serviceCoordinator = hostBuilder.host.Services.GetRequiredService <IServiceCoordinator>(); await serviceCoordinator.Raise <CartUpdatedEvent>(new ServiceParams { Message = "Startup", Count = 0 }); Console.WriteLine("Account Service started..."); await hostBuilder.WaitForShutdownAsync(); }
static void Main(string[] args) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var host = new ServiceHostBuilder() .RegisterServices(builder => { builder.AddMicroService(option => { option.AddServiceRuntime() .AddRelateService() .AddConfigurationWatch() //option.UseZooKeeperManager(new ConfigInfo("127.0.0.1:2181")); .UseRabbitMQTransport() .AddRabbitMQAdapt() .AddCache() .AddHttpProtocol() .AddServiceEngine(typeof(SurgingServiceEngine)); builder.Register(p => new CPlatformContainer(ServiceLocator.Current)); }); }) .SubscribeAt() .ConfigureLogging(logger => { logger.AddConfiguration( Core.CPlatform.AppConfig.GetSection("Logging")); }) .UseServer(options => { }) .UseConsoleLifetime() .UseServiceCache() .Configure(build => build.AddCacheFile("${cachepath}|cacheSettings.json", optional: false, reloadOnChange: true)) .Configure(build => build.AddCPlatformFile("${surgingpath}|surgingSettings.json", optional: false, reloadOnChange: true)) .UseStartup <Startup>() .Build(); using (host.Run()) { Console.WriteLine($"服务端启动成功,{DateTime.Now}。"); } }
static async Task Main(string[] args) { var hostBuilder = new ServiceHostBuilder(); hostBuilder.Build((hostBuilderConext, serviceCollection) => { }); await hostBuilder.StartAsync(); //Just to Start the Flow var serviceCoordinator = hostBuilder.host.Services.GetRequiredService <IServiceCoordinator>(); Console.WriteLine("External Service started..."); for (int i = 0; i < 10; i++) { await serviceCoordinator.Raise <OrderCreatedEvent>(new ServiceParams { Message = "Startup", Count = 0 }); } await hostBuilder.StartAsyncAndWait(); }
/// <summary> /// Interprets any <see cref="OperationCanceledException" /> thrown by the service /// as <c>RequestCancelled</c> error per definition in Language Server Protocol. /// </summary> public static void UseCancellationHandling(this ServiceHostBuilder builder) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } builder.Intercept(async(context, next) => { try { await next(); } catch (OperationCanceledException ex) { if (ex.CancellationToken == context.CancellationToken || ex.CancellationToken == CancellationToken.None) { context.Response.Error = new ResponseError(Utility.RequestCancelledErrorCode, ex.Message); } } }); }
static async Task Debug() { var tcpAddress = $"tcp://localhost:9999/tcpTest"; var host = new ServiceHostBuilder <Service>(InstanceMode.PerConnection) .AddTcpServer(tcpAddress, options => { options.ReceiveBufferSize = 40; options.ReceiveTimeout = TimeSpan.FromMinutes(60); options.Timeout = TimeSpan.FromMinutes(60); options.FramingProtocol = FramingProtocol.ConcurrentFragments; }) .WithConsoleLogger(LogLevel.Trace) .CreateHost(); await host.Open(); var client = await new ConnectionBuilder <IService>() .WithTcpTransport(tcpAddress, options => { options.SendBufferSize = 45; options.KeepAliveInterval = TimeSpan.FromMinutes(50); options.ReceiveTimeout = TimeSpan.FromMinutes(60); options.Timeout = TimeSpan.FromMinutes(60); options.FramingProtocol = FramingProtocol.ConcurrentFragments; }) .WithConsoleLogger(LogLevel.None) .CreateConnection(); var msg = await client.Echo("test"); Console.WriteLine(msg); await host.Close(); ((IConnection)client).Close(); Console.WriteLine("Test Done!"); }
static void Main(string[] args) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var host = new ServiceHostBuilder() .RegisterServices(option => { option.Initialize(); option.RegisterServices(); option.RegisterRepositories(); option.RegisterModules(); option.RegisterServiceBus(); }) .RegisterServices(builder => { builder.AddMicroService(option => { option.AddServiceRuntime(); //option.UseZooKeeperManager(new ConfigInfo("127.0.0.1:2181")); option.UseConsulManager(new ConfigInfo("127.0.0.1:8500")); option.UseDotNettyTransport(); option.UseRabbitMQTransport(); option.AddRabbitMQAdapt(); //option.UseProtoBufferCodec(); option.UseMessagePackCodec(); builder.Register(p => new CPlatformContainer(ServiceLocator.Current)); }); }) .SubscribeAt() .UseServer("127.0.0.1", 98) .UseStartup <Startup>() .Build(); using (host.Run()) { Console.WriteLine($"服务端启动成功,{DateTime.Now}。"); } }
static void Main(string[] args) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var host = new ServiceHostBuilder() .RegisterServices(builder => { builder.AddMicroService(option => { option.AddClient() .AddCache(); option.UseZooKeeperManager(new ConfigInfo("127.0.0.1:2181")); builder.Register(p => new CPlatformContainer(ServiceLocator.Current)); }); }) .UseNLog(LogLevel.Trace, "NLog.config")// 使用NLog 记录日志 .Configure(build => build.AddEventBusFile("Configs/eventBusSettings.json", optional: false)) .Configure(build => build.AddCacheFile("Configs/cacheSettings.json", optional: false, reloadOnChange: true)) .Configure(build => build.AddCPlatformFile("${surgingpath}|Configs/surgingSettings.json", optional: false, reloadOnChange: true)) .UseClient() .UseProxy() .UseStartup <Startup>() .Build(); using (host.Run()) { Startup.Test(ServiceLocator.GetService <IServiceProxyFactory>()); //Startup.TestRabbitMq(ServiceLocator.GetService<IServiceProxyFactory>()); // Startup.TestForRoutePath(ServiceLocator.GetService<IServiceProxyProvider>()); /// test Parallel //var connectionCount = 200000; //StartRequest(connectionCount); //Console.ReadLine(); } }
static void Main(string[] args) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var host = new ServiceHostBuilder() .RegisterServices(builder => { builder.AddMicroService(option => { option.AddClient(); option.AddClientIntercepted(typeof(CacheProviderInterceptor)); //option.UseZooKeeperManager(new ConfigInfo("127.0.0.1:2181")); option.UseConsulManager(new ConfigInfo("127.0.0.1:8500")); option.UseDotNettyTransport(); option.UseRabbitMQTransport(); //option.UseProtoBufferCodec(); option.UseMessagePackCodec(); builder.Register(p => new CPlatformContainer(ServiceLocator.Current)); }); }) .UseProxy() .UseLog4net() .UseClient() .UseStartup <Startup>() .Build(); using (host.Run()) { Startup.Test(ServiceLocator.GetService <IServiceProxyFactory>()); //Startup.TestRabbitMq(ServiceLocator.GetService<IServiceProxyFactory>()); // Startup.TestForRoutePath(ServiceLocator.GetService<IServiceProxyProvider>()); /// test Parallel //var connectionCount = 250000; //var requestThread = new Thread(() => StartRequest(connectionCount)) { IsBackground = true }; //requestThread.Start(); //Console.ReadLine(); } }
static void Main(string[] args) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var host = new ServiceHostBuilder() .RegisterServices(builder => { builder.AddMicroService(option => { option.AddServiceRuntime(); //option.UseZooKeeperManager(new ConfigInfo("127.0.0.1:2181")); option.UseConsulManager(new ConfigInfo("127.0.0.1:8500")); option.UseDotNettyTransport(); option.UseRabbitMQTransport(); option.AddRabbitMQAdapt(); //option.UseProtoBufferCodec(); option.UseMessagePackCodec(); builder.Register(p => new CPlatformContainer(ServiceLocator.Current)); }); }) .SubscribeAt() .UseLog4net("Configs/log4net.config") //.UseServer("127.0.0.1", 98) //.UseServer("127.0.0.1", 98,“true”) //自动生成Token //.UseServer("127.0.0.1", 98,“123456789”) //固定密码Token .UseServer(options => { options.Ip = "127.0.0.1"; options.Port = 98; options.ExecutionTimeoutInMilliseconds = 30000; }) .UseStartup <Startup>() .Build(); using (host.Run()) { Console.WriteLine($"服务端启动成功,{DateTime.Now}。"); } }
static void Main(string[] args) { Console.WriteLine("Server, Hello World!"); var host = new ServiceHostBuilder() .RegisterServices(builder => { builder.RegisterType <MessagePackTransportMessageCodecFactory>().As <ITransportMessageCodecFactory>().SingleInstance(); builder.RegisterType(typeof(HttpServiceExecutor)).As(typeof(IServiceExecutor)).Named <IServiceExecutor>("tcp").SingleInstance(); builder.Register(provider => { return(new DotNettyServerMessageListener(provider.Resolve <ILogger <DotNettyServerMessageListener> >(), provider.Resolve <ITransportMessageCodecFactory>())); }).SingleInstance(); builder.Register(provider => { var serviceExecutor = provider.ResolveKeyed <IServiceExecutor>("tcp"); var messageListener = provider.Resolve <DotNettyServerMessageListener>(); return(new DotNettyTransportHost(async endPoint => { await messageListener.StartAsync(endPoint); return messageListener; }, serviceExecutor)); }).As <ITransportHost>(); }) .UseServer() // 指定监听的端口 .UseStartup <Startup>() .Build(); using (host.Run()) { Console.WriteLine($"服务端启动成功,{DateTime.Now}。"); } Console.ReadLine(); }
static void Main(string[] args) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var host = new ServiceHostBuilder() .RegisterServices(option => { option.Initialize(); option.RegisterServices(); option.RegisterRepositories(); option.RegisterModules(); }) .RegisterServices(builder => { builder.AddMicroService(option => { option.AddClient(); option.AddClientIntercepted(typeof(CacheProviderInterceptor)); //option.UseZooKeeperManager(new ConfigInfo("127.0.0.1:2181")); option.UseConsulManager(new ConfigInfo("127.0.0.1:8500")); option.UseDotNettyTransport(); option.UseRabbitMQTransport(); //option.UseProtoBufferCodec(); option.UseMessagePackCodec(); builder.Register(p => new CPlatformContainer(ServiceLocator.Current)); }); }) .UseClient() .UseStartup <Startup>() .Build(); using (host.Run()) { Startup.Test(ServiceLocator.GetService <IServiceProxyFactory>()); Startup.TestRabbitMq(); } }
static void Main(string[] args) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var host = new ServiceHostBuilder() .RegisterServices(builder => { builder.AddMicroService(option => { option.AddClient() .AddClientIntercepted(typeof(CacheProviderInterceptor)) .AddCache(); builder.Register(p => new CPlatformContainer(ServiceLocator.Current)); }); }) .Configure(build => build.AddEventBusFile("eventBusSettings.json", optional: false)) .Configure(build => build.AddCacheFile("cacheSettings.json", optional: false, reloadOnChange: true)) .Configure(build => build.AddCPlatformFile("${surgingpath}|surgingSettings.json", optional: false, reloadOnChange: true)) .UseNLog(LogLevel.Error) .UseClient() .UseStartup <Startup>() .Build(); using (host.Run()) { Startup.Test(ServiceLocator.GetService <IServiceProxyFactory>()); //Startup.TestRabbitMq(ServiceLocator.GetService<IServiceProxyFactory>()); // Startup.TestForRoutePath(ServiceLocator.GetService<IServiceProxyProvider>()); /// test Parallel //var connectionCount = 200000; //StartRequest(connectionCount); //Console.ReadLine(); } }
static void Main(string[] args) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var host = new ServiceHostBuilder() .RegisterServices(builder => { builder.AddMicroService(option => { option.AddServiceRuntime() .AddRelateService() .AddConfigurationWatch() //option.UseZooKeeperManager(new ConfigInfo("127.0.0.1:2181")); .UseConsulManager(new ConfigInfo("10.0.3.27:8500", reloadOnChange: true)) .UseDotNettyTransport() .UseRabbitMQTransport() .AddRabbitMQAdapt() .AddCache() //.UseKafkaMQTransport(kafkaOption => //{ // kafkaOption.Servers = "127.0.0.1"; // kafkaOption.LogConnectionClose = false; // kafkaOption.MaxQueueBuffering = 10; // kafkaOption.MaxSocketBlocking = 10; // kafkaOption.EnableAutoCommit = false; //}) //.AddKafkaMQAdapt() //.UseProtoBufferCodec() .UseMessagePackCodec(); builder.Register(p => new CPlatformContainer(ServiceLocator.Current)); }); }) .SubscribeAt() // .UseLog4net(LogLevel.Error, "Configs/log4net.config") .UseNLog(LogLevel.Error, "Config/NLog.config") //.UseServer("127.0.0.1", 98) //.UseServer("127.0.0.1", 98,“true”) //自动生成Token //.UseServer("127.0.0.1", 98,“123456789”) //固定密码Token .UseServer(options => { // options.IpEndpoint = new IPEndPoint(IPAddress.Any, 98); //options.Port = 98; // options.Ip = "127.0.0.1"; options.Token = "True"; options.ExecutionTimeoutInMilliseconds = 30000; options.MaxConcurrentRequests = 200; }) .UseServiceCache() .Configure(build => build.AddEventBusFile("eventBusSettings.json", optional: false)) .Configure(build => build.AddCacheFile("cacheSettings.json", optional: false, reloadOnChange: true)) .Configure(build => build.AddCPlatformFile("surgingSettings.json", optional: false, reloadOnChange: true)) .UseProxy() .UseStartup <Startup>() .Build(); using (host.Run()) { Console.WriteLine($"服务端启动成功,{DateTime.Now}。"); } }
static void Main(string[] args) { string consul = ConfigHelper.AllConfigInfo["ConsulSettings"]["IpAddrs"].ToString(); JToken CrawSettings = ConfigHelper.AllConfigInfo["CrawSettings"]; JToken RebbitMqSettings = ConfigHelper.AllConfigInfo["RebbitMqSettings"]; JToken HostSettings = ConfigHelper.AllConfigInfo["HostSettings"]; JToken MongoSettings = ConfigHelper.AllConfigInfo["MongoSettings"]; JToken BonusPoolSetting = ConfigHelper.AllConfigInfo["BonusPoolSetting"]; JToken Auto_CollectSettings = ConfigHelper.AllConfigInfo["Auto_CollectSettings"]; string Sports_SchemeJobSeconds = ConfigHelper.AllConfigInfo["Sports_SchemeJobSeconds"].ToString(); var mongoConfig = new kason.Sg.Core.Mongo.ConfigInfo(); mongoConfig.connectionString = MongoSettings["connectionString"].ToString(); mongoConfig.SingleInstance = bool.Parse(MongoSettings["SingleInstance"].ToString()); mongoConfig.dbName = MongoSettings["dbName"].ToString(); //初始化数据 Lottery.CrawGetters.InitConfigInfo.MongoSettings = MongoSettings; Lottery.CrawGetters.InitConfigInfo.MongoTableSettings = MongoSettings["TableNamesSettings"]; Lottery.CrawGetters.InitConfigInfo.BonusPoolSetting = CrawSettings["BonusPoolSettings"]; Lottery.CrawGetters.InitConfigInfo.MatchSettings = CrawSettings["MatchSettings"]; ServiceHelper.MatchSettings = CrawSettings["MatchSettings"]; Lottery.CrawGetters.InitConfigInfo.NumLettory_SleepTimeSpanSettings = CrawSettings["NumLettory_SleepTimeSpanSettings"]; //JToken ORMSettings = ConfigHelper.AllConfigInfo["ORMSettings"]; Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var host = new ServiceHostBuilder() .RegisterServices(builder => { builder.AddMicroService(option => { option.AddServiceRuntime() .UseMongo(mongoConfig) .AddRelateService() .AddConfigurationWatch() //option.UseZooKeeperManager(new ConfigInfo("127.0.0.1:2181")); .UseConsulManager(new Kason.Sg.Core.Consul.Configurations.ConfigInfo(consul, "MagAndCraw/serviceRoutes/", "MagAndCraw/serviceSubscribers/", "MagAndCraw/serviceCommands/", "MagAndCraw/serviceCaches/") { ReloadOnChange = true }) .UseDotNettyTransport() //.UseRabbitMQTransport() // .AddRabbitMQAdapt() // .AddCache() //.UseKafkaMQTransport(kafkaOption => //{ // kafkaOption.Servers = "127.0.0.1"; // kafkaOption.LogConnectionClose = false; // kafkaOption.MaxQueueBuffering = 10; // kafkaOption.MaxSocketBlocking = 10; // kafkaOption.EnableAutoCommit = false; //}) //.AddKafkaMQAdapt() //.UseProtoBufferCodec() .UseMessagePackCodec(); builder.Register(p => new CPlatformContainer(ServiceLocator.Current)); }); }) // .SubscribeAt() // .UseLog4net(LogLevel.Error, "Config/log4net.config") // .UseNLog(LogLevel.Error, "Config/NLog.config") .UseLog4net("Config/log4net.config") //.UseServer("127.0.0.1", 98) //.UseServer("127.0.0.1", 98,“true”) //自动生成Token //.UseServer("127.0.0.1", 98,“123456789”) //固定密码Token .UseServer(options => { // options.IpEndpoint = new IPEndPoint(IPAddress.Any, 98); // options.Port = 10098; // options.Ip = "127.0.0.1"; options.Token = "True"; options.ExecutionTimeoutInMilliseconds = 30000; options.MaxConcurrentRequests = 2000; }) // .UseServiceCache() //.Configure(build => //build.AddEventBusJson(RebbitMqSettings)) //.Configure(build => //build.AddCacheFile("cacheSettings.json", optional: false, reloadOnChange: true)) .Configure(build => build.AddCPlatformJSON(HostSettings)) // .UseProxy() .UseStartup <Startup>() .Build(); //string url = "https://1680660.com/smallSix/queryLotteryDate.do?ym=2019-04"; //var list= Lottery.CrawGetters.WinNumberGetter_1680660.GetIssuseNum(); //Console.WriteLine(string.Join(Environment.NewLine, list)); //var list = JsonHelper.Deserialize<List<KaSon.FrameWork.ORM.OrmConfigInfo>>(ORMSettings.ToString()); //DbProvider.InitConfigJson(list); //WinNumberGetter_1680660.winNum(); using (host.Run()) { Console.WriteLine($"管理、采集,开奖服务端启动成功,{DateTime.Now}。"); Lottery.CrawGetters.InitConfigInfo.Init(CrawSettings); Lottery.CrawGetters.InitConfigInfo.logFactory = ServiceLocator.GetService <ILoggerFactory>(); KaSon.FrameWork.Common.InitConfigInfo.logFactory = ServiceLocator.GetService <ILoggerFactory>(); //AutoTaskServices.AutoCaheData(int.Parse(Sports_SchemeJobSeconds)); } // 初始化内存期号 k_todo,可用彩种类型,执行一次 // LotteryGameManager lotGm = new LotteryGameManager(); // lotGm.StartInitData(); //new Sports_Business().Test(); Task.Factory.StartNew(async delegate { var obj = await Start_ConfigGameType(Auto_CollectSettings); }); //RedisMatchBusiness.ReloadCurrentBJDCMatch(); Clear(); }
protected override ServiceHostBuilder Configure(ServiceHostBuilder serviceHostBuilder) => serviceHostBuilder.UseTcp(Configure(new TcpSettings(GetEndPoint())));
static async Task EndToEndTest() { var httpAddress = $"http://localhost/test"; var tcpAddress = $"tcp://localhost:9999/tcpTest"; var host = new ServiceHostBuilder <Service>(InstanceMode.PerConnection) .WithCallback <ICallback>() //add websocket server .AddWebSocketServer(httpAddress, options => options.ReceiveBufferSize = 1024) //add tcp server .AddTcpServer(tcpAddress, options => { options.ReceiveBufferSize = 1024; }) .WithMessagePackSerializer() //it is the default .WithConsoleLogger() //default is empty .CreateHost(); host.ServiceInstanceCreated += service => { //configure service instances Console.WriteLine("Instance created"); }; await host.Open(); Console.WriteLine("Host is open"); var clientBuilder1 = new DuplexConnectionBuilder <IService, MyCallback>(InstanceMode.PerConnection) .WithWebSocketTransport(httpAddress, options => { //set connection options options.ReceiveBufferSize = 1024; }) .WithMessagePackSerializer() .WithConsoleLogger(); clientBuilder1.CallbackInstanceCreated += obj => { Console.WriteLine($"Created callback of type {obj.GetType()}"); var callback = (MyCallback)obj; //config the callback instance }; var client1 = await clientBuilder1.CreateConnection(); var client2 = await clientBuilder1.CreateConnection(); var msg = await client1.Echo("From Client 1"); Console.WriteLine(msg); msg = await client2.Echo("From Client 2"); Console.WriteLine(msg); msg = await client1.CallMeBack(); Console.WriteLine(msg); var client3 = await clientBuilder1.CreateConnection(); client3.FireAndForget("server is here now"); Console.WriteLine("client3 is here now"); //this should appear first var clientBuilder2 = new ConnectionBuilder <IOtherService>() .WithWebSocketTransport(httpAddress) .WithConsoleLogger(); var client4 = await clientBuilder2.CreateConnection(); msg = await client4.Echo("It is another Echo"); //another interface same Echo signature Console.WriteLine(msg); await Task.Delay(6000); Console.WriteLine("now with tcp"); var tcpCient = await new DuplexConnectionBuilder <IService, MyCallback>(InstanceMode.Single) .WithTcpTransport(tcpAddress) .WithConsoleLogger() .CreateConnection(); msg = await tcpCient.Echo("From TCP Client"); Console.WriteLine(msg); await tcpCient.CallMeBack(); //how to close connection, the listening will show exception that has no effect //await ((IConnection)client4).Close(); }
//monitor response time, cpu, and memory //WebSockets: 1kb msg => 5000 request/second on Corei5 4GB RAM //monitor response time, cpu, and memory //TCP: 1kb msg => 8000 request/second on Corei5 4GB RAM static async Task Profile(SocketType socketType) { var httpAddress = $"http://localhost/test"; var tcpAddress = "tcp://localhost:9988"; var hostBuilder = new ServiceHostBuilder <Service>(InstanceMode.PerCall) .WithCallback <ICallback>() .WithMessagePackSerializer() //it is the default .WithConsoleLogger(); //default is empty ConnectionBuilder <IService> clientBuilder = null; if (socketType == SocketType.WebSocket) { hostBuilder.AddWebSocketServer(httpAddress, options => { //if you set this on WebSocket, // it must be less or equal to the client's SendBufferSize, default 4KB options.ReceiveBufferSize = 1024 * 2; }); clientBuilder = new ConnectionBuilder <IService>() .WithWebSocketTransport(httpAddress, options => { //if you set this on WebSocket, // it must be less or equal to the server's ReceiveBufferSize, default 4KB options.SendBufferSize = 1024 * 2; }); } else if (socketType == SocketType.TCP) { hostBuilder.AddTcpServer(tcpAddress, options => { //if you set this on WebSocket, // it must be less or equal to the client's SendBufferSize, default 4KB options.ReceiveBufferSize = 1024 * 2; }); clientBuilder = new ConnectionBuilder <IService>() .WithTcpTransport(tcpAddress, options => { //if you set this on WebSocket, // it must be less or equal to the server's ReceiveBufferSize, default 4KB options.SendBufferSize = 1024 * 2; }); } var host = hostBuilder.CreateHost(); await host.Open(); Console.WriteLine("Host is open"); var client = await clientBuilder.CreateConnection(); //1 KB, the actual message on the wire will be more than 1 KB (depends on method type, name, and payload) var msg = new string('*', 1000); for (int j = 0; j < 100; j++) { await Task.Delay(1000); var sw = Stopwatch.StartNew(); for (int i = 0; i < 50000; i++) { var resp = await client.Echo(msg); } sw.Stop(); Console.WriteLine($">> {sw.ElapsedMilliseconds}"); } }
public void Build_adds_support_for_dependency_injection(ServiceHostBuilder sut) { var host = sut.Build(typeof(TestService)); Assert.That(host.Description.Behaviors, Has.Exactly(1).InstanceOf <DependencyInjectionServiceBehavior>()); }
static void Main(string[] args) { string consul = ConfigHelper.AllConfigInfo["ConsulSettings"]["IpAddrs"].ToString(); string Token = ConfigHelper.AllConfigInfo["ConsulSettings"]["Token"].ToString(); JToken RebbitMqSettings = ConfigHelper.AllConfigInfo["RebbitMqSettings"]; JToken HostSettings = ConfigHelper.AllConfigInfo["HostSettings"]; //public ConfigInfo(string connectionString, // string routePath = "services/serviceRoutes/", string subscriberPath = "services/serviceSubscribers/", // string commandPath = "services/serviceCommands/", string cachePath = "services/serviceCaches/", bool reloadOnChange = false); //var config = new ConfigInfo(consul, "TEST/serviceRoutes/", "TEST/serviceSubscribers/", // "TEST/serviceCommands/", "TEST/serviceCaches/", // reloadOnChange: true); var config = new ConfigInfo(consul, reloadOnChange: true); config.Token = Token; // JToken ORMSettings = ConfigHelper.AllConfigInfo["ORMSettings"]; Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var host = new ServiceHostBuilder() .RegisterServices(builder => { builder.AddMicroService(option => { option.AddServiceRuntime() .AddRelateService() .AddConfigurationWatch() //option.UseZooKeeperManager(new ConfigInfo("127.0.0.1:2181")); .UseConsulManager(config) .UseDotNettyTransport() //.UseRabbitMQTransport() //.AddRabbitMQAdapt() //.AddCache() //.UseKafkaMQTransport(kafkaOption => //{ // kafkaOption.Servers = "127.0.0.1"; // kafkaOption.LogConnectionClose = false; // kafkaOption.MaxQueueBuffering = 10; // kafkaOption.MaxSocketBlocking = 10; // kafkaOption.EnableAutoCommit = false; //}) //.AddKafkaMQAdapt() //.UseProtoBufferCodec() .UseMessagePackCodec(); builder.Register(p => new CPlatformContainer(ServiceLocator.Current)); }); }) // .SubscribeAt() .UseLog4net(LogLevel.Error, "Config/log4net.config") // .UseNLog(LogLevel.Error, "Config/NLog.config") //.UseServer("127.0.0.1", 98) //.UseServer("127.0.0.1", 98,“true”) //自动生成Token //.UseServer("127.0.0.1", 98,“123456789”) //固定密码Token .UseServer(options => { // options.IpEndpoint = new IPEndPoint(IPAddress.Any, 98); // options.Port = 10098; // options.Ip = "127.0.0.1"; //options.Token options.Token = "123456789"; options.ExecutionTimeoutInMilliseconds = 30000; options.MaxConcurrentRequests = 2000; }) // .UseServiceCache() //.Configure(build => //build.AddEventBusJson(RebbitMqSettings)) //.Configure(build => //build.AddCacheFile("cacheSettings.json", optional: false, reloadOnChange: true)) .Configure(build => build.AddCPlatformJSON(HostSettings)) .UseProxy() .UseStartup <Startup>() .Build(); //var list = JsonHelper.Deserialize<List<KaSon.FrameWork.ORM.OrmConfigInfo>>(ORMSettings.ToString()); //DbProvider.InitConfigJson(list); using (host.Run()) { #region 初始化配置 InitConfigInfo.logFactory = ServiceLocator.GetService <ILoggerFactory>(); #endregion Console.WriteLine($"服务端启动成功,{DateTime.Now}。"); } Console.ReadKey(); }
public void Build_adds_base_addresses(ServiceHostBuilder sut, Uri baseAddress) { var host = sut.Build(typeof(TestService), baseAddress); Assert.That(host.BaseAddresses, Contains.Item(baseAddress)); }