コード例 #1
0
        /// <summary>
        /// 配置Socket
        /// </summary>
        /// <param name="host"></param>
        /// <param name="configuration"></param>
        /// <param name="path"></param>
        /// <returns></returns>
        public static ServiceHost ConfigureSocket(this ServiceHost host, IConfiguration configuration, string path = null)
        {
            var config = configuration.ParseConfiguration <Config.Socket>(path);

            if (config == null)
            {
                throw new NotFoundException("未读取到Socket配置");
            }
            switch (config.ProtocolType)
            {
            case ProtocolType.Tcp:
                var tcpService = new TcpService(configuration.GetConfiguration(path));
                host.ConfigureContainer(builder => builder.RegisterInstance(tcpService).SingleInstance());
                break;

            case ProtocolType.Udp:
                var udpService = new UdpService(configuration.GetConfiguration(path));
                host.ConfigureContainer(builder => builder.RegisterInstance(udpService).SingleInstance());
                break;

            default:
                throw new Exception("未定义的协议类型");
            }
            return(host);
        }
コード例 #2
0
        /// <summary>
        /// 配置Web服务
        /// </summary>
        /// <param name="host"></param>
        /// <param name="configuration"></param>
        /// <param name="configureWebHostBuilder"></param>
        /// <param name="path"></param>
        /// <returns></returns>
        public static ServiceHost ConfigureWeb(this ServiceHost host, IConfiguration configuration, Action <IWebHostBuilder> configureWebHostBuilder, string path = null)
        {
            var webService = WebService.Init(host, configuration.GetConfiguration(path), configureWebHostBuilder);

            host.ConfigureContainer(builder => builder.RegisterInstance(webService).SingleInstance());
            return(host);
        }
コード例 #3
0
 /// <summary>
 /// 配置Quartz
 /// </summary>
 /// <param name="host"></param>
 /// <returns></returns>
 public static ServiceHost ConfigureQuartz(this ServiceHost host)
 {
     host.ConfigureContainer(builder =>
     {
         builder.RegisterType <QuartzService>().SingleInstance();
         builder.RegisterType <DependencyInjectionJobFactory>().SingleInstance();
     });
     return(host);
 }
コード例 #4
0
 /// <summary>
 /// 配置雪花生成器
 /// </summary>
 /// <param name="host"></param>
 /// <param name="workerId"></param>
 /// <param name="startTime"></param>
 /// <param name="isGlobal"></param>
 /// <returns></returns>
 public static ServiceHost ConfigureSnowflakeGenerator(this ServiceHost host, long workerId, DateTime startTime, bool isGlobal = true)
 {
     return(host.ConfigureContainer(builder =>
     {
         var registration = builder.Register(_ => new SnowflakeGenerator(workerId, startTime));
         if (isGlobal)
         {
             registration.SingleInstance();
         }
     }));
 }
コード例 #5
0
 /// <summary>
 /// 注册MemoryCache服务
 /// </summary>
 /// <param name="host"></param>
 /// <param name="storeCount"></param>
 /// <param name="isGlobal"></param>
 /// <returns></returns>
 public static ServiceHost ConfigureMemoryCache(this ServiceHost host, int storeCount = 6, bool isGlobal = true)
 {
     return(host.ConfigureContainer(builder =>
     {
         var registration = builder.Register(context => new MemoryCache(storeCount)).As <ICache>();
         if (isGlobal)
         {
             registration.SingleInstance();
         }
     }));
 }
コード例 #6
0
        /// <summary>
        /// 注册仓储
        /// </summary>
        /// <param name="host"></param>
        public static void RegisterRepositories(this ServiceHost host)
        {
            var assemblies = AppDomain.CurrentDomain.GetAssemblies();

            foreach (var assembly in assemblies)
            {
                var types = assembly.GetTypes();
                foreach (var type in types)
                {
                    var attr = type.GetCustomAttribute <RepositoryAttribute>();
                    if (attr == null)
                    {
                        return;
                    }
                    host.ConfigureContainer(builder => builder.RegisterType(type));
                }
                ;
            }
            ;
        }
コード例 #7
0
        static async Task Main(string[] args)
        {
            var host = new ServiceHost();

            host.ConfigureContainer(b =>
            {
                b.RegisterType <A>().SingleInstance();
                b.RegisterType <Job>();
            });
            host.ConfigureQuartz();
            host.OnHostStarted += async p =>
            {
                var s  = p.GetQuartz();
                var ss = await s.CreateSchedulerAsync("X", true);

                await s.CreateJobAsync <Job>("X", "1/5 * * * * ?");

                await ss.Start();
            };
            await host.RunAsync();
        }
コード例 #8
0
 /// <summary>
 /// 配置RabbitMQ
 /// </summary>
 /// <param name="host"></param>
 /// <param name="configuration"></param>
 /// <param name="path"></param>
 /// <returns></returns>
 public static ServiceHost ConfigureRabbitMQ(this ServiceHost host, IConfiguration configuration, string path = null)
 => host.ConfigureContainer(builder => builder.Register(_ => new RabbitMQService(configuration.GetConfiguration(path))).SingleInstance());
コード例 #9
0
 /// <summary>
 /// 配置SqlSugar
 /// </summary>
 /// <param name="host"></param>
 /// <param name="path"></param>
 /// <returns></returns>
 public static ServiceHost ConfigureSqlSugar(this ServiceHost host, string path = null)
 => host.ConfigureContainer(builder => builder.Register(_ => new SqlSugarService(ServiceHost.GetConfiguration(path))).SingleInstance());