Создайте клиент 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