public void Register(ContainerBuilder builder, IDistrictConfig config) { var connectionString = ((IConnectionDistrictConfig)config).ConnectionString; builder.Register <string>(c => connectionString) .Named <string>("ConnectionString"); }
/// <summary> /// 验证token 默认是不验证 /// </summary> /// <param name="config"></param> /// <param name="token"></param> /// <returns></returns> protected virtual bool VerifyToken(IDistrictConfig config, IToken token) { //var signstr = $"{token.Did}{token.Rid}{token.Ts}{config.SecretKey}"; //var isign = Utils.GetMd5(signstr); //return Equals(token.Sign, isign); return(true); }
public void SetUp(IContainer container, IDistrictConfig config) { var connectionString = ((IConnectionDistrictConfig)config).ConnectionString; if (container.IsRegistered <IDatabaseInitializer>()) { //判断是否有更新 ? //更新数据库 container.Resolve <IDatabaseInitializer>().Initialize(connectionString); } }
/// <summary> /// 验证token 默认是不验证 /// </summary> /// <param name="config"></param> /// <param name="token"></param> /// <returns></returns> protected virtual bool VerifyToken(IDistrictConfig config, IToken token) { var isign = $"{token.Did}{token.Rid}{token.Ts}{token.Uid}{config.SecretKey}".GetMD5(); if (TimeUtil.GetTimestamp(DateTime.UtcNow) / 1000 - token.Ts >= 1000 * 60 * 60 * 5)//5h { return(false); } if (Equals(isign, token.Sign)) { return(true); } return(false); }
public void Register(ContainerBuilder builder, IDistrictConfig config) { var redisConfig = (config as IRedisDistrictConfig); if (redisConfig == null) { return; } builder.Register(c => ConnectionMultiplexer.Connect(redisConfig.Redis)) .SingleInstance() .AsSelf(); builder.Register(c => c.Resolve <ConnectionMultiplexer>().GetDatabase(redisConfig.RedisDb)) .As <IDatabase>() .InstancePerDependency(); }
public void Execute(IDistrictContainer container, IDistrictConfig config) { if (Logger.IsDebugEnabled) { Logger.Debug($"TASK [{typeof(T).Name}] START!"); } if (!Continue()) { if (Logger.IsDebugEnabled) { Logger.Debug($"{typeof(T).Name} NOT Continue!"); } return; } SubJob(container, config); if (Logger.IsDebugEnabled) { Logger.Debug($"TASK [{typeof(T).Name}] DONE!"); } }
protected abstract void SubJob(IDistrictContainer container, IDistrictConfig config);
public override IDatabaseFactory GetDistrictDatabaseFactory(IDistrictConfig config) { throw new NotImplementedException(); }
public void SetUp(IContainer container, IDistrictConfig config) { }
protected override void SubJob(IDistrictContainer container, IDistrictConfig config) { Console.WriteLine(DateTime.UtcNow); }
protected override bool VerifyToken(IDistrictConfig config, IToken token) { return(true); }
private ILifetimeScope LoadDistrictContainer(IDistrictConfig districtConfig) { if (districtConfig == null) { return(null); } if (Log.IsTraceEnabled) { Log.Trace($"=========== Init district container\t{districtConfig.Id} ==========="); } var configtypes = districtConfig.GetType().GetInterfaces(); var builder = new ContainerBuilder(); foreach (var type in configtypes) { var attrs = type.GetCustomAttributes(typeof(DistrictConfigRegisterAttribute), false); if (!attrs.Any()) { continue; } if (attrs[0] is DistrictConfigRegisterAttribute attr) { ((IDistrictConfigRegister)Activator.CreateInstance(attr.RegisterType)) .Register(builder, districtConfig); } } builder.Register(c => ServerIoc.Resolve <IRedisSerializer>()) .As <IRedisSerializer>() .SingleInstance(); builder.Register(c => new SqlConnection(c.ResolveKeyed <string>(ConnectionStringName))) .As <IDbConnection>() .InstancePerDependency(); builder.Register(c => new DefaultGameCache(c.Resolve <IRedisSerializer>(), c.Resolve <IDatabase>())) .As <IGameCache>() .InstancePerDependency(); builder.Register(c => districtConfig) .As <IDistrictConfig>() .AsImplementedInterfaces() .SingleInstance(); builder.Register(c => this) .As <IDistrictContainer>() .SingleInstance(); builder.Register(c => GetConfigAssemblyList()) .Keyed <List <Assembly> >("ConfigAssemblyList") .SingleInstance(); builder.Register(c => GetServiceAssemblyList()) .Keyed <List <Assembly> >("ServiceAssemblyList") .SingleInstance(); if (ServerIoc.IsRegistered <IMessageBroadcast>()) { builder.Register(c => ServerIoc.Resolve <IMessageBroadcast>()) .As <IMessageBroadcast>() .SingleInstance(); } else { builder.Register(c => new DefaultMessageBroadcast()) .As <IMessageBroadcast>() .SingleInstance(); } if (ServerIoc.IsRegistered <IPushService>()) { builder.Register(c => ServerIoc.Resolve <IPushService>()) .As <IPushService>() .SingleInstance(); } InitDistrictRepository(builder); var services = GetServiceAssemblyList(); if (services.Any()) { services.ForEach(x => { foreach (var type in x.GetTypes()) { if (type.IsInterface || type.IsAbstract || !typeof(IService).IsAssignableFrom(type)) { continue; } builder.RegisterType(type) //.Where(item => typeof(IService).IsAssignableFrom(item)) //.WithProperty("Test",123) .PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies) //.WithProperty(new ResolvedParameter((pi, context) => pi.Name == "Resolver", (pi, ctx) => ctx)) .AsSelf() .SingleInstance(); } }); } BuildDistrictContainer(builder); var container = builder.Build(); foreach (var type in configtypes) { var attrs = type.GetCustomAttributes(typeof(DistrictConfigRegisterAttribute), false); if (!attrs.Any()) { continue; } if (attrs[0] is DistrictConfigRegisterAttribute attr) { if (Log.IsTraceEnabled) { Log.Trace($"SetUp DistrictConfig -> {type.Name}"); } ((IDistrictConfigRegister)Activator.CreateInstance(attr.RegisterType)) .SetUp(container, districtConfig); } } if (Log.IsTraceEnabled) { Log.Trace(""); } return(container.BeginLifetimeScope()); }