Пример #1
0
        private void _load_services()
        {
            _app_domains = new
                           List <breinstormin.appdomains.AtomAppDomain <breinstormin.wcf.host.IWCFServiceHostDomainStarter> >();
            if (_service_directories != null)
            {
                string exceptions = System.Configuration.ConfigurationManager.AppSettings["LoadExceptions"];
                foreach (string dir in _service_directories)
                {
                    System.IO.DirectoryInfo info = new System.IO.DirectoryInfo(dir);
                    bool _can_load = true;
                    if (!string.IsNullOrEmpty(exceptions))
                    {
                        //comprobamos si esta excluido
                        _can_load = !exceptions.ToLower().Contains(info.Name.ToLower());
                    }
                    if (_can_load)
                    {
                        //Cargamos dominio de aplicacion con estos ensamblados
                        //(buscamos en el config con el nombre del directorio).ç
                        string cfg = System.Configuration.ConfigurationManager.AppSettings[info.Name];
                        if (!string.IsNullOrEmpty(cfg))
                        {
                            string[] _cfg_service =
                                cfg.Split(new string[] { ";" },
                                          StringSplitOptions.RemoveEmptyEntries);
                            //Nombre del ensamblado
                            string assembly_name =
                                _cfg_service[0];
                            //Nombre de la clase a instanciar
                            string class_name    = _cfg_service[1];
                            string assembly_path = dir + @"\" + assembly_name;


                            //Dominio SOAP (WSDL) para este servicio
                            breinstormin.appdomains.AtomAppDomain <breinstormin.wcf.host.IWCFServiceHostDomainStarter>
                            wcf_soap_app_domain =
                                new breinstormin.appdomains.AtomAppDomain
                                <breinstormin.wcf.host.IWCFServiceHostDomainStarter>(assembly_path, class_name);

                            if (wcf_soap_app_domain.LoadOK)
                            {
                                wcf_soap_app_domain.InstancedObject.SetHostType(breinstormin.wcf.host.ServiceHostType.soap);
                                _app_domains.Add(wcf_soap_app_domain);
                            }
                            else
                            {
                                throw new Exception(wcf_soap_app_domain.LoadingErrors);
                            }

                            //Dominio WEB (REST) para este servicio
                            breinstormin.appdomains.AtomAppDomain <breinstormin.wcf.host.IWCFServiceHostDomainStarter>
                            wcf_web_app_domain =
                                new breinstormin.appdomains.AtomAppDomain
                                <breinstormin.wcf.host.IWCFServiceHostDomainStarter>(assembly_path, class_name);
                            if (wcf_web_app_domain.LoadOK)
                            {
                                wcf_web_app_domain.InstancedObject.SetHostType(breinstormin.wcf.host.ServiceHostType.web);
                                _app_domains.Add(wcf_web_app_domain);
                            }
                            else
                            {
                                throw new Exception(wcf_web_app_domain.LoadingErrors);
                            }
                        }
                    }
                }
            }
        }
Пример #2
0
        private void _load_services()
        {
            _app_domains = new
                List<breinstormin.appdomains.AtomAppDomain<breinstormin.wcf.host.IWCFServiceHostDomainStarter>>();
            if (_service_directories != null)
            {
                string exceptions = System.Configuration.ConfigurationManager.AppSettings["LoadExceptions"];
                foreach (string dir in _service_directories)
                {
                    System.IO.DirectoryInfo info = new System.IO.DirectoryInfo(dir);
                    bool _can_load = true;
                    if (!string.IsNullOrEmpty(exceptions))
                    {
                        //comprobamos si esta excluido
                        _can_load = !exceptions.ToLower().Contains(info.Name.ToLower());
                    }
                    if (_can_load)
                    {
                        //Cargamos dominio de aplicacion con estos ensamblados
                        //(buscamos en el config con el nombre del directorio).ç
                        string cfg = System.Configuration.ConfigurationManager.AppSettings[info.Name];
                        if (!string.IsNullOrEmpty(cfg))
                        {
                            string[] _cfg_service =
                                cfg.Split(new string[] { ";" },
                                StringSplitOptions.RemoveEmptyEntries);
                            //Nombre del ensamblado
                            string assembly_name =
                                _cfg_service[0];
                            //Nombre de la clase a instanciar
                            string class_name = _cfg_service[1];
                            string assembly_path = dir + @"\" + assembly_name;

                            //Dominio SOAP (WSDL) para este servicio
                            breinstormin.appdomains.AtomAppDomain<breinstormin.wcf.host.IWCFServiceHostDomainStarter>
                                wcf_soap_app_domain =
                                new breinstormin.appdomains.AtomAppDomain
                                    <breinstormin.wcf.host.IWCFServiceHostDomainStarter>(assembly_path, class_name);

                            if (wcf_soap_app_domain.LoadOK)
                            {
                                wcf_soap_app_domain.InstancedObject.SetHostType(breinstormin.wcf.host.ServiceHostType.soap);
                                _app_domains.Add(wcf_soap_app_domain);
                            }
                            else { throw new Exception(wcf_soap_app_domain.LoadingErrors); }

                            //Dominio WEB (REST) para este servicio
                            breinstormin.appdomains.AtomAppDomain<breinstormin.wcf.host.IWCFServiceHostDomainStarter>
                                wcf_web_app_domain =
                                new breinstormin.appdomains.AtomAppDomain
                                    <breinstormin.wcf.host.IWCFServiceHostDomainStarter>(assembly_path, class_name);
                            if (wcf_web_app_domain.LoadOK)
                            {
                                wcf_web_app_domain.InstancedObject.SetHostType(breinstormin.wcf.host.ServiceHostType.web);
                                _app_domains.Add(wcf_web_app_domain);
                            }
                            else { throw new Exception(wcf_web_app_domain.LoadingErrors); }
                        }

                    }
                }
            }
        }