Example #1
0
        /// <summary>
        /// Загрузка изменений в удаленной базе
        /// </summary>
        /// <param name="settingName">Название настройки обмена</param>
        public void RemoteLoadChanges(string settingName)
        {
            Logger logger = LogManager.GetCurrentClassLogger();

            logger.Debug(settingName + ": Начало загрузки изменений в удаленной базе");
            SetCurrentStatus(settingName, Job.RemoteLoad, JobStatus.Process);
            OnExchangeProcess(GetCurrentStatus(settingName));

            var baseConfig = GetBaseConfig(settingName);
            ChannelFactory <IService1C> factory;

            Status remoteStatus = RemoteGetCurrentStatus(settingName);

            if (remoteStatus.jobStatus == JobStatus.Error && remoteStatus.description.Contains("Не найдена настройка"))
            {
                throw new Exception(remoteStatus.description);
            }

            //попробуем загрузить из файла конфигурации
            try{
                factory = new ChannelFactory <IService1C>("IService1C");
            }
            catch {
                //если нет то создаем вручную

                NetTcpBinding TCPbinding = new NetTcpBinding(SecurityMode.None);
                TCPbinding.CloseTimeout           = TimeSpan.FromHours(0.5);
                TCPbinding.OpenTimeout            = TimeSpan.FromHours(0.5);
                TCPbinding.SendTimeout            = TimeSpan.FromHours(13);
                TCPbinding.TransferMode           = TransferMode.Buffered;
                TCPbinding.MaxReceivedMessageSize = 429496729;

                EndpointAddress endpointAdress = new EndpointAddress(config.HostSetting.Protocol + @"://" + baseConfig.ServerAdress + "/Service1C");
                factory = new ChannelFactory <IService1C>(TCPbinding, endpointAdress);
            }

            IService1C channel = factory.CreateChannel();

            channel.LoadChanges(settingName);
            factory.Abort();            //.Close();

            //ждем пока не выполнится задача
            Status _status = WaitServerJob(settingName);

            if (_status.jobStatus == JobStatus.Complite)
            {
                logger.Debug(settingName + ": Конец загрузки изменений в удаленной базе");
                SetCurrentStatus(settingName, Job.RemoteLoad, JobStatus.Complite);
            }
            else
            {
                logger.Error(settingName + ": Ошибка загрузки изменений в удаленной базе");
                SetCurrentStatus(settingName, Job.RemoteLoad, JobStatus.Error, _status.description);
            }

            OnExchangeProcess(GetCurrentStatus(settingName));
        }
Example #2
0
        /// <summary>
        /// Загрузка изменений в удаленной базе
        /// </summary>
        /// <param name="settingName">Название настройки обмена</param>
        public Status RemoteGetCurrentStatus(string settingName)
        {
            Logger logger = LogManager.GetCurrentClassLogger();

            logger.Debug(settingName + ": Получаем текущий статус на сревере");
            var baseConfig = GetBaseConfig(settingName);
            ChannelFactory <IService1C> factory;

            Status request = new Status();

            try{
                //попробуем загрузить из файла конфигурации
                try{
                    factory = new ChannelFactory <IService1C>("IService1C");
                }
                catch {
                    //если нет то создаем вручную

                    NetTcpBinding TCPbinding = new NetTcpBinding(SecurityMode.None);
                    TCPbinding.CloseTimeout           = TimeSpan.FromHours(0.5);
                    TCPbinding.OpenTimeout            = TimeSpan.FromHours(0.5);
                    TCPbinding.SendTimeout            = TimeSpan.FromHours(13);
                    TCPbinding.TransferMode           = TransferMode.Buffered;
                    TCPbinding.MaxReceivedMessageSize = 429496729;

                    EndpointAddress endpointAdress = new EndpointAddress(config.HostSetting.Protocol + @"://" + baseConfig.ServerAdress + "/Service1C");
                    factory = new ChannelFactory <IService1C>(TCPbinding, endpointAdress);
                }

                IService1C channel = factory.CreateChannel();

                request = channel.GetCurrentStatus(settingName);
                factory.Close();

                logger.Debug(settingName + ": Конец получения текущего статуса на сревере");
            }
            catch {
                request.job         = Job.Exchange;
                request.jobStatus   = JobStatus.Error;
                request.description = settingName + ": Ошибка получения статуса на сервере";
            }

            return(request);
        }
Example #3
0
 /// <summary>
 /// Конструктор.
 /// </summary>
 /// <param name="service1C">Источник данных</param>
 /// <param name="loggerFactory">Фабрика логгера</param>
 public Service1СSoap(IService1C service1C, ILoggerFactory loggerFactory)
 {
     _Service1C = service1C;
     _Logger    = loggerFactory.CreateLogger <Service1СSoap>();
 }
Example #4
0
 public NBCHRequestController(IService1C service1C)
 {
     Service1C = service1C;
 }