MWHttpClient
В этом примере показано, как записать приложение C#, чтобы вызвать функцию MATLAB®, развернутую на MATLAB Production Server™. Приложение C# пользуется клиентской библиотекой.NET MATLAB Production Server.
A. СЕТЕВОЙ прикладной программист обычно выполняет эту задачу. Пример предполагает, что вам установили Microsoft® Visual Studio® и.NET на вашем компьютере.
Открытый Microsoft Visual Studio.
Нажмите File > New > Project.
В диалоговом окне New Project выберите шаблон, который вы хотите использовать. Например, если вы хотите создать консольное приложение C# в Visual Studio 2017, выберите Visual C#> Windows Desktop в левой панели навигации, затем выберите Console App (.Net Framework).
Введите имя проекта в поле Name (например, Magic
).
Нажмите OK. Ваш Magic
исходный интерпретатор создают, обычно называют Program.cs
, по умолчанию.
Создайте ссылку в своем Magic
проект к клиентской библиотеке времени выполнения MATLAB Production Server. В Microsoft Visual Studio выполните следующие шаги:
В панели Solution Explorer в Microsoft Visual Studio (обычно на правой стороне), щелкните правой кнопкой по своему Magic
проект, выберите Add> Browse.
Просмотрите к клиентскому местоположению библиотеки времени выполнения.NET MATLAB Production Server.
Библиотека расположена в
. Выберите matlabroot
\toolbox\compiler_sdk\mps_client\dotnetMathWorks.MATLAB.ProductionServer.Client.dll
файл.
Клиентская библиотека также доступна для скачивания в https://www.mathworks.com/products/matlab-production-server/client-libraries.html
.
Нажмите OK. Ваш проект Microsoft Visual Studio теперь ссылается на MathWorks.MATLAB.ProductionServer.Client.dll
.
В этом примере вы вызываете функцию MATLAB mymagic.m
размещенный сервером от клиента.NET через интерфейс.NET. mymagic
функционируйте использует magic
функция, чтобы создать магический квадрат. Функциональный mymagic
берет один int
введите и возвращает магический квадрат как 2D double
массив.
function m = mymagic(in)
m = magic(in);
Спроектируйте интерфейс C# Magic
совпадать с функцией MATLAB mymagic.m
. В вашей клиентской программе C# используйте этот интерфейс, чтобы задать тип ссылки на объект прокси в CreateProxy
метод.
Интерфейс.NET имеет то же количество вводов и выводов как функция MATLAB.
Поскольку вы развертываете одну функцию MATLAB на сервере, вы задаете один соответствующий метод.NET в своем коде C#.
И функция MATLAB и интерфейс.NET обрабатывают совпадающие типы данных — входной тип int
и выходной тип 2-D double
.
public interface Magic { double[,] mymagic(int in1); }
Откройте проект Microsoft Visual Studio Magic
то, что вы создали ранее.
В 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
).
Создавание приложения. Нажмите Build> Build Solution.
Запустите приложение. Нажмите Debug> Start Without Debugging. Программа возвращает следующую консоль выход.
16,2,3,13 5,11,10,8 9,7,6,12 4,14,15,1