Создайте клиент C# Используя MWHttpClient

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

A. СЕТЕВОЙ прикладной программист обычно выполняет эту задачу. Пример предполагает, что у вас есть Microsoft® Visual Studio® и.NET установлен на вашем компьютере.

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

  1. Открытый Microsoft Visual Studio.

  2. Нажмите File > New > Project.

  3. В диалоговом окне New Project выберите шаблон, который вы хотите использовать. Например, если вы хотите создать консольное приложение C# в Visual Studio 2017, выберите Visual C#> Windows Desktop в левой панели навигации, затем выберите Console App (.Net Framework).

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

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

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

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

  1. В панели Solution Explorer в Microsoft Visual Studio (обычно на правой стороне), щелкните правой кнопкой по своему Magic проект, выберите Add> Browse.

  2. Просмотрите к клиентскому местоположению библиотеки времени выполнения.NET MATLAB Production Server.

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

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

  3. Нажмите OK. Ваш проект Microsoft Visual Studio теперь ссылается на MathWorks.MATLAB.ProductionServer.Client.dll.

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

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

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

Спроектируйте интерфейс.NET в C#

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

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

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

  • И функция MATLAB и интерфейс.NET обрабатывают совпадающие типы данных — входной тип int и выходной тип 2D 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. Создавание приложения. Нажмите Build> Build Solution.

  4. Запустите приложение. Нажмите Debug> Start Without Debugging. Программа возвращает следующую консоль выход.

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

Похожие темы