Привет всем экспертам там 🙂
Это мой первый вопрос здесь.
Описание проблемы :
Я должен написать обработчик потока данных рынка. Это будет служба Windows, будет использовать два сокета.
Разъем A: для связи между приложениями подписки и обработчиком каналов (обработчик каналов будет принимать запрос на подключение и запрос элемента).
Разъем B: для связи между обработчиком каналов и провайдером данных внешнего рынка, например, Reuters / Bloomberg.
В обоих случаях запрос / ответ будут использовать один и тот же порт.
Примечание. Объем данных, поступающих из внешней системы, невелик (внешняя система будет отправлять только информацию, на которую была подписана, в данный момент).
Однако в дальнейшем мы можем захотеть масштабировать их, некоторые провайдеры выдают все данные, и Feed Handler должен отфильтровывать их локально на основе подписки.
Мои вопросы :
РЕДАКТИРОВАТЬ 1: После прочтения нескольких учебных пособий по Winsock, я планирую использовать объекты событий для асинхронного поведения.
Проблема здесь в том, что один поток должен прослушивать входящие клиентские соединения (принимать их), а также подключаться к другому серверу, в свою очередь отправлять / записывать на двух разных портах.
Нить А
1) Прослушивание входящих соединений. (Continuous)
2) Получение запроса подписки / отмены подписки от подключенных клиентов. (Редко)
3) Подключиться к внешнему серверу (только один раз).
4) Переслать запрос от клиента на внешний сервер. (Редко)
5) Получать данные с внешнего сервера. (Continuous)
6) отправить эти данные обратно подключенным клиентам. (Continuous)
Мой вопрос заключается в том, может ли отдельный поток действовать как клиент и сервер, используя асинхронные модели ввода / вывода?
Заранее спасибо.
Дипак
Самая простая модель многопоточности — однопоточная синхронная. Если вам нужно внедрить фильтр для провайдера, реализуйте его как отдельный процесс ввода-вывода.
Других решений пока нет …