Ejemplo n.º 1
0
 /// <summary> 使用Http传输协议 </summary>
 /// <param name="builder"></param>
 /// <returns></returns>
 public static IMicroServerBuilder AddHttpProtocol(this IMicroServerBuilder builder)
 {
     Constants.Protocol = ServiceProtocol.Http;
     builder.TryAddSingleton <IHttpContextAccessor, HttpContextAccessor>();
     builder.AddSession <HttpPrincipalAccessor>();
     builder.AddSingleton <IMicroListener, HttpMicroListener>();
     return(builder);
 }
Ejemplo n.º 2
0
 /// <summary> 使用Session。 </summary>
 /// <param name="builder">服务构建者。</param>
 /// <returns>服务构建者。</returns>
 public static IMicroServerBuilder AddSession <T>(this IMicroServerBuilder builder)
     where T : class, IPrincipalAccessor
 {
     //Session
     builder.AddScoped <IPrincipalAccessor, T>();
     builder.AddScoped <IMicroSession, ClaimMicroSession>();
     return(builder);
 }
Ejemplo n.º 3
0
 /// <summary> 使用Consul作为服务注册和发现的组件 </summary>
 /// <param name="builder"></param>
 /// <param name="server"></param>
 /// <param name="token"></param>
 /// <returns></returns>
 public static IMicroServerBuilder AddConsul(this IMicroServerBuilder builder, string server,
                                             string token = null)
 {
     builder.Services.AddSingleton <IServiceRegister>(provider =>
     {
         var logger = provider.GetService <ILogger <ConsulServiceRegister> >();
         return(new ConsulServiceRegister(logger, server, token));
     });
     return(builder);
 }
Ejemplo n.º 4
0
 /// <summary> 使用DotNetty的TCP传输协议 </summary>
 /// <param name="builder"></param>
 /// <returns></returns>
 public static IMicroServerBuilder AddTcpProtocol(this IMicroServerBuilder builder)
 {
     builder.AddSingleton <IMicroListener>(provider =>
     {
         var coderFactory  = provider.GetService <IMessageCodecFactory>();
         var loggerFactory = provider.GetService <ILoggerFactory>();
         return(new DotNettyMicroListener(loggerFactory, coderFactory));
     });
     return(builder);
 }
Ejemplo n.º 5
0
 /// <summary> 添加微服务 </summary>
 /// <param name="services"></param>
 /// <param name="builderAction"></param>
 /// <returns></returns>
 public static IServiceCollection AddMicroService(this IMicroServerBuilder services, Action <IMicroServerBuilder> builderAction)
 {
     builderAction.Invoke(services);
     services.AddSingleton <IAssemblyFinder, DefaultAssemblyFinder>();
     services.AddSingleton <ITypeFinder, DefaultTypeFinder>();
     services.AddSingleton <IMicroEntryFactory, MicroEntryFactory>();
     services.AddSingleton <IMicroExecutor, MicroExecutor>();
     services.AddSingleton <IMicroHost, MicroHost>();
     return(services);
 }
Ejemplo n.º 6
0
 /// <summary>
 /// 使用Consul作为服务注册和发现的组件
 /// 读取配置:consul
 /// </summary>
 /// <param name="builder"></param>
 /// <param name="optionAction"></param>
 /// <returns></returns>
 public static IMicroServerBuilder AddConsul(this IMicroServerBuilder builder, Action <ConsulOption> optionAction = null)
 {
     builder.Services.AddSingleton <IServiceRegister>(provider =>
     {
         var option = ConsulOption.Config();
         optionAction?.Invoke(option);
         var logger = provider.GetService <ILogger <ConsulServiceRegister> >();
         return(new ConsulServiceRegister(logger, option.Server, option.Token));
     });
     return(builder);
 }
Ejemplo n.º 7
0
 /// <summary> 使用DotNetty的UDP传输协议 </summary>
 /// <param name="builder"></param>
 /// <returns></returns>
 public static IMicroServerBuilder AddUdpProtocol(this IMicroServerBuilder builder)
 {
     Constants.Protocol = ServiceProtocol.Udp;
     builder.Services.AddSingleton <IMicroListener>(provider =>
     {
         var coderFactory  = provider.GetService <IMessageCodec>();
         var loggerFactory = provider.GetService <ILoggerFactory>();
         return(new UdpMicroListener(loggerFactory, coderFactory));
     });
     return(builder);
 }
Ejemplo n.º 8
0
 /// <summary> 添加默认服务路由 </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="builder"></param>
 /// <param name="routerAction"></param>
 /// <returns></returns>
 public static IMicroServerBuilder AddDefaultRouter(this IMicroServerBuilder builder, Action <DefaultServiceRouter> routerAction = null)
 {
     builder.AddSingleton <DefaultServiceRouter>();
     builder.AddSingleton <IServiceRegister>(provider =>
     {
         var router = provider.GetService <DefaultServiceRouter>();
         routerAction?.Invoke(router);
         return(router);
     });
     return(builder);
 }
