主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

创建 C# 客户端

此示例说明如何编写 C# 应用程序来调用部署到 MATLAB® Production Server™MATLAB 函数。C# 应用程序使用 MATLAB Production Server .NET 客户端库。

.NET 应用程序编程人员通常执行此任务。本教程假设您的计算机上安装了 Microsoft® Visual Studio® 和 .NET。

创建 Microsoft Visual Studio 工程

  1. 打开 Microsoft Visual Studio。

  2. 点击 File > New > Project

  3. 在新建工程对话框中,选择要使用的模板。例如,如果您想在 Visual Studio 2017 中创建一个 C# 控制台应用程序,请在左侧导航窗格中选择 Visual C# > Windows Desktop,然后选择 Console App (.Net Framework)

  4. Name 字段中输入工程的名称(例如,Magic)。

  5. 点击确定。您的 Magic 源 shell 已创建,默认情况下通常名为 Program.cs

创建对客户端运行库的引用

在您的 Magic 工程中创建对 MATLAB Production Server 客户端运行时库的引用。在 Microsoft Visual Studio 中,执行以下步骤:

  1. 在 Microsoft Visual Studio 内的 Solution Explorer 窗格中(通常在右侧),右键点击您的 Magic 工程,选择Add > Browse

  2. 浏览到 MATLAB Production Server .NET 客户端运行时库位置。

    在本地 MATLAB Production Server 安装中,库位于 $MPS_INSTALL\client\dotnet,其中 $MPS_INSTALL 是安装 MATLAB Production Server 的位置。选择 MathWorks.MATLAB.ProductionServer.Client.dll 文件。

    客户端库也可以从以下网址下载:https://www.mathworks.com/products/matlab-production-server/client-libraries.html

  3. 点击确定。您的 Microsoft Visual Studio 工程现在引用了 MathWorks.MATLAB.ProductionServer.Client.dll

MATLAB 函数部署到服务器

编写一个 MATLAB 函数 mymagic,使用 magic (MATLAB) 函数创建一个幻方,将 mymagic 打包成一个名为 mymagic_deployed 的可部署存档,然后将其部署到服务器。函数 mymagic 接受单个 int 输入并以二维 double 数组的形式返回一个幻方。该示例假定服务器实例在 http://localhost:9910 上运行。

function m = mymagic(in)
    m = magic(in);

有关创建存档并将其部署到服务器的信息,请参阅 针对 MATLAB Production Server 创建可部署存档将存档部署至 MATLAB Production Server

使用 C# 设计 .NET 接口

通过 .NET 接口从 .NET 客户端调用已部署的 MATLAB 函数 mymagic。设计一个 C# 接口 Magic 来匹配 MATLAB 函数 mymagic

  • .NET 接口具有与 MATLAB 函数相同数量的输入和输出。

  • 由于您在服务器上部署一个 MATLAB 函数,因此您在 C# 代码中定义了一个相应的 .NET 方法。

  • MATLAB 函数和 .NET 接口都处理相同的数据类型 - 输入类型 int 和输出类型 2-D double

  • 在您的 C# 客户端程序中,使用接口 MagicCreateProxy 方法中指定代理对象引用的类型。CreateProxy 方法需要包含 mymagic 函数的可部署存档的 URL (http://localhost:9910/mymagic_deployed) 作为输入参量。

 public interface Magic 
        {
          double[,] mymagic(int in1);
        }

编写、构建和运行 .NET 应用程序

  1. 打开您之前创建的 Microsoft Visual Studio 工程 Magic

  2. 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)。

  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 

另请参阅

主题