UtilityExchange (nuget): Библиотека позволяет реализовать обмен кастомных документов откуда и куда угодно. ExchangeDocument - документ обмена - обертка для коллекции объектов обмена IExchangeObject, с одинаковым UniqueId и ItemType. Есть реализация IExchangeObject - ExchangeObject, в котором UniqueId генерируется  по свойствам объекта, помеченных UniquePropertyAttribute. Если хотя бы одно свойство объекта должно быть помечено UniquePropertyAttribute. Можно создавать дополнительные Guid'ы и помечать их атрибутом для генерации UniqueId.  DocumentExchanger - непосредственно обмен, состоящий из двух объектов: 1. IExchangeDocumentFinder - поиск документа 2. IExchangeDocumentExchanger - обмен документа  Вызвав метод ExchangeDocument(), произойдет IEnumerable<ExchangeDocument> = IExchangeDocumentFinder.Find(), а затем foreach IExchangeDocumentExchanger.Exchange(ExchangeDocument). Будут возбуждены события: DocumentFinded - документ найден; DocumentExchanged - обмен документа произведен удачно; DocumentNotExchanged - обмен завершился с ошибкой.  Также есть обертка над DocumentExchanger - IStartStopExchanger. Постоянное выполнение DocumentExchanger.ExchangeDocument() RuntimeExchanger : IStartStopExchanger - постоянный обмен в реальном времени; IntervalExchanger : RuntimeExchanger - обмен через интервал; TimeSpanExchanger : RuntimeExchanger - обмен по расписанию.
Keywords: Exchange