示例#1
0
        public static void ProxyNamespace(this IExportRegistrationBlock block, ProxyNamespaceConfig config)
        {
            // I mark everything as -1 priority so that if another version is registered it overrides these defaults
            block.Export <ProxyGenerator.ProxyGenerator>().As <IProxyGenerator>().WithPriority(-1).Lifestyle.Singleton().IfNotRegistered(typeof(IProxyGenerator));
            block.Export <DefaultNamingConventionService>().As <INamingConventionService>().WithPriority(-1).IfNotRegistered(typeof(INamingConventionService));
            block.ExportFactory(() => new DefaultRpcClientProvider(config.Url ?? "ReplaceMe")).As <IRpcHttpClientProvider>().WithPriority(-1).IfNotRegistered(typeof(IRpcHttpClientProvider));
            block.Export <JsonMethodObjectWriter>().As <IJsonMethodObjectWriter>().Lifestyle.Singleton().WithPriority(-1).IfNotRegistered(typeof(JsonMethodObjectWriter));
            block.Export <RpcProxyService>().As <IRpcProxyService>().WithPriority(-1).Lifestyle.SingletonPerScope().IfNotRegistered(typeof(IRpcProxyService));

            var serializerRegistration =
                block.Export <JsonSerializer>().WithPriority(-1).Lifestyle.Singleton().IfNotRegistered(typeof(JsonSerializer));

            if (config.SerializerInit != null)
            {
                serializerRegistration.Apply(config.SerializerInit);
            }

            if (config.UseDataContext)
            {
                block.Export <DataContextHeaderProcessor>().As <IRpcContextHeader>().As <IHeaderProcessor>().WithPriority(-1).Lifestyle.SingletonPerScope().IfNotRegistered(typeof(IHeaderProcessor));
            }

            var compressionPicker = new DefaultMethodCompressionPicker(config.CompressRequest, config.CompressResponse);

            block.AddMissingExportStrategyProvider(new ProxyStrategyProvider(config.CallByName, compressionPicker, config.Namespaces));
        }
示例#2
0
        private static void SetupProxyInfo(IExportRegistrationBlock block,
                                           string url,
                                           bool useDataContext,
                                           IClientSerializer serializer,
                                           INamingConventionService namingConvention,
                                           string[] namespaces)
        {
            var config = new ProxyNamespaceConfig
            {
                Url              = url,
                UseDataContext   = useDataContext,
                Namespaces       = namespaces,
                Serializer       = serializer,
                NamingConvention = namingConvention
            };

            block.AddMissingExportStrategyProvider(new ProxyStrategyProvider(config));
        }
示例#3
0
        /// <summary>
        /// Proxy a namespace with a specific config
        /// </summary>
        /// <param name="block"></param>
        /// <param name="config"></param>
        public static void ProxyNamespace(this IExportRegistrationBlock block, ProxyNamespaceConfig config)
        {
            RegisterExports(block);

            block.AddMissingExportStrategyProvider(new ProxyStrategyProvider(config));
        }