.NET客户端中使用协议缓冲区的同步RESTful请求
这个例子展示了如何使用.NET客户端API进行同步RESTful请求,MATLAB®生产服务器™MATLAB函数执行的RESTful API和协议缓冲区(protobuf)。该示例提供并解释了一个示例c#客户端,MagicSync.cs
,用于计算部署在服务器上的MATLAB函数。
若要在向服务器发出请求时使用protobuf,请设置HTTP内容类型
请求报头到应用程序/ x-google-protobuf
在客户机代码中。的MathWorks.MATLAB.ProductionServer.Client.REST
. net客户端库中的命名空间提供了帮助类,在内部创建基于proto格式的protobuf消息,并返回相应的字节数组。在HTTP请求体中使用此字节数组。. net客户端库提供了反序列化protobuf响应的方法和类。
在同步请求执行中,客户端发出请求后,服务器将阻塞所有进一步的请求,直到它完成对原始请求的处理。处理完成后,服务器自动向客户机返回响应。有关更多信息,请参见同步执行.
要使用.NET客户端API,必须向MathWorks.MATLAB.ProductionServer.Client.dll
文件在你的c#项目。更多关于准备你的微软®Visual Studio®项目的环境,请参见准备Microsoft Visual Studio环境.
在办公场所MATLAB制作服务器安装时,客户端api位于
,在那里MPS_INSTALL美元
/客户端
是MATLAB制作服务器安装位置。客户端api也可在以下网站下载MATLAB生产服务器客户端库.Java®客户端API也托管在Maven™存储库中https://mvnrepository.com/artifact/com.mathworks.prodserver/mps_java_client.MPS_INSTALL美元
部署MATLAB对服务器的功能
编写MATLAB函数mymagic
它使用魔法
(MATLAB)函数创建一个魔方,然后将其部署到服务器上。这个函数mymagic
只需要一个int32
输入并返回一个二维的魔方双
数组中。该示例假设服务器实例运行在http://localhost:9910
.
有关如何部署的信息,请参见为MATLAB生产服务器创建可部署存档.
函数M = mymagic(in);结束
向服务器发出同步请求
在c#客户端代码中,使用POST同步请求向服务器发出初始请求。有关同步请求执行的详细信息,请参见MATLAB制作服务器,请参阅同步执行.
创建请求。
使用.NET创建POST同步请求RESTful API的请求
WebRequest。创建
方法。请求URL由服务器实例的地址(
http://localhost:9910
),已部署存档的名称(mymagic
),以及要求值的MATLAB函数名称(mymagic
).设置HTTP请求方法为帖子
.设置HTTP内容类型
请求报头到应用程序/ x-google-protobuf
,因为API返回协议缓冲区消息的字节数组。字符串mpsBaseUrl = "http://localhost:9910";var firstRequest = (HttpWebRequest)创建(mpsBaseUrl + "/mymagic/mymagic");firstRequest。方法= "POST";firstRequest。ContentType = "application/x-google-protobuf";
将请求发送到服务器。
使用.NET将请求发送到服务器
WebRequest.getResponse
方法。使用
创建(arg1, arg2, arg3)
方法中定义的MATLABParams
班级出现在MathWorks.MATLAB.ProductionServer.Client.REST
的命名空间。MATLAB制作服务器. net客户端API来构建协议缓冲消息。的创建
方法将部署函数的预期输出参数数量、预期输出类型和表示部署函数输入的对象数组作为输入。自部署以来mymagic
function返回一个二维数组set__arg1
来1
而且最长
来new List
.为指定整数值{typeof(double[,])} 长度
的输入mymagic
函数。MATLABParams mlParams = MATLABParams。创建(1, new List
{ typeof(double[,]) }, 2); mlParams.WriteTo(firstRequest.GetRequestStream()); var response = (HttpWebResponse)firstRequest.GetResponse();
有关的更多信息WebRequest
类,看到微软文档.
接收和解释服务器响应
在成功执行POST同步请求时,服务器用一个协议缓冲区消息进行响应。方法中的方法解析协议缓冲区消息MATLABResult
类来获取请求的结果。要创建MATLABResult
对象时,使用创建
方法。通过MATLABParams
mlParams
对象的POST同步请求的响应体创建
方法。
如果在执行部署的MATLAB函数时发生错误,则调用结果
方法引发MATLABException
包含MATLAB的错误信息。
MATLABResult mlResult;mlResult = MATLABResult。创建(mlParams, response.GetResponseStream()); try { double[,] result = mlResult.Result(); Console.WriteLine("Printing the 2-D array...\n"); PrintMagic(result); } catch (MATLABException e) { Console.WriteLine(e.ToString()); }
这个例子使用了一个helper方法PrintMagic
将POST同步请求的响应体作为输入,并打印相应的二维魔方数组。
静态无效PrintMagic(double[,] magic) {int numDims = magic. rank;int[] dims = new int[numDims];For (int I = 0;i < numdim;i++) {dims[i] = magic.GetLength(i);} for (int j = 0;J < dim [0];j++) {for (int k = 0;K < dim [1];k++){控制台。Write(magic[j, k]); if (k < dims[1] - 1) { Console.Write(","); } } Console.WriteLine(); } }
运行c#应用程序将生成以下输出。
打印2-D数组…1、3 4、2
的示例代码MagicSync.cs
下面是c#客户端。
代码: