Лучшее решение для синхронизации 2 баз данных .NetCore 2 - PullRequest
0 голосов
/ 24 декабря 2018

Я хочу синхронизировать данные из нескольких таблиц из одной базы данных DB1 с базой данных моего приложения .NetCore DB2 ежедневно.

Я новичок в .Net Core,У меня есть навыки работы с приложениями Java EE и Spring Framework.

Первая попытка: -)

Моей первой идеей было сделать это с помощью SOAP WebServices, чтобы я создал проект WCF в своем решении, следуя этому примеру: https://www.youtube.com/watch?v=plRPBT3h3S8

Решениясодержимое (в Visual Studio):

  • Проект 1: Веб-приложение в .NET Core 2.1 ( Архитектура MVC )
  • Проект 2: Проект Dao, связанный с Projet 1 в .NET Core 2.0
  • Проект 3: Проект WCF для предоставления веб-служб SOAP с файлом ASMXв .NET Framework 4.6.1

Проблемы:

  • Несовместимость между .NET Framework 4.6.1 и .NET Core 2.1, когда я пытался внедрить службу из проект 1 в файле ASMX из проекта 3 .
  • Существует зависимость между проектом 1 и проектом 3 доизбежать дублирования кода между обоими проектами (настройка dbcontext, сервисы, например), но мне не удалось заставить его работать.

Второйtry: -)

Моя вторая идея заключалась в том, чтобы связать Service.svc (в WCF проект 3 ) с проектом 1 сПоставщик ссылок на веб-службы WCF, следующий за этим примером: https://docs.microsoft.com/en-us/dotnet/core/additional-tools/wcf-web-service-reference-guide

Проблемы:

  • Мой Service.svc не может быть найден при нажатии на "кнопка «Найти», поэтому я не могу подключить его к своему проекту 1

Вопросы

  1. Является ли одна из этих идей хорошей синхронизацией моей базы данных?
  2. Я слышал о "Service Fabric".Может ли это быть другое решение, чтобы решить это?
  3. Знаете ли вы другой правильный способ решить это с .NET Core?

Спасибо.

Ответы [ 3 ]

0 голосов
/ 26 декабря 2018

Я думаю, что дизайн баз данных будет иметь гораздо большее влияние на сложность этих усилий, чем что-либо еще.Если в Db1 легко идентифицировать строки, которых нет в DB2, и наоборот, код тривиален.Я бы не стал возиться с многоуровневым приложением - делай вещи максимально простыми.Просто напишите консольное приложение.Позже вы можете запланировать это с помощью диспетчера задач на Windows Server или cron на Linux.

0 голосов
/ 08 января 2019

Я наконец разрешил эту ситуацию, используя API REST, следуя этому руководству:

https://docs.microsoft.com/fr-fr/aspnet/core/tutorials/first-web-api?view=aspnetcore-2.2&tabs=visual-studio

И я разработал консольное приложение, которое запрашивает этот API (после запроса с HttpClient) дляобновить базу данных моего приложения.

Эта программа будет вызываться запланированной задачей (CRON) для ежедневной синхронизации базы данных.

0 голосов
/ 24 декабря 2018

Ну, я не вижу лучшего решения, это действительно зависит.Но есть несколько вариантов.

Вам не нужно загружать какой-либо старый код платформы .net в .net core для синхронизации с БД, все, что вам нужно сделать, это подключиться из ядра .net к базе данных для загрузки данных.Да, у вас может быть дублирование кода, но по крайней мере ваше решение будет в ядре .net, где вы будете контролировать весь процесс.Кроме того, если вы используете EF, будьте осторожны при загрузке данных и манипулировании памятью.

Второй вариант, который я бы использовал, - SSDT project .Вы напишите процесс преобразования данных, загружающийся из любого источника, который вы хотите, я предполагаю, что он даже поддерживает текстовые файлы.Также он может подключаться к различным поставщикам баз данных, поэтому вы можете загрузить, например, из MySql и записать в SqlServer (в одном из моих проектов я сделал Postgres для mssql).Преимущество этого решения в том, что вы можете легко обрабатывать разные потоки ошибок.

И последняя из них может быть простой хранимой процедурой, если у вас есть базы данных на одном сервере, вы можете создать нового пользователя, который будет иметь права на чтение в DB1 и чтение / запись в DB2, затем используя операторы insert / from или update / from,

Здесь нет серебряной пули, поэтому вам нужно попробовать себя, потому что есть много факторов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...