MWHttpClient
这个例子展示了如何编写一个c#应用程序来调用MATLAB®部署到的功能MATLAB生产服务器.c#应用程序使用MATLAB制作服务器. net客户端库。
. net应用程序程序员通常执行此任务。本教程假设您有Microsoft®Visual Studio®和。net安装在你的电脑上。
打开Microsoft Visual Studio。
点击File >新建>项目.
在“新建项目”对话框中,选择要使用的模板。例如,如果您想在Visual Studio 2017中创建c#控制台应用程序,请选择Visual c#>Windows桌面在左侧导航窗格中,然后选择控制台应用程序(。净框架).
类型中的项目名称的名字字段(例如,魔法
).
点击好吧.你的魔法
创建源shell,通常命名为Program.cs
,默认为。
创建一个引用魔法
项目的MATLAB制作服务器客户端运行时库。在Microsoft Visual Studio中执行以下步骤:
在解决方案资源管理器窗格中的Microsoft Visual Studio(通常在右侧),右键单击您的魔法
项目,选择添加>浏览.
浏览至MATLAB制作服务器. net客户端运行时库位置。
图书馆位于
.选择matlabroot
\工具箱\ compiler_sdk \ mps_client \ dotnetMathWorks.MATLAB.ProductionServer.Client.dll
文件。
客户端库也可在以下网站下载//www.tatmou.com/下载188bet金宝搏products/matlab-production-server/client-libraries.html
.
点击好吧.你的Microsoft Visual Studio项目现在引用MathWorks.MATLAB.ProductionServer.Client.dll
.
编写MATLAB函数mymagic
它使用魔法
功能创建魔术方块,包mymagic
进入一个名为mymagic_deployed
,然后将其部署到服务器。这个函数mymagic
只需要一个int
输入并返回一个二维的魔方双
数组中。该示例假设服务器实例运行在http://localhost:9910
.
函数M = mymagic(in);
调用部署的MATLAB函数mymagic
从。net客户端到。net接口。设计一个c#界面魔法
来匹配MATLAB函数mymagic
.
. net接口具有与MATLAB函数相同数量的输入和输出。
因为要在服务器上部署一个MATLAB函数,所以要在c#代码中定义一个对应的. net方法。
MATLAB函数和.NET接口都处理相同的数据类型——输入类型int
输出类型为2-D双
.
在c#客户端程序中,使用接口魔法
控件中代理对象引用的类型CreateProxy
方法。的CreateProxy
方法需要指向包含mymagic
函数(http://localhost:9910/mymagic_deployed
)作为输入参数。
public interface Magic {double[,] mymagic(int in1);}
打开Microsoft Visual Studio项目魔法
你之前创建的。
在Program.cs
选项卡,粘贴下面的代码。
使用系统;使用System.Net;使用MathWorks.MATLAB.ProductionServer.Client;命名空间Magic{公共类MagicClass{公共接口Magic {double[,] mymagic(int in1);} public static void Main(string[] args) {MWClient客户端=新的MWHttpClient();尝试{魔法我=客户。CreateProxy(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”
)用于创建代理,该代理包含三个部分。
服务器地址(本地主机
).
端口号(9910
).
存档名称(mymagic_deployed
).
构建应用程序。点击构建>构建解决方案.
运行应用程序。点击调试>无调试启动.该程序返回以下控制台输出。
16、2、3、13 5、11、10、8 9、7、6、12 4、14、15、1