Solicit-Response адаптер для BAF 2004.
21-03-2004 04:44
к комментариям - к полной версии
- понравилось!
Собственно адаптеры не бывают solicit/response, но для того, чтобы поддержать solicit/response порт, адаптеру нужно знать из какого типа порта он запускается. Странным образом, BAF не имеет четкой инфраструктуры для определения context properties : IPropertyBag выглядит как самое первое приближение к определению property schema instance, но именно он и содержит нужную информацию.Необходимый property называется "IsSolicitResponse". Значение его не важно, а только присутствие среди context properties, кот. связаны с IBaseMessage во время вызова IBTTramsmitter.TransmitMessage(). Для поддержки solicit/response, теперь нужно обычным образом получить MessageFactory, TransportBatch и т.д., построить сообшение, на кот. делать submit, и вызывать SubmitResponseMessage(msg1, msg2);Этот вызов сам позаботится о заполнении соответсвующих properties в msg2 (в частности, корелляции).
А я бы добавил в IBaseMessage поддержку клона для такого копирование, внутри которого можно было и проверить из какого типа порта послано msg1; и если из solicit/response, функция такого клона и сконструировала бы все необходимые properties для submit. 2 преимущества : a). не нужно экспонировать сырой IPropertyBag, b). не нужен второй API - SubmitResponseMessage() - можно ограничиться одним обычным - SubmitMessage, и тогда адаптер и знать ничего не должен о solicit/response.
вверх^
к полной версии
понравилось!
в evernote