Exemplo n.º 1
0
        public InvokeResult Invoke(IInvocation invocation)
        {
            var instance = SeifApplication.ResolveByName(invocation.ServiceName);
            var type     = instance.GetType();

            //var parameters = TypeUtils.ConvertTypeMap(_serializer, invocation.Parameters);
            var parameterExts = invocation.Parameters.Select(p => ParameterExt.From(p, _serializer)).ToList();

            var methodInfo = type.GetMethod(invocation.MethodName,
                                            BindingFlags.Instance | BindingFlags.Public, null, parameterExts.Select(p => p.Type).ToArray(), new ParameterModifier[0]);

            var invokeResult = new InvokeResult();

            try
            {
                var result = methodInfo.Invoke(instance, parameterExts.Select(p => p.Value).ToArray());
                invokeResult.Status  = ResultStatus.Success;
                invokeResult.Message = "调用成功";
                invokeResult.Result  = _serializer.Serialize(result);
            }
            catch (Exception ex)
            {
                invokeResult.Status     = ResultStatus.UnknownError;
                invokeResult.Exceptions = new[] { ex };
                invokeResult.Message    = ex.Message;
            }

            return(invokeResult);
        }
Exemplo n.º 2
0
        public static void Main()
        {
            var clientConfig = new ConsumerConfiguration();

            var registry = new GenericRegistry(null, null);

            SeifApplication.Initialize(registry, null, clientConfig, null);
            SeifApplication.ReferenceService <IMockService>(new ProxyOptions(), new IInvokeFilter[0]);
        }
Exemplo n.º 3
0
        public static void Main()
        {
            var servConfig = new ProviderConfiguration();

            servConfig.ApiDomain = "api.aaa.com";
            var clientConfig = new ConsumerConfiguration();

            var registry = new GenericRegistry(null, null);

            SeifApplication.Initialize(registry, servConfig, clientConfig, null);

            SeifApplication.ExposeService <IMockService, MockService>(new ServiceConfiguration());
        }
Exemplo n.º 4
0
        public IInvoker CreateInvoker(ServiceRegistryMetta options)
        {
            //var exists = SeifApplication.AppEnv.GlobalConfiguration.Invokers.ContainsKey(options.Protocol);

            //if (!exists)
            //    throw new Exception(string.Format("Cann't find invoker by name {0}", options.Protocol));

            //return SeifApplication.AppEnv.GlobalConfiguration.Invokers[options.Protocol];

            var serializer = SeifApplication.GetSerializer(options.SerializeMode);

            switch (options.Protocol.ToUpperInvariant())
            {
            case "HTTPINVOKER":
                return(new HttpInvoker(options.ServerAddress, serializer, options.Attributes));

            default:
                return(null);
            }
        }