exponenta event banner

Создание клиента C # с помощьюMWHttpClient

В этом примере показано, как записать приложение C # для вызова функции MATLAB ®, развернутой в MATLAB Production Server™. Приложение C # использует клиентскую библиотеку MATLAB Production Server .NET.

Программист приложений .NET обычно выполняет эту задачу. Предполагается, что на компьютере установлены Microsoft ® Visual Studio ® и .NET.

Создание проекта Microsoft Visual Studio

  1. Откройте Microsoft Visual Studio.

  2. Щелкните Файл > Создать > Проект.

  3. В диалоговом окне «Новый проект» выберите шаблон, который требуется использовать. Например, если необходимо создать консольное приложение C # в Visual Studio 2017, выберите Visual C # > Рабочий стол Windows в левой области навигации, а затем выберите консольное приложение (.Net Framework).

  4. Введите имя проекта в поле «Имя» (например, Magic).

  5. Нажмите OK. Ваш Magic создается исходная оболочка, обычно именованная Program.cs, по умолчанию.

Создать ссылку на библиотеку среды выполнения клиента

Создание ссылки в Magic в библиотеку среды выполнения клиента MATLAB Production Server. В Microsoft Visual Studio выполните следующие действия.

  1. На панели обозревателя решений в Microsoft Visual Studio (обычно справа) щелкните правой кнопкой мыши Magic выберите «Добавить» > «Обзор».

  2. Перейдите к папке библиотеки среды выполнения клиента MATLAB Production Server .NET.

    Библиотека находится в matlabroot\toolbox\compiler_sdk\mps_client\dotnet. Выберите MathWorks.MATLAB.ProductionServer.Client.dll файл.

    Клиентская библиотека также доступна для загрузки по адресу https://www.mathworks.com/products/matlab-production-server/client-libraries.html.

  3. Нажмите кнопку ОК. Проект Microsoft Visual Studio теперь ссылается на MathWorks.MATLAB.ProductionServer.Client.dll.

Развертывание функции MATLAB на сервере

Запись функции MATLAB mymagic который использует magic функция для создания магического квадрата, пакет mymagic в развертываемый архив с именем mymagic_deployed, затем развернуть его на сервере. Функция mymagic принимает один int и возвращает магический квадрат в виде 2-D double массив. В примере предполагается, что экземпляр сервера запущен в http://localhost:9910.

function m = mymagic(in)
    m = magic(in);

Разработка интерфейса .NET в C

#

Вызов развернутой функции MATLAB mymagic от клиента .NET через интерфейс .NET. Проектирование интерфейса C #Magic для соответствия функции MATLAB mymagic.

  • Интерфейс .NET имеет то же количество входов и выходов, что и функция MATLAB.

  • Поскольку на сервере развертывается одна функция MATLAB, в коде C # определяется один соответствующий метод .NET .

  • Как функция MATLAB, так и интерфейс .NET обрабатывают одинаковые типы данных - тип вводаint и тип вывода 2-D double.

  • В клиентской программе C # используйте интерфейсMagic для указания типа ссылки на прокси-объект в CreateProxy способ. CreateProxy метод требует URL к развертываемому архиву, содержащему mymagic функция (http://localhost:9910/mymagic_deployed) в качестве входного аргумента.

 public interface Magic 
        {
          double[,] mymagic(int in1);
        }

Запись, сборка и запуск приложения .NET

  1. Открытие проекта Microsoft Visual Studio Magic которая была создана ранее.

  2. В Program.cs вставьте код ниже.

    using System;
    using System.Net;
    using MathWorks.MATLAB.ProductionServer.Client;
    
    namespace Magic
    {
        public class MagicClass
        {
    
            public interface Magic
            {
                double[,] mymagic(int in1);
            }
    
            public static void Main(string[] args)
            {
                MWClient client = new MWHttpClient();
                try
                {
                    Magic me = client.CreateProxy<Magic>
                              (new Uri("http://localhost:9910/mymagic_deployed"));
                    double[,] result1 = me.mymagic(4);
                    print(result1);
                }
                catch (MATLABException ex)
                {
                    Console.WriteLine("{0} MATLAB exception caught.", ex);
                    Console.WriteLine(ex.StackTrace);
                }
                catch (WebException ex)
                {
                    Console.WriteLine("{0} Web exception caught.", ex);
                    Console.WriteLine(ex.StackTrace);
                }
                finally
                {
                    client.Dispose();
                }
                Console.ReadLine();
            }
    
            public static void print(double[,] x)
            {
                int rank = x.Rank;
                int[] dims = new int[rank];
    
                for (int i = 0; i < rank; i++)
                {
                    dims[i] = x.GetLength(i);
                }
    
                for (int j = 0; j < dims[0]; j++)
                {
                    for (int k = 0; k < dims[1]; k++)
                    {
                        Console.Write(x[j, k]);
                        if (k < (dims[1] - 1))
                        {
                            Console.Write(",");
                        }
                    }
                    Console.WriteLine();
                }
            }
        }
    }

    Значение URL ("http://localhost:9910/mymagic_deployed"), используемый для создания прокси-сервера, содержит три части.

    • адрес сервера (localhost).

    • номер порта (9910).

    • имя архива (mymagic_deployed).

  3. Создайте приложение. Щелкните Сборка > Решение сборки.

  4. Запустите приложение. Щелкните Отладка > Начать без отладки. Программа возвращает следующие выходные данные консоли.

    16,2,3,13
    5,11,10,8
    9,7,6,12
    4,14,15,1 

Связанные темы