2013-02-11 7 views
0

Привет всем экспертам!Какую модель нарезания резьбы следует использовать для создания обработчика или адаптера подачи

Это мой первый вопрос здесь.

Описание проблемы:

Я должен написать поток Обработчик данных рынка. Это будет служба Windows, будет использоваться два сокета.

Розетка A: для связи между приложениями-подписчиками и обработчиком подачи (обработчик подачи будет принимать запрос на соединение и запрос на предмет).

Socket B: Для связи между Feed Handler и поставщиком внешних рыночных данных, такими как Reuters/Bloomberg.

В обоих случаях Request/Response будет использовать один и тот же порт.

Примечание: Объем данных, поступающих из внешней системы, низкий (внешняя система будет отправлять только информацию, на которую была подписана, в данный момент времени). Однако позже мы можем захотеть его масштабировать, некоторые провайдеры бросают все данные, а Feed Handler должен отфильтровывать локально, основываясь на подписке.

Мои вопросы:

  1. Что потоковая модель я должен использовать?
  2. Какую стратегию ввода-вывода я должен использовать?
  3. Имея в виду оба случая, должен ли я создать отдельную цепочку запроса/ответа?

EDIT 1: После прочтения нескольких учебных пособий на Winsock, я планирую использовать объекты событий для асинхронного поведения.

Опасность заключается в том, что один поток должен прослушивать входящие клиентские соединения (Принять их), а также Подключиться к другому серверу, в свою очередь send/recv на двух разных портах.

Резьба A 1) Прослушивание входящих соединений. (Непрерывный) 2) Получение запроса Подписки/Отказа от подключенных клиентов. (Редко) 3) Подключитесь к внешнему серверу (только с отключением). 4) Переслать запрос от клиента на внешний сервер. (Редко) 5) Получать данные с внешнего сервера. (Непрерывный) 6) отправьте эти данные подключенным клиентам. (Непрерывный)

Мой вопрос: может ли один поток действовать как Клиент и Сервер, используя асинхронные модели ввода/вывода?

Заранее спасибо. Deepak

ответ

0

Простейшая резьбовая модель, по-видимому, имеет однопоточную синхронизацию. Если вам нужно внедрить фильтр для провайдера, реализуйте его как отдельный процесс сокета-гнезда.