В этом примере показано, как вызвать развернутую функцию MATLAB® из приложения C# с помощью MATLAB Production Server™.
В вашем коде C# вы должны:
Создайте проект Microsoft® Visual Studio®.
Создайте ссылку на клиентскую библиотеку времени выполнения.
Спроектируйте интерфейс.NET в C#.
Запишите, создайте и запустите приложение C#.
Эта задача обычно выполняется прикладным программистом.NET. Эта часть примера принимает, что вам установили Microsoft Visual Studio и.NET на вашем компьютере.
Открытый Microsoft Visual Studio.
Нажмите File > New > Project.
В диалоговом окне Нового проекта выберите тип проекта и обработайте вас по шаблону, хотят использовать. Например, если вы хотите создать Консольное приложение C#, выберите Windows в ветви Visual C# панели Project Type и выберите шаблон C# Console Application из панели Templates.
Введите имя проекта в поле Name (Magic, например).
Нажмите OK. Ваш Magic исходный интерпретатор создают, обычно называют Program.cs, по умолчанию.
Создайте ссылку в своем MainApp код к клиентской библиотеке времени выполнения MATLAB Production Server. В Microsoft Visual Studio выполните следующие шаги:
В панели Проводника Решения в Microsoft Visual Studio (обычно на правой стороне), выберите имя своего проекта, Magic, выделение его.
Щелкните правой кнопкой по Magic и выберите Add Reference.
В диалоговом окне Add Reference выберите вкладку Browse. Просмотрите к клиентскому времени выполнения MATLAB Production Server, установленному в . Выберите matlabroot\toolbox\compiler_sdk\mps_client\dotnetMathWorks.MATLAB.ProductionServer.Client.dll.
Нажмите OK. MathWorks.MATLAB.ProductionServer.Client.dll теперь ссылается вашим проектом Microsoft Visual Studio.
В этом примере вы вызываете 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"
Создайте интерфейс C# под названием Magic в Microsoft Visual Studio путем выполнения следующего:
Откройте проект Microsoft Visual Studio, MagicSquare, то, что вы создали ранее.
В 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();
}
}
}
}Создавание приложения. Нажмите Build > Build Solution.
Запустите приложение. Нажмите Debug > Start Without Debugging. Программа возвращает следующую консоль выход:
16,2,3,13 5,11,10,8 9,7,6,12 4,14,15,1