Ejemplo n.º 9
0
 /// <summary> 使用Json编解码器。 </summary>
 /// <param name="builder">服务构建者。</param>
 /// <returns>服务构建者。</returns>
 public static IMicroServerBuilder AddJsonCodec(this IMicroServerBuilder builder)
 {
     Constants.Codec = ServiceCodec.Json;
     builder.AddSingleton <IMessageSerializer, JsonMessageSerializer>();
     builder.AddSingleton <IMessageCodec, JsonCodec>(provider =>
     {
         var serializer = provider.GetService <IMessageSerializer>(ServiceCodec.Json);
         var config     = provider.GetService <SpearConfig>();
         return(new JsonCodec(serializer, config));
     });
     return(builder);
 }
 /// <summary> 使用DotNetty的GRpc传输协议 </summary>
 /// <param name="builder"></param>
 /// <returns></returns>
 public static IMicroServerBuilder AddGrpcProtocol(this IMicroServerBuilder builder)
 {
     Constants.Protocol = ServiceProtocol.Grpc;
     builder.Services.AddSingleton <IMicroEntryFactory, GrpcEntryFactory>();
     builder.Services.AddSingleton <IMicroListener>(provider =>
     {
         var loggerFactory = provider.GetService <ILoggerFactory>();
         var entryFactory  = provider.GetService <IMicroEntryFactory>();
         return(new GrpcMicroListener(loggerFactory, entryFactory, provider));
     });
     return(builder);
 }
Ejemplo n.º 11
0
 /// <summary> 使用Json编解码器。 </summary>
 /// <param name="builder">服务构建者。</param>
 /// <returns>服务构建者。</returns>
 public static IMicroServerBuilder AddProtoBufCodec(this IMicroServerBuilder builder)
 {
     Constants.Codec = ServiceCodec.ProtoBuf;
     builder.Services.AddSingleton <IMessageSerializer, ProtoBufferSerializer>();
     builder.Services.AddSingleton <IMessageCodec, ProtoBufferCodec>(provider =>
     {
         var serializer = provider.GetService <IMessageSerializer>(ServiceCodec.ProtoBuf);
         var config     = provider.GetService <SpearConfig>();
         return(new ProtoBufferCodec(serializer, config));
     });
     return(builder);
 }
Ejemplo n.º 12
0
 /// <summary> 使用Http传输协议 </summary>
 /// <param name="builder"></param>
 /// <returns></returns>
 public static IMicroServerBuilder AddHttpProtocol(this IMicroServerBuilder builder)
 {
     builder.TryAddSingleton <IHttpContextAccessor, HttpContextAccessor>();
     builder.AddSession <HttpPrincipalAccessor>();
     builder.AddSingleton <IMicroListener>(provider =>
     {
         var coderFactory  = provider.GetService <IMessageCodecFactory>();
         var entryFactory  = provider.GetService <IMicroEntryFactory>();
         var loggerFactory = provider.GetService <ILoggerFactory>();
         return(new HttpMicroListener(coderFactory, entryFactory, loggerFactory));
     });
     return(builder);
 }
Ejemplo n.º 13
0
        /// <summary> 使用Json编解码器。 </summary>
        /// <param name="builder">服务构建者。</param>
        /// <returns>服务构建者。</returns>
        public static IMicroServerBuilder AddMessagePackCodec(this IMicroServerBuilder builder)
        {
            Constants.Codec = ServiceCodec.MessagePack;
            builder.Services.AddSingleton <IMessageSerializer, MessagePackMessageSerializer>();
            builder.Services.AddSingleton <IMessageCodec, MessagePackCodec>(provider =>
            {
                var serializer = provider.GetService <IMessageSerializer>(ServiceCodec.MessagePack);
                var config     = provider.GetService <SpearConfig>();
                return(new MessagePackCodec(serializer, config));
            });

            return(builder);
        }
 /// <summary> 使用Nacos服务注册 </summary>
 /// <param name="builder"></param>
 /// <param name="configAction"></param>
 /// <returns></returns>
 public static IMicroServerBuilder AddNacos(this IMicroServerBuilder builder,
                                            Action <NacosConfig> configAction = null)
 {
     builder.Services.AddNacosCore(configAction);
     builder.Services.AddSingleton <IServiceRegister>(provider =>
     {
         var config        = provider.GetService <NacosConfig>();
         var client        = provider.GetService <INacosClient>();
         var helper        = provider.GetService <NacosListenerHelper>();
         var loggerFactory = provider.GetService <ILoggerFactory>();
         return(new NacosServiceRegister(config, client, helper, loggerFactory));
     });
     return(builder);
 }
Ejemplo n.º 15
0
 /// <summary> 使用Session。 </summary>
 /// <param name="builder">服务构建者。</param>
 /// <returns>服务构建者。</returns>
 public static IMicroServerBuilder AddSession(this IMicroServerBuilder builder)
 {
     //Session
     builder.AddSession <DefaultPrincipalAccessor>();
     return(builder);
 }
Ejemplo n.º 16
0
 /// <summary> 使用WebSocket传输协议 </summary>
 /// <param name="builder"></param>
 /// <returns></returns>
 public static IMicroServerBuilder AddWebSocketProtocol(this IMicroServerBuilder builder)
 {
     Constants.Protocol = ServiceProtocol.Ws;
     builder.Services.AddSingleton <IMicroListener, WebSocketListener>();
     return(builder);
 }
Ejemplo n.º 17
0
 /// <summary> 使用DotNetty的TCP传输协议 </summary>
 /// <param name="builder"></param>
 /// <returns></returns>
 public static IMicroServerBuilder AddTcpProtocol(this IMicroServerBuilder builder)
 {
     Constants.Protocol = ServiceProtocol.Tcp;
     builder.AddSingleton <IMicroListener, DotNettyMicroListener>();
     return(builder);
 }