Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
 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>());
     }
 }
Exemplo n.º 4
0
        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();
            });
        }
Exemplo n.º 5
0
 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);
         }
     });
 }
Exemplo n.º 6
0
        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();
            });
        }
Exemplo n.º 7
0
        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();
            });
        }
Exemplo n.º 8
0
        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();
            //}
            //}
        }
Exemplo n.º 9
0
        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();
                }
            }
        }
Exemplo n.º 10
0
        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);
                }
            });
        }
Exemplo n.º 11
0
 /// <summary>
 /// 创建Ioc工具类接口
 /// </summary>
 /// <returns>Ioc工具类接口</returns>
 public static IIocTool CreateIIocTool()
 {
     return(IocLoader.Get <IIocTool>("Zh.Framework.IocApplicationContext"));
 }