Exemplo n.º 1
0
        public async Task EventTest()
        {
            var route1 = new ServiceRoute
            {
                Address = new[]
                {
                    new IpAddressModel("127.0.0.1", 1)
                },
                ServiceDescriptor = new ServiceDescriptor
                {
                    Id = "service1"
                }
            };
            var route2 = new ServiceRoute
            {
                Address = new[]
                {
                    new IpAddressModel("127.0.0.1", 2)
                },
                ServiceDescriptor = new ServiceDescriptor
                {
                    Id = "service2"
                }
            };
            var route3 = new ServiceRoute
            {
                Address = new[]
                {
                    new IpAddressModel("127.0.0.1", 3)
                },
                ServiceDescriptor = new ServiceDescriptor
                {
                    Id = "service3"
                }
            };

            await ServiceRouteManager.ClearAsync();

            await Task.Delay(2000);

            var initWait = new TaskCompletionSource <bool>();

            ServiceRouteManager.Created += (s, e) => { initWait.TrySetResult(true); };
            await ServiceRouteManager.SetRoutesAsync(new[] { route1, route2 });

            await initWait.Task;
            await Task.Delay(2000);

            route2.Address = new[]
            {
                new IpAddressModel("127.0.0.1", 11)
            };

            TaskCompletionSource <bool> createdWait = null, changedWait = null, removedWait = null;
            Action reset = () =>
            {
                createdWait = new TaskCompletionSource <bool>();
                changedWait = new TaskCompletionSource <bool>();
                removedWait = new TaskCompletionSource <bool>();
            };

            reset();
            ServiceRouteManager.Created += (s, e) => { createdWait.TrySetResult(route3.ServiceDescriptor.Id == e.Route.ServiceDescriptor.Id); };
            ServiceRouteManager.Changed += (s, e) => {
                changedWait.TrySetResult(
                    route2.ServiceDescriptor.Id == e.Route.ServiceDescriptor.Id &&
                    route2.Address.First() == e.Route.Address.First() &&
                    2 == ((IpAddressModel)e.OldRoute.Address.First()).Port);
            };
            ServiceRouteManager.Removed += (s, e) => { removedWait.TrySetResult(route1.ServiceDescriptor.Id == e.Route.ServiceDescriptor.Id); };

            await ServiceRouteManager.SetRoutesAsync(new[] { route2, route3 });

            Assert.True(await createdWait.Task);
            Assert.True(await changedWait.Task);
            Assert.True(await removedWait.Task);
        }
Exemplo n.º 2
0
 public RouteStationListManager(ServiceRoute route)
 {
     InitializeComponent();
 }
