Я собрал приложение .net winform, которое использует службу wcf, открытую другим. NET-приложением, работающим как служба Windows.wcf службы для межпроцессного взаимодействия
Поскольку коммуникация находится в пределах одной машины, я выбрал NetNamedPipe в качестве канала связи, так как это лучший выбор, подходящий для взаимодействия между процессами на одной машине.
Я хочу знать, использую ли я правильный выбор свойств при определении службы wcf в службе Windows .net.
Поведение WCF службы определяется как:
[ServiceBehavior(
ConcurrencyMode = ConcurrencyMode.Single,
InstanceContextMode = InstanceContextMode.Single)]
Я выбрал «InstanceContextMode» как сингл, так что я знаю, что объекты в службе ФОС не воссозданы каждый раз, когда метод службы WCF вызывается UI клиент.
Однако при чтении свойства ConcurrencyMode для выбора на MSDN я немного запутался. На базовом уровне я понимаю, что свойство ConcurrencyMode определяет, поддерживает ли служба wcf один, несколько или повторный вызов.
Означает ли это, что если мое клиентское приложение пользовательского интерфейса многопоточно, и я вызываю в методы обслуживания wcf из этих потоков, я должен выбрать режим «параллелизма» как «несколько», и если мой клиент UI не многопоточен, я должен выбрать режим «параллелизма» как «одиночный»? В моем клиентском приложении пользовательского интерфейса не работает несколько потоков. Все операции выполняются в основном потоке пользовательского интерфейса через обработчики событий (посредством щелчков кнопок, выбора сокетов и т. Д.)
У меня возникают ситуации, когда после установки приложения на тестовом компьютере Windows мой клиент пользовательского интерфейса иногда не удается подключиться к службе wcf. Он просто продолжает ждать вызова метода Connect для объекта клиента wcf, а затем в конечном итоге отключается. Я хочу знать, связано ли это с выбором «ConcurrencyMode», который я сделал. Или это проблема канала связи NetNamedPipe?
Прошу совета.
Заранее спасибо.
Subbu