Мне поручили внедрить систему для непрерывного получения больших объемов данных от партнера. Схема данных на стороне партнеров отличается от нашей, поэтому при получении данных и их импорте в нашу базу данных необходимо произвести некоторую трансформацию.
Каков наилучший подход к решению этой задачи?
У меня есть некоторый контроль над обеими сторонами уравнения, т. е. если мы решим использовать WCF, наш партнер реализует эту службу. Но важно максимально ограничить объем программ, которые должны выполняться на стороне партнеров. В идеале они должны использовать какую-либо функцию SQL Server для экспорта своих данных, а затем предоставить нам возможность заняться остальными.
Другие важные факторы:
- SQL Server используется с обеих сторон (на нашей стороне 2008, у партнера неизвестно).
- .NET 4 и/или все, что поставляется «из коробки» от Microsoft, никаких сторонних продуктов.
- Трансфер осуществляется в одну сторону, т.е. от партнера только к нам.
- Объем данных составляет около десятков тысяч обновленных записей/объектов, передаваемых ежедневно.
- Модель данных довольно сложная, с несколькими таблицами и отношениями.
- Решение должно быть терпимо к изменениям на стороне партнеров (мы не знаем, когда и как они меняют свою модель)
- Ремонтопригодность и надежность важнее производительности, т. е. нам не нужны последние данные, но сервис должен легко модифицироваться, и он не может выйти из строя/остановиться.
Я задаю этот вопрос, потому что я ошеломлен количеством способов, которыми это можно сделать. Как разработчик .NET, я склоняюсь к внедрению WCF или, возможно, даже к какому-то пользовательскому обмену на основе xml. Но я знаю, что Biztalk, вероятно, подойдет здесь, и SQL Server, вероятно, имеет несколько отличных встроенных функций, о которых я не знаю.
Любые указатели, идеи и предложения приветствуются!