Производительность службы WCF при одновременном вызове - PullRequest
0 голосов
/ 21 ноября 2018

Ниже служба размещается в IIS с кодом службы WSHTTPBinding

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Single, AddressFilterMode = AddressFilterMode.Any)]
   public class Service1 : IService1
   {}
  [OperationBehavior(TransactionScopeRequired = true)]
  public File_Data CopyFile(File_Data oFileData)
  {}

Служба вызовов

    _binding = new WSHttpBinding();
                _binding.SendTimeout = new TimeSpan(0, 30, 0);
                _binding.ReceiveTimeout = new TimeSpan(0, 30, 0);
                _binding.OpenTimeout = new TimeSpan(0, 30, 0);
                _binding.CloseTimeout = new TimeSpan(0, 30, 0);
                _binding.MaxBufferPoolSize = Int32.MaxValue;
                _binding.MaxReceivedMessageSize = Int32.MaxValue;
                _binding.ReaderQuotas.MaxDepth = Int32.MaxValue;
                _binding.ReaderQuotas.MaxStringContentLength = Int32.MaxValue;
                _binding.ReaderQuotas.MaxArrayLength = Int32.MaxValue;
                _binding.ReaderQuotas.MaxBytesPerRead = Int32.MaxValue;
                _binding.ReaderQuotas.MaxNameTableCharCount = Int32.MaxValue;
                _binding.Security.Mode = SecurityMode.None;
                _binding.TransactionFlow = true;
                //_binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;



                _endpoint = new EndpointAddress(VirtualDir+ "\\" + "Service1.svc");



 public File_Data Copy_File(File_Data objFile_Data)
        {
            ChannelFactory<IService1> Channel = null;
            try
            {
                Channel = new ChannelFactory<IService1>(_binding, _endpoint);
                IService1 proxy = Channel.CreateChannel();
                objFile_Data = proxy.CopyFile(objFile_Data);
            }
            catch (Exception ex)
            {
                msgError = ex.Message;
            }
            finally
            {
                if (Channel != null)
                {
                    Channel.Close();
                    Channel.Abort();
                }
                Channel = null;`
            }
            return objFile_Data;
        }

Когда служба вызывается из нескольких клиентов, требуется время для завершения операции, как яможно настроить поведение службы для повышения производительности службы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...