Exemplo n.º 3
0
        public ActionResult SaveServiceRoute(ServiceRoute model)
        {
            var data = BusinessAccessLayer.BALSupport.BALSaveServiceRoute(model);

            return(Json(data, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 4
0
        public IServiceEntryContainer AddServices(Type[] types)
        {
            IEnumerable <Type> serviceTypes = types
                                              .Where(x => x.GetMethods().Any(y => y.GetCustomAttribute <ServiceAttribute>() != null)).Distinct();

            foreach (Type type in serviceTypes)
            {
                ServiceRouteAttribute   routeTemplate = type.GetCustomAttribute <ServiceRouteAttribute>();
                ServiceVersionAttribute version       = type.GetCustomAttribute <ServiceVersionAttribute>();

                foreach (MethodInfo methodInfo in type.GetTypeInfo().GetMethods().Where(x => x.GetCustomAttributes <ServiceDescAttribute>().Any()))
                {
                    ServiceDesc desc = new ServiceDesc();
                    IEnumerable <ServiceDescAttribute> descriptorAttributes = methodInfo.GetCustomAttributes <ServiceDescAttribute>();

                    IEnumerable <FilterBaseAttribute> filters = methodInfo.GetCustomAttributes <FilterBaseAttribute>();

                    foreach (ServiceDescAttribute attr in descriptorAttributes)
                    {
                        attr.Apply(desc);
                    }

                    desc.ReturnDesc = GetReturnDesc(methodInfo);

                    if (string.IsNullOrEmpty(desc.HttpMethod))
                    {
                        desc.HttpMethod = GetHttpMethod(methodInfo);
                    }

                    desc.Parameters = _serializer.Serialize <string>(GetParameters(methodInfo));

                    string route = string.Empty;

                    if (routeTemplate != null)
                    {
                        if (version != null && routeTemplate.RouteTemplate.Contains("{version}"))
                        {
                            route        = routeTemplate.RouteTemplate.Replace("{version}", version.Version);
                            desc.Version = version.Version;
                        }
                        else
                        {
                            route = routeTemplate.RouteTemplate;
                        }
                    }
                    if (string.IsNullOrEmpty(desc.Id))
                    {
                        desc.Id = _serviceIdGenerate.GenerateServiceId(methodInfo, route, desc).ToLower();
                    }

                    FastExecutor.FastExecutorHandler fastInvoker = GetHandler(desc.Id, methodInfo);

                    ParameterInfo[] methodParas = methodInfo.GetParameters();
                    if (routeTemplate != null)
                    {
                        desc.RoutePath = ServiceRoute.ParseRoutePath(route, type.Name, methodInfo.Name, methodParas, type.IsInterface);
                    }

                    ServiceEntry service = new ServiceEntry
                    {
                        Descriptor = desc,
                        Parameters = methodParas,

                        Func = (context) =>
                        {
                            object instance = GetInstance(methodInfo.DeclaringType, context.RemoteInvokeMessage.Payload);

                            Dictionary <Type, object> dic = new Dictionary <Type, object>();
                            foreach (ParameterInfo p in methodParas)
                            {
                                context.RemoteInvokeMessage.Parameters.TryGetValue(p.Name.ToLower(), out object value);
                                object parameter;
                                Type   paraType = p.ParameterType;
                                if (typeof(List <ServerFile>) == paraType)
                                {
                                    List <FileData>   fileData = _typeConvertProvider.Convert(value, paraType) as List <FileData>;
                                    List <ServerFile> files    = new List <ServerFile>();
                                    foreach (FileData file in fileData)
                                    {
                                        ServerFile serverFile = new ServerFile
                                        {
                                            Data     = Convert.FromBase64String(file.Data),
                                            FileName = file.FileName
                                        };
                                        files.Add(serverFile);
                                    }
                                    parameter = files;
                                }
                                else
                                {
                                    parameter = _typeConvertProvider.Convert(value, paraType) ?? null;
                                }
                                dic[paraType] = parameter;
                            }

                            FilterContext filterContext = new FilterContext()
                            {
                                Payload          = context.RemoteInvokeMessage.Payload,
                                Descriptor       = desc,
                                ServiceArguments = dic
                            };

                            filters?.Aggregate(filterContext, (filtercontext, filter) =>
                            {
                                filter.Container = _container;
                                if (filtercontext.Result == null)
                                {
                                    filter.OnActionExecuting(filtercontext);
                                }
                                return(filtercontext);
                            });

                            if (filterContext.Result == null)
                            {
                                filterContext.Result = fastInvoker(instance, dic.Select(o => o.Value).ToArray());

                                filters?.Aggregate(filterContext, (filtercontext, filter) =>
                                {
                                    filter.OnActionExecuted(filtercontext);
                                    return(filtercontext);
                                });
                            }

                            return(Task.FromResult(filterContext.Result));
                        }
                    };

                    _services.Add(service);
                }
            }

            return(this);
        }
        protected override async Task RemveAddressAsync(IEnumerable <AddressModel> address, ServiceRoute serviceRoute)
        {
            serviceRoute.Address = serviceRoute.Address.Except(address).ToList();
            var clients = await _consulClientProvider.GetClients();

            foreach (var client in clients)
            {
                await SetRouteAsync(CreateServiceRouteDescriptor(serviceRoute), client);
            }
        }
 public ServiceRouteChangedEventArgs(ServiceRoute route, ServiceRoute oldRoute) : base(route)
 {
     OldRoute = oldRoute;
 }
Exemplo n.º 7
0
 private bool GetAllowRequest(ServiceRoute route)
 {
     return(!route.ServiceDescriptor.DisableNetwork());
 }
Exemplo n.º 8
0
 private async Task<IEnumerable<ServiceRoute>> GetRoutes(string file)
 {
     ServiceRoute[] routes;
     if (File.Exists(file))
     {
         if (_logger.IsEnabled(LogLevel.Debug))
             _logger.LogDebug($"准备从文件:{file}中获取服务路由。");
         string content;
         while (true)
         {
             try
             {
                 using (
                     var fileStream = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                 {
                     var reader = new StreamReader(fileStream, Encoding.UTF8);
                     content = await reader.ReadToEndAsync();
                 }
                 break;
             }
             catch (IOException)
             {
             }
         }
         try
         {
             var serializer = _serializer;
             routes =
             (await
                 _serviceRouteFactory.CreateServiceRoutesAsync(
                     serializer.Deserialize<string, ServiceRouteDescriptor[]>(content))).ToArray();
             if (_logger.IsEnabled(LogLevel.Information))
                 _logger.LogInformation(
                     $"成功获取到以下路由信息:{string.Join(",", routes.Select(i => i.ServiceDescriptor.Id))}。");
         }
         catch (Exception exception)
         {
             if (_logger.IsEnabled(LogLevel.Error))
                 _logger.LogError("获取路由信息时发生了错误。", exception);
             routes = new ServiceRoute[0];
         }
     }
     else
     {
         if (_logger.IsEnabled(LogLevel.Warning))
             _logger.LogWarning($"无法获取路由信息,因为文件:{file}不存在。");
         routes = new ServiceRoute[0];
     }
     return routes;
 }
Exemplo n.º 9
0
 public static List <ServiceRoute> BALSaveServiceRoute(ServiceRoute model)
 {
     return(SupportingRepository.SaveServiceRoute(model).ToList());
 }
Exemplo n.º 10
0
        internal static void DeploySsbObj(object obj, string svrName, string dbName, SsbEnum ssbType, bool isEdit)
        {
            Server               svr  = CreateServer(svrName, null, null);
            Database             db   = svr.Databases[dbName];
            ServiceBroker        sb   = db.ServiceBroker;
            MessageType          mt   = null;
            ServiceContract      sc   = null;
            ServiceQueue         q    = null;
            BrokerService        serv = null;
            ServiceRoute         rt   = null;
            RemoteServiceBinding bind = null;

            try {
                switch (ssbType)
                {
                case SsbEnum.MessageType:
                    MessageType mtNew = new MessageType();
                    mtNew.Parent = sb;
                    mt           = (MessageType)obj;
                    mtNew.Name   = mt.Name;
                    mtNew.MessageTypeValidation = mt.MessageTypeValidation;
                    if (mt.MessageTypeValidation == MessageTypeValidation.XmlSchemaCollection)
                    {
                        mtNew.ValidationXmlSchemaCollection = mt.ValidationXmlSchemaCollection;
                    }

                    if (isEdit)
                    {
                        mtNew.Alter();
                    }
                    else
                    {
                        mtNew.Create();
                    }

                    break;

                case SsbEnum.Contract:
                    ServiceContract scNew = new ServiceContract();
                    sc           = (ServiceContract)obj;
                    scNew.Parent = sb;
                    scNew.Name   = sc.Name;
                    foreach (MessageTypeMapping mtm in sc.MessageTypeMappings)
                    {
                        if (!sb.MessageTypes.Contains(mtm.Name))
                        {
                            ServiceBroker sbParent = sc.Parent;
                            MessageType   mtp      = sbParent.MessageTypes[mtm.Name];
                            DeploySsbObj(mtp, svrName, dbName, SsbEnum.MessageType, false);
                        }

                        MessageTypeMapping mtmNew = new MessageTypeMapping();
                        mtmNew.Name          = mtm.Name;
                        mtmNew.Parent        = scNew;
                        mtmNew.MessageSource = mtm.MessageSource;
                        scNew.MessageTypeMappings.Add(mtmNew);
                    }

                    if (isEdit)
                    {
                        scNew.Alter();
                    }
                    else
                    {
                        scNew.Create();
                    }

                    break;

                case SsbEnum.Queu:
                    q        = (ServiceQueue)obj;
                    q.Parent = sb;

                    if (isEdit)
                    {
                        q.Alter();
                    }
                    else
                    {
                        q.Create();
                    }

                    break;

                case SsbEnum.Service:
                    serv        = (BrokerService)obj;
                    serv.Parent = sb;

                    if (isEdit)
                    {
                        serv.Alter();
                    }
                    else
                    {
                        serv.Create();
                    }

                    break;

                case SsbEnum.Route:
                    rt        = (ServiceRoute)obj;
                    rt.Parent = sb;

                    if (isEdit)
                    {
                        rt.Alter();
                    }
                    else
                    {
                        rt.Create();
                    }

                    break;

                case SsbEnum.RemoteBinding:
                    bind        = (RemoteServiceBinding)obj;
                    bind.Parent = sb;

                    if (isEdit)
                    {
                        bind.Alter();
                    }
                    else
                    {
                        bind.Create();
                    }

                    break;
                }
            }
            catch (FailedOperationException e) {
                string err = string.Format("{0}", e.InnerException);
                //throw;
            }
            catch (Exception ex) {
                string errx = string.Format("{0}", ex.InnerException);
            }

            finally {
                svr.ConnectionContext.Disconnect();
            }
        }
Exemplo n.º 11
0
        internal static void DeleteObject(SsbEnum sType, object smoObj)
        {
            switch (sType)
            {
            case SsbEnum.Database:
                Database db = null;
                if (smoObj.GetType() == typeof(SSBIDatabase))
                {
                    db = ((SSBIDatabase)smoObj).DataBase;
                }
                else if (smoObj.GetType() == typeof(Database))
                {
                    db = (Database)smoObj;
                }

                db.Drop();
                break;

            case SsbEnum.MessageType:
                MessageType mt = (MessageType)smoObj;
                mt.Drop();
                break;

            case SsbEnum.Contract:
                ServiceContract sc = (ServiceContract)smoObj;
                sc.Drop();
                break;

            case SsbEnum.Queu:
                ServiceQueue sq = (ServiceQueue)smoObj;
                sq.Drop();
                break;

            case SsbEnum.Service:
                BrokerService bs = (BrokerService)smoObj;
                bs.Drop();
                break;

            case SsbEnum.Route:
                ServiceRoute sr = (ServiceRoute)smoObj;
                sr.Drop();
                break;

            case SsbEnum.RemoteBinding:
                RemoteServiceBinding rsb = (RemoteServiceBinding)smoObj;
                rsb.Drop();
                break;

            case SsbEnum.Conversation:
                SSBIConversation cnv = (SSBIConversation)smoObj;
                smo.EndConversation(cnv);
                break;

            case SsbEnum.EndPoint:
                Endpoint ep = (Endpoint)smoObj;
                ep.Drop();
                break;

            case SsbEnum.Certificate:
                Certificate cert = (Certificate)smoObj;
                cert.Drop();
                break;
            }
        }
 protected abstract Task RemveAddressAsync(IEnumerable <AddressModel> address, ServiceRoute route);
Exemplo n.º 13
0
 public ServiceRouteChangedEventArgs(ServiceRoute route, ServiceRoute oldRoute) : base(route)
 {
     OldRoute = oldRoute;
 }
Exemplo n.º 14
0
 public ServiceRouteEventArgs(ServiceRoute route)
 {
     Route = route;
 }
Exemplo n.º 15
0
        public void ServiceRouteEqualsTest()
        {
            ServiceRoute model1 = null, model2 = null;
            Action       reset = () =>
            {
                model1 =
                    new ServiceRoute
                {
                    Address = new[]
                    {
                        new IpAddressModel("127.0.0.1", 1234)
                    },
                    ServiceDescriptor = new ServiceDescriptor
                    {
                        Id        = "service1",
                        Metadatas = new Dictionary <string, object>
                        {
                            { "key1", 1 }
                        }
                    }
                };
                model2 =
                    new ServiceRoute
                {
                    Address = new[]
                    {
                        new IpAddressModel("127.0.0.1", 1234)
                    },
                    ServiceDescriptor = new ServiceDescriptor
                    {
                        Id        = "service1",
                        Metadatas = new Dictionary <string, object>
                        {
                            { "key1", 1 }
                        }
                    }
                };
            };

            reset();

            Assert.Equal(model1, model2);
            Assert.True(model1 == model2);
            Assert.True(model1.Equals(model2));

            model2.ServiceDescriptor.Id = "service2";

            Assert.NotEqual(model1, model2);
            Assert.False(model1 == model2);
            Assert.False(model1.Equals(model2));

            model1.ServiceDescriptor.Id = "service2";

            Assert.Equal(model1, model2);
            Assert.True(model1 == model2);
            Assert.True(model1.Equals(model2));

            reset();

            model2.Address.OfType <IpAddressModel>().First().Port = 1111;

            Assert.NotEqual(model1, model2);
            Assert.False(model1 == model2);
            Assert.False(model1.Equals(model2));
        }
Exemplo n.º 16
0
 protected override async Task RemveAddressAsync(IEnumerable <AddressModel> address, ServiceRoute serviceRoute)
 {
     serviceRoute.Address = serviceRoute.Address.Except(address).ToList();
     await base.SetRouteAsync(serviceRoute);
 }
 protected override async Task RemveAddressAsync(IEnumerable <AddressModel> address, ServiceRoute route)
 {
     route.Address = route.Address.Except(address).ToList();
     await base.SetRoutesAsync(new List <ServiceRoute>() { route });
 }
Exemplo n.º 18
0
 public static void SetRouteTable()
 {
     webServiceHostFactory = new TMWebServiceHostFactory();
     serviceRoute          = new ServiceRoute(urlPath, webServiceHostFactory, typeof(TM_REST));
     RouteTable.Routes.Add(serviceRoute);
 }
 public ServiceRouteEventArgs(ServiceRoute route)
 {
     Route = route;
 }
Exemplo n.º 20
0
        int UpDateSsb()
        {
            updatedobj = null;
              //if (!isDirty)
            //return 0;
              if (!ValidateData()) {
            Cursor crs = Cursor.Current;
            Cursor.Current = Cursors.WaitCursor;

            try {
              Database db = null;

              ServiceBroker sb = null;
              if (ssbType != SsbEnum.Database && ssbType != SsbEnum.Login && ssbType != SsbEnum.EndPoint) {
             sb = dBase.ServiceBroker;
              }
              switch (ssbType) {
            case SsbEnum.Database:
              MasterKey mk = null;
              SSBIDatabase sbd = null;
              if (isEdit) {
                sbd = (SSBIDatabase)objToUpdate;
                db = sbd.DataBase;
              }
              else {
                db = new Database();
                db.Name = txtName.Text;
                db.Parent = dbServ.SMOServer;
              }

              if (isEdit) {
               if(db.MasterKey != null && db_chkMasterKey.Checked == false) {
                 mk = db.MasterKey;
                 mk.Drop();

               }
               else if (db.MasterKey == null && db_chkMasterKey.Checked) {
                 mk = new MasterKey();
                 mk.Parent = db;
                 mk.Create(db_txtMkPwd.Text);
               }

               db.Alter();
               if (sbd.IsTrustworthy != db_chkTrustWorthy.Checked)
                 sbd.IsTrustworthy = db_chkTrustWorthy.Checked;

              }
              else {
                db.Create();
                sbd = new SSBIDatabase(db);

                if (db_chkMasterKey.Checked) {
                  mk = new MasterKey();
                  mk.Parent = db;
                  mk.Create(db_txtMkPwd.Text);

                }

                if (db_chkTrustWorthy.Checked) {
                  sbd.IsTrustworthy = true;
                }

              }
              if (dBase == null)
                dBase = db;

              //Server serv = db.Parent;

              updatedobj = db;
              break;
            case SsbEnum.MessageType:
              MessageType mt = null;
              if (isEdit)
                mt = (MessageType)objToUpdate;
              else {
                mt = new MessageType();
                mt.Parent = sb;
                mt.Name = txtName.Text;
              }
              if (cboUser.Text != string.Empty)
                mt.Owner = cboUser.Text;
              mt.MessageTypeValidation = (MessageTypeValidation)Enum.Parse(typeof(MessageTypeValidation), cboVal.Text);
              if (cboValSchema.Enabled)
                mt.ValidationXmlSchemaCollection = cboValSchema.Text;

              if (isEdit)
                mt.Alter();
              else
                mt.Create();
              updatedobj = mt;
              break;

            case SsbEnum.Contract:
              ServiceContract sc = new ServiceContract();
              sc.Parent = sb;
              sc.Name = txtName.Text;
              if (cboUser.Text != string.Empty)
                sc.Owner = cboUser.Text;
              //get the message types
              foreach (DataGridViewRow row in dvMsgTypes.Rows) {
                sc.MessageTypeMappings.Add(new MessageTypeMapping(sc, row.Cells[0].Value.ToString(), (MessageSource)Enum.Parse(typeof(MessageSource), row.Cells[1].Value.ToString())));
              }

              if (isEdit)
                sc.Alter();
              else
                sc.Create();

              updatedobj = sc;
              break;

            case SsbEnum.Queu:
              ServiceQueue q = null;
              if (isEdit)
                q = (ServiceQueue)objToUpdate;
              else {
                q = new ServiceQueue();
                q.Parent = sb;
                q.Name = txtName.Text;
              }
              q.IsEnqueueEnabled = chkStatus.Checked;
              if (chkRetention.Checked)
                q.IsRetentionEnabled = true;

              //if (chkActivation.Checked) {
              //if(isEdit)
              //  q.IsActivationEnabled = chkActivation.Checked;
              //
              if (chkActivation.Checked) {
                q.IsActivationEnabled = chkActivation.Checked;
                if (dBase.Name != cboQDb.Text)
                  q.ProcedureDatabase = cboQDb.Text;
                StoredProcedure sp = (StoredProcedure)cboProc.SelectedItem;
                q.ProcedureSchema = sp.Schema;
                q.ProcedureName = cboProc.Text;
                q.MaxReaders = short.Parse(txtReaders.Text);
                if (rdOwner.Checked)
                  q.ActivationExecutionContext = ActivationExecutionContext.Owner;
                else if (rdSelf.Checked)
                  q.ActivationExecutionContext = ActivationExecutionContext.Self;
                else if (rdUser.Checked) {
                  q.ActivationExecutionContext = ActivationExecutionContext.ExecuteAsUser;
                  q.ExecutionContextPrincipal = txtExecuteAs.Text;
                }

              }

              if (isEdit)
                q.Alter();
              else
                q.Create();

              updatedobj = q;

              break;

            case SsbEnum.Service:
              BrokerService bserv = null;
              if (isEdit)
                bserv = (BrokerService)objToUpdate;
              else {
                bserv = new BrokerService();
                bserv.Parent = sb;
                bserv.Name = txtName.Text;
              }
              if (cboUser.Text != string.Empty)
                bserv.Owner = cboUser.Text;

              ServiceQueue servq = (ServiceQueue)cboQueue.SelectedItem;
              bserv.QueueName = servq.Name;
              bserv.QueueSchema = servq.Schema;

              if (lbChosenCtr.Items.Count > 0) {
                foreach (object o in lbChosenCtr.Items) {
                  ServiceContract servctr = o as ServiceContract;
                  ServiceContractMapping scm = new ServiceContractMapping(bserv, servctr.Name);
                  bserv.ServiceContractMappings.Add(scm);
                }
              }

              if (isEdit)
                bserv.Alter();
              else
                bserv.Create();

              updatedobj = bserv;

              break;

            case SsbEnum.Route:
              ServiceRoute srt = null;
              if (isEdit)
                srt = (ServiceRoute)objToUpdate;
              else {
                srt = new ServiceRoute();
                srt.Name = txtName.Text;
                srt.Parent = sb;
              }

              if (cboUser.Text != string.Empty)
                srt.Owner = cboUser.Text;

              if (textBroker.Text != string.Empty)
                srt.BrokerInstance = textBroker.Text;

              if (textRemote.Text != string.Empty)
                srt.RemoteService = textRemote.Text;

              if (textLifeTime.Text != string.Empty)
                srt.ExpirationDate = DateTime.Parse(textLifeTime.Text);

              if (rdLocal.Checked)
                srt.Address = "LOCAL";

              if (rdTransport.Checked)
                srt.Address = "TRANSPORT";

              if (rdTCP.Checked)
                srt.Address = "TCP://" + txtAddress.Text;

              if (txtMirror.Text != string.Empty)
                srt.MirrorAddress = "TCP://" + txtMirror.Text;

              //StringCollection sColl = srt.Script();
              //foreach (string s in sColl)
              //  MessageBox.Show(s);

              if (isEdit)
                srt.Alter();
              else
                srt.Create();

              updatedobj = srt;

              break;

            case SsbEnum.RemoteBinding:
              RemoteServiceBinding remBind = null;
              if (isEdit)
                remBind = (RemoteServiceBinding)objToUpdate;
              else {
                remBind = new RemoteServiceBinding();
                remBind.Name = txtName.Text;
                remBind.Parent = sb;
              }

              if (cboUser.Text != string.Empty)
                remBind.Owner = cboUser.Text;

              remBind.RemoteService = textRemServ.Text;

              remBind.CertificateUser = cboRemUser.Text;
              remBind.IsAnonymous = chkAnon.Checked;

              StringCollection sColl = remBind.Script();
              foreach (string s in sColl)
                MessageBox.Show(s);

              if (isEdit)
                remBind.Alter();
              else
                remBind.Create();

              updatedobj = remBind;

              break;

            case SsbEnum.Conversation:
              TimeSpan ts = TimeSpan.Zero;
              Guid grpHandle = Guid.Empty;
              string convContract = "DEFAULT";
              BrokerService bServ = (BrokerService)cnv_cboFrmServ.SelectedItem;

              string toService = cnv_txtToSrv.Text;

              if (cnv_txtLifetime.Text != string.Empty && cnv_txtLifetime.Text != "0")
                ts = TimeSpan.FromSeconds(double.Parse(cnv_txtLifetime.Text));

              if (cnv_cboContract.Text != string.Empty)
                convContract = cnv_cboContract.Text;

              if (cnv_txtRelGrpHndl.Text != string.Empty)
                grpHandle = new Guid(cnv_txtRelGrpHndl.Text);

              //get a service object
              Service smoserv = smo.GetSSBIService(bServ.Parent.Parent, bServ.Name);
              if (smoserv.Connection.State == ConnectionState.Closed)
                smoserv.Connection.Open();

              smoserv.Connection.ChangeDatabase(bServ.Parent.Parent.Name);
              updatedobj = smoserv.BeginDialog(toService, convContract, ts, cnv_chkEncryption.Checked, grpHandle);
              break;

            case SsbEnum.Message:
              SSBIConversation msgConv = (SSBIConversation)msg_cboConv.SelectedItem;
              string servName = msg_txtFrom.Text;
              //we need a service object
              Service msgSsbiServ = smo.GetSSBIService(dBase, msgConv.FromService);
              if (msgSsbiServ.Connection.State== ConnectionState.Closed)
                 msgSsbiServ.Connection.Open();

               msgSsbiServ.Connection.ChangeDatabase(dBase.Name);
              Conversation msgCnv = new Conversation(msgSsbiServ, msgConv.Handle);
              string msgType = msg_cboMsgType.SelectedText;
              string msgString = msg_rchMsg.Text;
              msgType = msg_cboMsgType.Text;
              MemoryStream msgBody = new MemoryStream(Encoding.ASCII.GetBytes(msgString));

              Microsoft.Samples.SqlServer.Message msg = new Microsoft.Samples.SqlServer.Message(msgType, msgBody);
              msgCnv.Send(msg);

              break;

            case SsbEnum.Login :
              string pwd = "";
              Login lg = new Login();
              lg.Parent = dbServ.SMOServer;
              lg.Name = lgn_txtLoginName.Text;
              if (lgn_rdSql.Checked) {
                pwd = lgn_txtPwd.Text;
                lg.PasswordPolicyEnforced = lgn_chkEnforcePolicy.Checked;
                lg.LoginType = LoginType.SqlLogin;
                lg.Create(pwd);
              }
              else {
                lg.Create();
              }

              updatedobj = lg;
              break;

            case SsbEnum.Certificate:
              string certOwner  = "dbo";
              int certSource = cert_cboSource.SelectedIndex;
              Certificate cert = new Certificate();
              if(!isEdit) {
                cert.Name = txtName.Text;
                if(cboUser.Text != "")
                  certOwner = cboUser.Text;
                cert.Parent = dBase;
                cert.Owner = certOwner;

              }

              cert.ActiveForServiceBrokerDialog = cert_chkBeginDlg.Checked;

              if (certSource == 0) {
                if (!isEdit) {
                  if (cert_chkMasterKey.Checked)
                    cert.Create(cert_txtCertPath.Text, CertificateSourceType.File, cert_txtPrivPath.Text, cert_txtDecrypt.Text);
                  else
                    cert.Create(cert_txtCertPath.Text, CertificateSourceType.File, cert_txtPrivPath.Text, cert_txtDecrypt.Text, cert_txtEncrypt.Text);

                }
              }
              else if (certSource == 1) {
                if (!isEdit) {
                  cert.StartDate = cert_dtValidFrom.Value;
                  cert.ExpirationDate = cert_dtExpiry.Value;
                  cert.Subject = cert_txtCertPath.Text;

                  if (cert_chkMasterKey.Checked) {
                    cert.Create();
                  }
                  else {
                    cert.Create(cert_txtEncrypt.Text);
                  }
                }

              }
              else if (certSource == 2) {
                if (!isEdit) {
                  cert.Create(cert_txtCertPath.Text, CertificateSourceType.File);
                }

              }

              if (isEdit)
                cert.Alter();

              updatedobj = cert;
              break;

            case SsbEnum.User :
              User usr;
              if (!isEdit) {
                usr = new User();
                usr.Name = txtName.Text;
                usr.Parent = dBase;
                if(usr_chkLogin.Checked)
                  usr.Login = usr_cboLogin.Text;

              }
              else
                usr = (User)objToUpdate;

              if (usr_cboCerts.SelectedIndex != -1)
                usr.Certificate = usr_cboCerts.Text;

              if (!isEdit)
                if (usr_chkLogin.Checked)
                  usr.Create();
                else
                  smo.CreateUserWithNoLogin(usr);

              else
                usr.Alter();
              updatedobj = usr;
              break;

            case SsbEnum.EndPoint :
              Endpoint ep = null;
              if (!isEdit) {
                ep = new Endpoint();
                ep.Name = txtName.Text;
                ep.Parent = dbServ.SMOServer;
                ep.ProtocolType = ProtocolType.Tcp;
                ep.EndpointType = EndpointType.ServiceBroker;
              }
              else
                ep = ((SSBIEndpoint)objToUpdate).EndPoint;

              ep.Protocol.Tcp.ListenerPort = int.Parse(ep_txtPort.Text);
              if (ep_txtIp.Text == "ALL")
                ep.Protocol.Tcp.ListenerIPAddress = System.Net.IPAddress.Any;
              else {
                ep.Protocol.Tcp.ListenerIPAddress = System.Net.IPAddress.Parse(ep_txtIp.Text);
              }
              ep.Payload.ServiceBroker.EndpointAuthenticationOrder = (EndpointAuthenticationOrder)ep_cboAuth.SelectedItem;
              if (ep_cboCert.SelectedIndex != -1)
                ep.Payload.ServiceBroker.Certificate = ep_cboCert.Text;

              ep.Payload.ServiceBroker.EndpointEncryption = (EndpointEncryption)ep_cboEncrypt.SelectedItem;
              if (ep_cboAlgorithm.SelectedIndex != -1)
                ep.Payload.ServiceBroker.EndpointEncryptionAlgorithm = (EndpointEncryptionAlgorithm)ep_cboAlgorithm.SelectedItem;

              ep.Payload.ServiceBroker.IsMessageForwardingEnabled = ep_chkFwd.Checked;

              if (ep_txtSize.Text != string.Empty)
                ep.Payload.ServiceBroker.MessageForwardingSize = int.Parse(ep_txtSize.Text);

              if(!isEdit)
                ep.Create();

              switch ((EndpointState)ep_cboState.SelectedIndex) {
                case EndpointState.Disabled :
                  ep.Disable();
                  break;

                case EndpointState.Started :
                  ep.Start();
                  break;
                case EndpointState.Stopped :
                  if (isEdit)
                    ep.Stop();
                  break;
              }

              if (isEdit)
                ep.Alter();

              break;

            case SsbEnum.CreateListing :
              CreateListing(true);

              break;

              }

              if (isEdit)
            _state = SsbState.Edited;
              else
            _state = SsbState.New;

              Cursor.Current = crs;

              this.DialogResult = DialogResult.OK;

              ExitAndClose();

            }
            catch (FailedOperationException e) {
              smo.ShowException(e);
            }
            catch (Exception ex) {
              smo.ShowException(ex);
            }

            finally {
              if(dbServ !=null)
            dbServ.SMOServer.ConnectionContext.Disconnect();

            }

              }

              return 0;
        }
Exemplo n.º 21
0
 public RouteBuilderController(ServiceRoute route)
 {
     m_route = route;
 }
Exemplo n.º 22
0
        private static void AddServiceRoute(Type serviceType, string routePrefix, IHttpHostConfigurationBuilder configuration)
        {
            var route = new ServiceRoute(routePrefix, new RestbucksServiceHostFactory(configuration), serviceType);

            RouteTable.Routes.Add(route);
        }