Автоматическая передача и извлечение данных JSON между .NET Framework и .NET Core - PullRequest
6 голосов
/ 18 марта 2019

Я новичок в области компьютерных наук (поэтому, надеюсь, я использую правильные слова и даю правильную информацию, чтобы ответить на этот вопрос), надеюсь, вы, ребята, сможете мне помочь. Я хочу автоматически передавать (JSON) данные между двумя .NET-решениями.

У меня есть два решения в .NET:

  1. Bot FrameworkSDK - встроить в .NET Core 2.2 (https://docs.microsoft.com/en-us/azure/bot-service/dotnet/bot-builder-dotnet-sdk-quickstart?view=azure-bot-service-4.0)

    • Из того, что я понимаю: встроить в ASP.NET Core
  2. The Qlik Sense.Net SDK. - встроить в .NET Framework 4.5.2 (https://github.com/kolsrud/qlik-dot-net-sdk-hypercube-usage)

Я хочу, чтобы эти два решения связывались друг с другом.

  • С одной стороны: в SDK QlikSense.NET мы сохраняем все данные в переменную (скажем, переменную «Sales», содержащую данные JSON), если эта переменная обновлена,Я хочу перенести его в платформу Bot (и сохранить данные здесь).

  • С другой стороны : у нас есть переменная в Bot Framework (давайтескажем, переменная 'Query', содержащая данные JSON), если эта переменная обновлена, я хочу передать ее в Qliksense SDK.

Суммировано : я хочуавтоматически передавать (JSON) данные между Qliksense SDK и SDK Bot Framework.Как я могу это сделать?

Опять извините, если что-то неясно.Заранее спасибо за вашу помощь!Оценил!

Редактировать 1: Что я пробовал?На вопрос Селвина:
Единственное, что я смог придумать, - записать переменную JSON в текстовый файл и прочитать этот текстовый файл из другого скрипта.Но я не думаю, что это правильное ' решение '.

Ответы [ 3 ]

5 голосов
/ 22 марта 2019

Существует несколько решений, которые вы можете применять в зависимости от деталей ваших проектов.

Насколько я понимаю, вы используете Bot Framework SDK без каких-либо дополнительных действий.Базовый Nuget написан на .NET Standard 2.0, который может использоваться как в dotNet Core, так и в dotNet Framework.Таким образом, самый простой способ - это обновить / изменить ваш проект для компиляции на dotNet Framework вместо dotNet Core.Тогда вы можете без проблем ссылаться на второй проект.

Если есть еще компиляции, о которых я не знаю, вы можете сделать одно из следующих решений:

  1. Создать для процессов вна той же машине отправляются «сообщения» между ними (один - файл, как вы упомянули, второй - HTTP-запросы, третий - очереди и т. д.) - я могу предоставить более подробную информацию, если я знаю, как вы хотите разместить свое решение
  2. Попробуйте перенести проект QlikSense в dotNet Core.Вы можете проверить, легко ли выполнить миграцию, используя официальное руководство: https://docs.microsoft.com/en-us/dotnet/core/porting/third-party-deps и этот пост: https://www.stevejgordon.co.uk/migrating-full-net-framework-net-core
  3. Найдите другую библиотеку для QlikSense, если хотите остаться с dotnet Core
3 голосов
/ 25 марта 2019

Отказ

В этом ответе предполагается (поскольку я не могу различить какие-либо подробности из этого вопроса), что ваши приложения уже обмениваются данными и способны сериализовать и десериализовать JSON, и вам нужна помощь в автоматической отправке данных при обновлении объекта. .

Использовать инкапсуляцию для обработки обновлений

Используя механизмы классов c #, вы можете - убедитесь, что ваша переменная «Продажи» обновляется только через публично отображаемый метод обновления - публично отображаемый метод обновления также отправляет новые данные в другое приложение

class SalesContainer
{
    private string _sales;

    public string getSales()
    {
        return _sales;
    }

    public string updateSales (string sales)
    {
        _sales = sales;
        sendData(sales);
    }

    private sendData(string json)
    {
        // your sending logic here
    }
}

Кроме того, вы можете посмотреть на перегрузку оператора , чтобы позволить вам вносить меньше изменений в существующую кодовую базу.

1 голос
/ 28 марта 2019

Я понимаю, у вас есть два приложения. Они не могут общаться друг с другом напрямую. Вам нужно стороннее посредничество. Файл, база данных, сетевой поток или MemoryMappedFile. Приложение QlikSense.NET принудительно обновляется до посредника, а приложение Bot Framework считывает обновление из посредника.

Я думаю, что это межпроцессное взаимодействие проблема, поэтому каждое межпроцессное взаимодействие решение возможно.

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