Создайте клиент C#

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

В вашем коде C# вы должны:

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

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

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

  • Запишите, создайте и запустите приложение C#.

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

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

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

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

  3. В диалоговом окне Нового проекта выберите тип проекта и обработайте вас по шаблону, хотят использовать. Например, если вы хотите создать Консольное приложение C#, выберите Windows в ветви Visual C# панели Project Type и выберите шаблон C# Console Application из панели Templates.

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

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

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

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

  1. В панели Проводника Решения в Microsoft Visual Studio (обычно на правой стороне), выберите имя своего проекта, Magic, выделение его.

  2. Щелкните правой кнопкой по Magic и выберите Add Reference.

  3. В диалоговом окне Add Reference выберите вкладку Browse. Просмотрите к клиентскому времени выполнения MATLAB Production Server, установленному в matlabroot\toolbox\compiler_sdk\mps_client\dotnet. Выберите MathWorks.MATLAB.ProductionServer.Client.dll.

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

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

В этом примере вы вызываете mymagic.m, размещенный сервером, от клиента.NET, через интерфейс.NET.

Совпадать с функцией MATLAB mymagic.m, спроектируйте интерфейс под названием Magic.

Например, интерфейс для mymagic функция:

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

может выглядеть так:

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

Отметьте следующее:

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

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

  • И функция MATLAB и интерфейс.NET обрабатывают те же типы: введите вводят int и выход вводит двумерный double.

  • Вы задаете имя своего развертываемого архива (magic, который находится в вашем auto_deploy папка) в вашем URL, когда вы вызываете CreateProxy ("http://localhost:9910/magic").

Запишите, создайте и запустите приложение.NET

Создайте интерфейс C# под названием Magic в Microsoft Visual Studio путем выполнения следующего:

  1. Откройте проект Microsoft Visual Studio, MagicSquare, то, что вы создали ранее.

  2. В Program.cs перейдите, вставка в коде ниже.

    Примечание

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

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

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

    • архивное имя (mymagic_deployed)

    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();
           }
         }
       }
    }
  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 

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