Я немного борюсь с правильной архитектурой для моего приложения.Особенно возникают проблемы с блокировкой пользовательского интерфейса, и я не уверен, почему.У меня есть два приложения, в которых запущены службы, которые должны общаться друг с другом.
При отправке сообщений в любом случае я каждый раз создаю новую фабрику каналов.
Клиенты отправляют сообщения каждые 15 секунд на сервер,По команде Сервер отправляет сообщения Клиентам (по одному за раз).Теоретически Сервер может постоянно получать сообщения от нескольких Клиентов, поэтому его необходимо масштабировать как веб-сервер, сохраняя при этом отзывчивость пользовательского интерфейса.
Проблема в том, что через некоторое время мой пользовательский интерфейс блокируется, иногда на Сервере, иногда наКлиент.Я почти уверен, что это связано с WCF (там также происходит много других вещей).
Если я попытаюсь отправить сообщение, создав канал (через channelfactory), отправив сообщение и затем закрывФабрика каналов: отправка сообщения занимает минуту (в то время как пользовательский интерфейс в обоих приложениях заблокирован).Если я отключу channelFactory.close()
после отправки сообщения, то сообщения будут отправлены сразу же.
Созданная мной служба имеет [OperationContract(IsOneWay = true)]
для метода SendMessage.Реализация моего сервиса имеет [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
.
Почему мое сообщение отправляется в течение минуты при использовании channelFactory.close () в конце?