Служба Windows, которая управляет обменом, звучит нормально.Да, WCF может работать с традиционными веб-службами.
Как обеспечить гарантированную доставку?
Для обеспечения доставки вы можете использовать TransactionScope для обработкипередача данных между Receiver <=> Intermediate Layer
и Intermediate Layer <=> Sender
, но я бы не стал делать их вместе.
Возможно, вы захотите рассмотреть какой-нибудь механизм организации очередей для отправки данных получателю;Я думаю, что я думаю больше о логической очереди, а не о реальном компоненте очередей.Платформа рабочего процесса также может быть опцией.
убедитесь, что у вас есть хорошая регистрация / аудит;убедитесь, что он твердый, имеет правильную информацию и легко читается.Если вы напишите службу, она будет выполняться без надзора, поэтому эксплуатационные / вспомогательные аспекты более требовательны.
Подумайте о сценариях:
- Как вы управляете неудачными поставками?
- Что произойдет, если получатель (или отправитель) будет недоступен в течение определенного периода времени (и как долго это будет продолжаться?);Например: вам нужно «перейти» к оператору по электронной почте?
Как мне обеспечить безопасность сообщений через Интернет?
HTTPS,Предполагая, что другие существующие клиенты совершают звонки в веб-службы, как они обеспечивают безопасность?(Я думаю, шифрование).
Каковы наилучшие методы для решения проблем параллелизма?
Хм, наверное, отдельный вопрос.Вы должны быть в состоянии найти информацию об этом достаточно легко.Сколько данных мы берем?какая частота?Сколько экземпляров службы Windows вы думали иметь - если одного достаточно, почему параллелизм может быть проблемой?
Каковы лучшие методы для обработки ошибок?
То же, что и для параллелизма, но я могу предложить несколько указателей:
- Использовать установленную структуру ведения журналов, мне очень нравятся MS EntLibs, но есть и другие (повторное использование того, что используется в настоящее время, вероятно, будет иметь больше смысла- если что-то есть).
- Помните, что выполнение выполняется без присмотра, поэтому убедитесь, что информация полная, ясная и однозначная.Я бы соблазнился войти еще и набрать номер, как только уровень комфорта будет достигнут.
- используйте обработчик верхнего уровня, чтобы ничего не потеряно;но не бойтесь глубоко заходить в приложение, где вы все равно можете получить полезный контекст (например, метаданные отправляемых / получаемых данных).
Как обеспечить получениеданных обратно Отправителю?
Включить их (отправку квитанции) в качестве шага, являющегося частью транзакции.
Под другим углом - взгляните на CodePlexдля библиотек типов ESB вы можете найти что-то полезное: http://www.codeplex.com/site/search?query=ESB&ac=8 Например, ESBasic , который выглядит как библиотека классов, которую вы можете использовать повторно.