void Init() { //SettingService.AppName = "DLockTest"; //SettingService.Local.IpAddress = "127.0.0.1"; //SettingService.Local.Port = 6660; IocLoader.GetAutoFacContainerBuilder().RegisterType(typeof(RpcConnectorImpl)).As(typeof(IRpcConnector)).SingleInstance(); IocLoader.Build(); DefaultConfigManager.SetDefaultConnectionPool(100, Environment.ProcessorCount * 2, 50); DefaultConfigManager.SetDefaultConfiguration("DLockTest", "127.0.0.1", 6660, false); }
static void Main(string[] args) { if (args.Contains("-help")) { Log.ConsoleWriteLine(@" 启动参数: -p 6659 设置启动端口 -xt 200 设置服务最大线程数 -t 20000 设置超时时间(单位毫秒) -w 1 设置权重 -h 192.168.0.2 设置服务在注册中心的地址 -tr false 设置调用链追踪是否启用" ); return; } /** * 启动默认DI库为 Autofac 可以切换为微软自带的DI库 DependencyInjection */ Bootstrap.StartUp(args, () =>//服务配置文件读取完成后回调(服务未启动) { var services = IocLoader.GetServiceDescriptors(); services.AddSingleton <IRpcConnector, RpcConnectorImpl>(); services.AddLogging(); #region smartsql services .AddSmartSql((sp, builder) => { //builder.UseProperties(Configuration); }) .AddRepositoryFromAssembly(o => { o.AssemblyString = "Anno.Plugs.SmsService"; o.Filter = (type) => type.Namespace == "Anno.Plugs.SmsService.DyRepositories"; }) .AddInvokeSync(options => { }); #endregion } , () =>//服务启动后的回调方法 { /** * 服务Api文档写入注册中心 */ Bootstrap.ApiDoc(); var provicer = IocLoader.Resolve <IServiceProvider>(); provicer.UseSmartSqlSync(); provicer.UseSmartSqlSubscriber((syncRequest) => { Console.Error.WriteLine(syncRequest.Scope); }); } , IocType.DependencyInjection); }
public void PreConfigurationBootstrap() { /* * Anno服务接口通过代理注册到IOC容器中去 */ try { var builder = IocLoader.GetAutoFacContainerBuilder(); builder.RegisterInstance <ILogService>(AnnoProxyBuilder.GetService <ILogService>()); } catch { var builder = IocLoader.GetServiceDescriptors(); builder.AddSingleton <ILogService>(AnnoProxyBuilder.GetService <ILogService>()); } }
static void Main(string[] args) { if (args.Contains("-help")) { Log.WriteLineAlignNoDate(@" 启动参数: -p 6659 设置启动端口 -xt 200 设置服务最大线程数 -t 20000 设置超时时间(单位毫秒) -w 1 设置权重 -h 192.168.0.2 设置服务在注册中心的地址 -tr false 设置调用链追踪是否启用 --reg false 重新注册服务 "); return; } /** * 启动默认DI库为 Autofac 可以切换为微软自带的DI库 DependencyInjection */ Bootstrap.StartUp(args, () =>//服务配置文件读取完成后回调(服务未启动) { //Anno.Const.SettingService.TraceOnOff = true; /* * 功能插件选择是Thrift还是 Grpc * Install-Package Anno.Rpc.Client -Version 1.0.2.6 Thrift * Install-Package Anno.Rpc.ServerGrpc -Version 1.0.1.5 Grpc * 此处为 Thrift */ var autofac = IocLoader.GetAutoFacContainerBuilder(); /** * IRpcConnector 是Anno.EngineData 内置的服务调用接口 * 例如:this.InvokeProcessor("Anno.Plugs.SoEasy", "AnnoSoEasy", "SayHi", input) * IRpcConnector 接口用户可以自己实现也可以使用 Thrift或者Grpc Anno内置的实现 * 此处使用的是Grpc的实现 */ autofac.RegisterType(typeof(RpcConnectorImpl)).As(typeof(IRpcConnector)).SingleInstance(); } , () =>//服务启动后的回调方法 { /** * 服务Api文档写入注册中心 */ Bootstrap.ApiDoc(); }); }
static void Main(string[] args) { Console.Title = "AnnoTraceContainer"; Bootstrap.StartUp(args, () => { Anno.Const.SettingService.TraceOnOff = false; var cb = IocLoader.GetAutoFacContainerBuilder(); cb.RegisterType(typeof(RpcConnectorImpl)).As(typeof(IRpcConnector)).SingleInstance(); }, () => { //startUp CallBack List <AnnoData> routings = new List <AnnoData>(); foreach (var item in Anno.EngineData.Routing.Routing.Router) { if (item.Value.RoutMethod.Name == "get_ActionResult") { continue; } var parameters = item.Value.RoutMethod.GetParameters().ToList().Select(it => new ParametersValue { Name = it.Name, Position = it.Position, ParameterType = it.ParameterType.FullName }).ToList(); routings.Add(new AnnoData() { App = Anno.Const.SettingService.AppName, Id = $"{Anno.Const.SettingService.AppName}:{item.Key}", Value = Newtonsoft.Json.JsonConvert.SerializeObject(new DataValue { Name = item.Value.RoutMethod.Name, Parameters = parameters }) }); } Dictionary <string, string> input = new Dictionary <string, string>(); input.Add(CONST.Opt, CONST.DeleteByApp); input.Add(CONST.App, Anno.Const.SettingService.AppName); var del = Newtonsoft.Json.JsonConvert.DeserializeObject <AnnoDataResult>(StorageEngine.Invoke(input)); if (del.Status == false) { Anno.Log.Log.Error(del); } input.Clear(); input.Add(CONST.Opt, CONST.UpsertBatch); input.Add(CONST.Data, Newtonsoft.Json.JsonConvert.SerializeObject(routings)); var rlt = Newtonsoft.Json.JsonConvert.DeserializeObject <AnnoDataResult>(StorageEngine.Invoke(input)); if (rlt.Status == false) { Anno.Log.Log.Error(rlt); } }); }
static void Main(string[] args) { if (args.Contains("-help")) { Log.WriteLineNoDate(@" 启动参数: -p 6659 设置启动端口 -xt 200 设置服务最大线程数 -t 20000 设置超时时间(单位毫秒) -w 1 设置权重 -h 192.168.0.2 设置服务在注册中心的地址 -tr false 设置调用链追踪是否启用 "); return; } /** * 启动默认DI库为 Autofac 可以切换为微软自带的DI库 DependencyInjection */ Bootstrap.StartUp(args, () =>//服务配置文件读取完成后回调(服务未启动) { //Anno.Const.SettingService.TraceOnOff = true; /* * 功能插件选择是Thrift还是 Grpc * Install-Package Anno.Rpc.Client -Version 1.0.2.6 Thrift * Install-Package Anno.Rpc.ServerGrpc -Version 1.0.1.5 Grpc * 此处为 Thrift */ var autofac = IocLoader.GetAutoFacContainerBuilder(); autofac.RegisterType(typeof(RpcConnectorImpl)).As(typeof(IRpcConnector)).SingleInstance(); } , () =>//服务启动后的回调方法 { /** * 服务Api文档写入注册中心 */ Bootstrap.ApiDoc(); }); }
static void AnnoService(string[] args) { if (args.Contains("-help")) { Log.WriteLineNoDate(@" 启动参数: -p 6659 设置启动端口 -xt 200 设置服务最大线程数 -t 20000 设置超时时间(单位毫秒) -w 1 设置权重 -h 192.168.0.2 设置服务在注册中心的地址 -tr false 设置调用链追踪是否启用" ); return; } /** * 启动默认DI库为 Autofac 可以切换为微软自带的DI库 DependencyInjection */ Bootstrap.StartUp(args, () =>//服务配置文件读取完成后回调(服务未启动) { var autofac = IocLoader.GetAutoFacContainerBuilder(); /** * IRpcConnector 是Anno.EngineData 内置的服务调用接口 * 例如:this.InvokeProcessor("Anno.Plugs.SoEasy", "AnnoSoEasy", "SayHi", input) * IRpcConnector 接口用户可以自己实现也可以使用 Thrift或者Grpc Anno内置的实现 * 此处使用的是Thrift的实现 */ autofac.RegisterType(typeof(RpcConnectorImpl)).As(typeof(IRpcConnector)).SingleInstance(); } , () =>//服务启动后的回调方法 { /** * 服务Api文档写入注册中心 */ Bootstrap.ApiDoc(); }); }
protected override void OnStart(string[] args) { Log.Info("Starting the application..."); IocContainer.Container = IocLoader.Init(); hostAccountService = new SimpleInjectorServiceHost(IocContainer.Container, typeof(AccountService)); hostAddressService = new SimpleInjectorServiceHost(IocContainer.Container, typeof(AddressService)); hostAuditService = new SimpleInjectorServiceHost(IocContainer.Container, typeof(AuditService)); hostCompanyService = new SimpleInjectorServiceHost(IocContainer.Container, typeof(CompanyService)); hostEmployeeService = new SimpleInjectorServiceHost(IocContainer.Container, typeof(EmployeeService)); hostEntityProductService = new SimpleInjectorServiceHost(IocContainer.Container, typeof(EntityProductService)); hostFeeScheduleService = new SimpleInjectorServiceHost(IocContainer.Container, typeof(FeeScheduleService)); hostInvoiceService = new SimpleInjectorServiceHost(IocContainer.Container, typeof(InvoiceService)); hostLedgerService = new SimpleInjectorServiceHost(IocContainer.Container, typeof(LedgerService)); hostOrderService = new SimpleInjectorServiceHost(IocContainer.Container, typeof(OrderService)); hostProductService = new SimpleInjectorServiceHost(IocContainer.Container, typeof(ProductService)); hostSessionService = new SimpleInjectorServiceHost(IocContainer.Container, typeof(SessionService)); hostTypeService = new SimpleInjectorServiceHost(IocContainer.Container, typeof(TypeService)); hostIdentityUserService = new SimpleInjectorServiceHost(IocContainer.Container, typeof(IdentityUserService)); hostIdentityRoleService = new SimpleInjectorServiceHost(IocContainer.Container, typeof(IdentityRoleService)); //using (IocContainer.Container) //{ Log.Info("Configuring SimpleInjectorServiceHost..."); try { StartService(hostAccountService, "Account Service"); StartService(hostAddressService, "Address Service"); StartService(hostAuditService, "Audit Service"); StartService(hostCompanyService, "Company Service"); StartService(hostEmployeeService, "Employee Service"); StartService(hostEntityProductService, "Entity Product Service"); StartService(hostFeeScheduleService, "Fee Schedule Service"); StartService(hostInvoiceService, "Invoice Service"); StartService(hostLedgerService, "Ledger Service"); StartService(hostOrderService, "Order Service"); StartService(hostProductService, "Product Service"); StartService(hostSessionService, "Session Service"); StartService(hostTypeService, "Type Service"); StartService(hostIdentityUserService, "Identity User Service"); StartService(hostIdentityRoleService, "Identity Role Service"); //Console.ReadLine(); } catch (SM.CommunicationException ce) { Log.Error("An exception occurred: {0}", ce.Message); } catch (Exception ex) { Log.Error("An exception occurred: {0}", ex.Message); } //finally //{ // hostAccountService.Abort(); // hostAddressService.Abort(); // hostAuditService.Abort(); // hostCompanyService.Abort(); // hostEmployeeService.Abort(); // hostEntityProductService.Abort(); // hostFeeScheduleService.Abort(); // hostInvoiceService.Abort(); // hostLedgerService.Abort(); // hostOrderService.Abort(); // hostProductService.Abort(); // hostSessionService.Abort(); // hostTypeService.Abort(); // hostIdentityUserService.Abort(); // hostIdentityRoleService.Abort(); //} //} }
static void Main(string[] args) { //using (ServiceHost host = new ServiceHost(typeof(QIQO.Business.Services.AccountService))) //{ // host.Open(); // Console.WriteLine("Account Service Started @ " + DateTime.Now.ToString()); // Console.ReadLine(); // host.Close(); //} //Logger logr = new Logger("QIQO.Common.Core"); Log.Info("Starting the application..."); IocContainer.Container = IocLoader.Init(); //using (IUnityContainer container = new UnityContainer()) using (IocContainer.Container) { //RegisterTypes(container); //IocContainer.Container = container; // Step 1 Create a URI to serve as the base address. //Uri baseAddress = new Uri("net.tcp://*****:*****@ " + DateTime.Now.ToString()); // Console.ReadLine(); // hostAccountService.Close(); // Log.Info("Account Service stopped @ " + DateTime.Now.ToString()); //} StartService(hostAccountService, "Account Service"); StartService(hostAddressService, "Address Service"); StartService(hostAuditService, "Audit Service"); StartService(hostCompanyService, "Company Service"); StartService(hostEmployeeService, "Employee Service"); StartService(hostEntityProductService, "Entity Product Service"); StartService(hostFeeScheduleService, "Fee Schedule Service"); StartService(hostInvoiceService, "Invoice Service"); StartService(hostLedgerService, "Ledger Service"); StartService(hostOrderService, "Order Service"); StartService(hostProductService, "Product Service"); StartService(hostSessionService, "Session Service"); StartService(hostTypeService, "Type Service"); StartService(hostIdentityUserService, "Identity User Service"); StartService(hostIdentityRoleService, "Identity Role Service"); Console.WriteLine(""); Console.WriteLine("Press [Enter] to exit."); Console.ReadLine(); Console.WriteLine(""); StopService(hostAccountService, "Account Service"); StopService(hostAddressService, "Address Service"); StopService(hostAuditService, "Audit Service"); StopService(hostCompanyService, "Company Service"); StopService(hostEmployeeService, "Employee Service"); StopService(hostEntityProductService, "Entity Product Service"); StopService(hostFeeScheduleService, "Fee Schedule Service"); StopService(hostInvoiceService, "Invoice Service"); StopService(hostLedgerService, "Ledger Service"); StopService(hostOrderService, "Order Service"); StopService(hostProductService, "Product Service"); StopService(hostSessionService, "Session Service"); StopService(hostTypeService, "Type Service"); StopService(hostIdentityUserService, "Identity User Service"); StopService(hostIdentityRoleService, "Identity Role Service"); } catch (SM.CommunicationException ce) { Log.Error("An exception occurred: {0}", ce.Message); } catch (Exception ex) { Log.Error("An exception occurred: {0}", ex.Message); } finally { hostAccountService.Abort(); hostAddressService.Abort(); hostAuditService.Abort(); hostCompanyService.Abort(); hostEmployeeService.Abort(); hostEntityProductService.Abort(); hostFeeScheduleService.Abort(); hostInvoiceService.Abort(); hostLedgerService.Abort(); hostOrderService.Abort(); hostProductService.Abort(); hostSessionService.Abort(); hostTypeService.Abort(); hostIdentityUserService.Abort(); hostIdentityRoleService.Abort(); } } }
static void Main(string[] args) { if (args.Contains("-help")) { Log.ConsoleWriteLine(@" 启动参数: -p 6659 设置启动端口 -xt 200 设置服务最大线程数 -t 20000 设置超时时间(单位毫秒) -w 1 设置权重 -h 192.168.0.2 设置服务在注册中心的地址 -tr false 设置调用链追踪是否启用" ); return; } Bootstrap.StartUp(args, () => { //Anno.Const.SettingService.TraceOnOff = true; var autofac = IocLoader.GetAutoFacContainerBuilder(); autofac.RegisterType(typeof(RpcConnectorImpl)).As(typeof(IRpcConnector)).SingleInstance(); }, () => { //startUp CallBack List <AnnoData> routings = new List <AnnoData>(); foreach (var item in Anno.EngineData.Routing.Routing.Router) { if (item.Value.RoutMethod.Name == "get_ActionResult") { continue; } var parameters = item.Value.RoutMethod.GetParameters().ToList().Select(it => { var parameter = new ParametersValue { Name = it.Name, Position = it.Position, ParameterType = it.ParameterType.FullName }; var pa = it.GetCustomAttributes <AnnoInfoAttribute>().ToList(); if (pa.Any()) { parameter.Desc = pa.First().Desc; } return(parameter); }).ToList(); string methodDesc = String.Empty; var mAnnoInfoAttributes = item.Value.RoutMethod.GetCustomAttributes <AnnoInfoAttribute>().ToList(); if (mAnnoInfoAttributes.Count > 0) { methodDesc = mAnnoInfoAttributes.First().Desc; } routings.Add(new AnnoData() { App = Anno.Const.SettingService.AppName, Id = $"{Anno.Const.SettingService.AppName}:{item.Key}", Value = Newtonsoft.Json.JsonConvert.SerializeObject(new DataValue { Desc = methodDesc, Name = item.Value.RoutMethod.Name, Parameters = parameters }) }); } Dictionary <string, string> input = new Dictionary <string, string>(); input.Add(CONST.Opt, CONST.DeleteByApp); input.Add(CONST.App, Anno.Const.SettingService.AppName); var del = Newtonsoft.Json.JsonConvert.DeserializeObject <AnnoDataResult>(StorageEngine.Invoke(input)); if (del.Status == false) { Anno.Log.Log.Error(del); } input.Clear(); input.Add(CONST.Opt, CONST.UpsertBatch); input.Add(CONST.Data, Newtonsoft.Json.JsonConvert.SerializeObject(routings)); var rlt = Newtonsoft.Json.JsonConvert.DeserializeObject <AnnoDataResult>(StorageEngine.Invoke(input)); if (rlt.Status == false) { Anno.Log.Log.Error(rlt); } }); }
/// <summary> /// 创建Ioc工具类接口 /// </summary> /// <returns>Ioc工具类接口</returns> public static IIocTool CreateIIocTool() { return(IocLoader.Get <IIocTool>("Zh.Framework.IocApplicationContext")); }