Пример #1
0
        public static IServiceCollection AddKadderGrpcClient(
            this IServiceCollection services,
            Action <GrpcClientBuilder> builderAction)
        {
            var builder = new GrpcClientBuilder();

            builderAction(builder);
            services.AddSingleton <GrpcClientBuilder>();
            services.AddSingleton <GrpcServiceCallBuilder>();
            services.RegSerializer(null, builder.BinarySerializer);

            var provider           = services.BuildServiceProvider();
            var serviceCallBuilder = provider.GetService <GrpcServiceCallBuilder>();
            var binarySerializer   = provider.GetService <IBinarySerializer>();

            foreach (var options in builder.ClientOptions)
            {
                var grpcClient = new GrpcClient(options, serviceCallBuilder, binarySerializer);
                foreach (var item in grpcClient.GrpcServiceDic)
                {
                    services.AddSingleton(item.Key, item.Value);
                }
            }

            return(services);
        }
Пример #2
0
        public static IServiceCollection AddKadderGrpcClient(
            this IServiceCollection services, Action <GrpcClientBuilder> builderAction)
        {
            var builder = new GrpcClientBuilder();

            builderAction(builder);

            var serviceCallBuilder = new GrpcServiceCallBuilder();

            services.AddSingleton(builder);
            services.AddSingleton(serviceCallBuilder);
            services.RegSerializer(null, builder.BinarySerializer);

            foreach (var interceptor in builder.Interceptors)
            {
                services.AddSingleton(interceptor);
            }

            foreach (var clientMetadata in builder.ClientMetadatas)
            {
                var grpcClient = new GrpcClient(clientMetadata, builder, serviceCallBuilder);
                foreach (var interceptor in clientMetadata.PrivateInterceptors)
                {
                    services.AddSingleton(interceptor);
                }
                foreach (var item in grpcClient.GrpcServiceDic)
                {
                    services.AddSingleton(item.Key, item.Value);
                }
            }

            return(services);
        }
Пример #3
0
        public GrpcClient(GrpcClientMetadata metadata, GrpcClientBuilder builder, GrpcServiceCallBuilder serviceCallBuilder)
        {
            _clientBuilder     = builder;
            _metadata          = metadata;
            _options           = metadata.Options;
            ID                 = Guid.NewGuid();
            _lastConnectedTime = DateTime.Now;
            GrpcServiceDic     = new Dictionary <Type, Type>();
            _oldMethodDic      = new Dictionary <string, string>();
            var namespaces = $"Kadder.Client.Services";

            _codeBuilder = new CodeBuilder(namespaces, namespaces);

            var grpcServiceDic = serviceCallBuilder.GenerateHandler(_options, this, ref _codeBuilder);

            _codeAssembly = _codeBuilder.BuildAsync().Result;
            GrpcClientExtension.ClientDic.Add(ID.ToString(), this);
            foreach (var keyValuePair in grpcServiceDic)
            {
                var type = _codeAssembly.Assembly.GetType(keyValuePair.Value);
                GrpcServiceDic.Add(keyValuePair.Key, type);
            }
        }