Example #1
0
        /// <summary>
        /// Incluir um serviço (Wcf)
        /// </summary>
        /// <param name="servico">Serviço a ser incluído</param>
        public static void IncluirCanalWcfHost(ServiceType servico)
        {
            try
            {
                // Endereço
                string enderecoTmp = string.Format("net.tcp://{0}:{1}/PointBlankCore/{2}", WcfNetwork.ConexaoEndereco, WcfNetwork.ConexaoPorta, servico.GetServiceType(false).Name);

                // Instânciar um host para o serviço
                ServiceHost host = new ServiceHost(servico.GetServiceType(false), new Uri[] { new Uri(enderecoTmp) });

                ServiceBehaviorAttribute serviceBehavior = host.Description.Behaviors.Find <ServiceBehaviorAttribute>();
                serviceBehavior.IncludeExceptionDetailInFaults = true;

                // Controle endpoint
                host.AddServiceEndpoint(servico.GetServiceType(true), WcfNetwork.ObterNovoNetTcpBinding(), enderecoTmp);
                host.Description.Behaviors.Add(new ServiceThrottlingBehavior()
                {
                    MaxConcurrentCalls = int.MaxValue, MaxConcurrentInstances = int.MaxValue, MaxConcurrentSessions = int.MaxValue
                });

                // Abrir o serviço
                host.Open();

                // Atualizar lista de controle
                WcfNetwork.ListaServiceHost.Add(host);
            }
            catch (AddressAlreadyInUseException)
            {
                throw new PointBlankException(string.Format("A porta {0} já está em uso. Verifique senão foi iniciado um outro serviço na mesma", WcfNetwork.ConexaoPorta));
            }
        }
Example #2
0
 /// <summary>
 /// Criar canal de comunicação Wcf - Utilizando os dados padrões já informados
 /// </summary>
 /// <typeparam name="TChannel">Contrato wcf</typeparam>
 /// <param name="nomeServico">Nome do serviço</param>
 /// <param name="duplex">Identifica se é um canal duplex</param>
 /// <param name="callBack">Eventos de callback para canal duplex</param>
 /// <returns>Canal criado</returns>
 public static TChannel CriarNovoCanalWcf <TChannel>(string nomeServico, bool duplex, object callBack)
 {
     return(CriarNovoCanalWcf <TChannel>(
                WcfNetwork.ConexaoEndereco,
                WcfNetwork.ConexaoPorta,
                WcfNetwork.ObterNovoNetTcpBinding(),
                nomeServico,
                duplex,
                callBack));
 }