/// <summary> /// 服务分发 /// </summary> /// <param name="req"></param> /// <returns></returns> /// <remarks> /// 可以在请求参数中指定服务分发器的名称,如果没有指定则 /// </remarks> public static IServiceResponse Dispatch(IServiceRequest req) { if (req == null) { throw new ArgumentNullException("req"); } //设置缺省服务分发器名称 string serviceDispatcherName = DefaultServiceDispatcherName; //是否指定了服务分发器 if (req.Arguments.ContainsKey(ServiceDispatcherParameterName)) { var tmpServiceDispatcherName = req.Arguments[ServiceDispatcherParameterName] as string; if (!string.IsNullOrEmpty(tmpServiceDispatcherName)) { serviceDispatcherName = tmpServiceDispatcherName; } } //通过服务分发器名称得到服务分发器配置节点 IServiceDispatcherConfiguationItem config = ServiceLocator.Get <IServiceDispatcherConfiguationItem>(serviceDispatcherName); if (config == null) { throw new ApplicationException("No config service dispatcher for name:" + serviceDispatcherName); } return(config.ServiceDispatcherCreator().Dispatch(req)); }
public HttpRouteHandler(IServiceDispatcherConfiguationItem serviceDispatcherConfiguationItem , IHttpResponseResult responseResolver , Func<IOperationDescriptor,SessionMode> getSessionMode ) { if (serviceDispatcherConfiguationItem == null) throw new ArgumentNullException("serviceDispatcherConfiguationItem"); if (responseResolver == null) throw new ArgumentNullException("responseResolver"); ServiceDispatcherConfiguationItem = serviceDispatcherConfiguationItem; ResponseResolver = responseResolver; GetSessionMode = getSessionMode; }
/// <summary> /// 配置服务分发器 /// </summary> /// <param name="item"></param> /// <exception cref="ArgumentNullException">当<paramref name="item"/>为空引用时,将抛出异常</exception> public void ConfigureServiceDispatcher(IServiceDispatcherConfiguationItem item) { if (item == null) { throw new ArgumentNullException("item"); } if (string.IsNullOrEmpty(item.Name)) { throw new ArgumentNullException("item.Name"); } if (ServiceRegistry.HasRegister(item.Name)) { throw new RepeatRegistrationException("Service dispatcher repeat configure for name:" + item.Name); } Add(item); }