主要内容

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

部署附加功能

MATLAB® 部署工具(例如 MATLAB Compiler™MATLAB Compiler SDK™ 包 MATLAB 函数)用于部署到 MATLAB 桌面外部的环境。这些部署工具还可以打包 MATLAB Production Server™ 附加功能安装的代理函数,以创建需要外部环境和活动 MATLAB Production Server 实例的可部署软件组件。

例如,考虑一个可部署存档 fractal.ctf,其中包含托管在 MATLAB Production Server 实例上的 MATLAB 函数 mandelbrot

您可以使用 MATLAB Client for MATLAB Production Serverfractal 存档在客户端计算机上安装 fractal 附加功能。安装 fractal 附加功能会在您的计算机上安装代理 mandelbrot 函数。然后,您可以在 MATLAB 中编写一个使用代理 mandelbrot 函数的客户端程序。

您还可以使用 MATLAB Compiler SDK 将代理 mandelbrot 函数打包成共享库,例如 fractal.dll。然后,您可以编写一个使用 fractal.dll 的 C++客户端程序。

下图显示了 MATLAB 客户端(蓝色)和 C++ 客户端(绿色)调用相同的代理 mandlebrot 函数与部署到 MATLAB Production Server 实例的 mandelbrot 函数进行通信。

MATLAB client and C++ client interacting with an archive deployed to MATLAB Production Server.

以下示例显示如何将已安装的代理函数打包成独立可执行文件、共享库和可部署存档。这些示例使用系统上 support_package_root\toolbox\mps\matlabclient\demo 文件夹中的文件。demo 文件夹包含以下文件夹:

  • fractal - 包含 mandelbrotsnowflake MATLAB 函数。mandelbrot 函数生成曼德布洛特集,snowflake 函数生成科赫雪花的轮廓。您将这些 MATLAB 函数打包到 MATLAB Production Server 可部署存档中。

  • mandelflake - 包含显示曼德布洛特集和科赫雪花的 mandelflake MATLAB 函数。您将 mandelflake 函数打包成独立的可执行文件。

  • fractalViewer - 包含 twoFractals MATLAB 函数,该函数根据您指定的输入参量显示曼德布洛特集和科赫雪花。您将 twoFractals 函数打包到共享库和可部署存档中。

前提条件

这些示例要求您在 MATLAB 会话中拥有 fractal MATLAB Production Server 附加功能。这些示例将 fractal 附加功能中的代理函数打包成一个独立的可执行文件、一个共享库和一个可部署的存档。要使 fractal 附加功能在 MATLAB 中可用:

  1. 使用 Production Server 存档编译器 (MATLAB Compiler SDK)mandelbrotsnowflake MATLAB 函数从 \demo\fractal\ 文件夹打包到名为 fractal 的可部署压缩包中。创建存档时,必须包含 MATLAB 函数签名文件。有关打包存档的更多信息,请参阅针对 MATLAB Production Server 创建可部署存档 (MATLAB Compiler SDK)

  2. fractal 存档部署到 MATLAB Production Server 实例。有关部署存档的更多信息,请参阅将存档部署至 MATLAB Production Server

    与服务器管理员确认服务器上已启用发现服务。有关详细信息,请参阅发现服务

  3. 在您的 MATLAB 桌面上安装 fractal 附加功能。有关安装附加功能的更多信息,请参阅prodserver.addon.install。有关安装 MATLAB Production Server 附加功能的详细示例,请参阅 执行已部署的 MATLAB 函数

您可以通过运行 prodserver.addon.availableAddOns 来验证 fracatl 附加功能是否在您的 MATLAB 会话中可用。要测试 fractal 附加功能的安装,您可以在 MATLAB 命令提示符下运行 mandelflake 中的示例 MATLAB 函数 \demo\mandelflake

独立可执行文件和共享库需要 MATLAB Runtime。如果您还没有安装 MATLAB Runtime,请安装到您的计算机上。有关更多信息,请参阅 MATLAB Runtime

创建使用附加功能的独立可执行文件

此示例显示如何将 MATLAB Production Server 附加功能安装的代理函数打包成独立可执行文件,以调用托管在 MATLAB Production Server 实例上的 MATLAB 函数。此示例需要 MATLAB Compiler。您可以在未安装 MATLAB 的计算机上运行独立可执行文件。

  1. 在本例中,请将 support_package_root\toolbox\mps\matlabclient\demo\mandelflake 文件夹的内容复制到系统中一个单独的可写位置,例如,复制到名为 mandelflake 的文件夹中。

  2. 从 MATLAB 命令提示符导航到可写的 mandelflake 文件夹。mandelflake 文件夹包含一个名为 mandelflake 的 MATLAB 函数。使用 mcc (MATLAB Compiler) 命令从 mandelflake MATLAB 函数创建一个名为 mandelflake 的独立可执行文件。

    >> cd mandelflake
    >> mcc -m mandelflake

    此命令在 Windows® 系统上生成可执行文件 mandelflake.exe

    在 Linux®macOS 上,它会生成一个名为 mandelflake 的可执行文件。

  3. 在系统命令提示符下运行可执行文件以显示曼德布洛特集和科赫雪花。

    C:\mandelflake> mandelflake

    出现两个窗口,一个包含曼德布洛特集,一个显示科赫雪花。

创建使用附加功能的共享库或软件组件

此示例显示如何将 MATLAB Production Server 附加功能安装的代理函数打包到共享库中,然后在 C++ 客户端中使用该共享库调用托管在 MATLAB Production Server 实例上的 MATLAB 函数。此示例需要 MATLAB Compiler SDK 和受支持的 C++ 编译器。有关受支持的 C++ 编译器的列表,请参阅受支持和兼容的编译器MATLAB Compiler SDK 从 MATLAB 函数创建软件组件,例如共享库。

  1. 在本例中,请将 support_package_root\toolbox\mps\matlabclient\demo\fractalViewer 文件夹的内容复制到系统中一个单独的可写位置,例如,复制到名为 fractalViewer 的文件夹中。fractalViewer 文件夹包含以下内容:

    • MATLAB 函数 twoFractals 根据函数的输入参量显示曼德布洛特集和科赫雪花的图像

    • 一个 C++ 应用程序 fractalViewer,使用所需的输入参量调用 twoFractals 函数

  2. 从 MATLAB 命令提示符导航到可写的 fractalViewer 文件夹。使用 mcc (MATLAB Compiler) 命令从 twoFractals.lib MATLAB 函数创建一个名为 twoFractals.m 的共享库。

    >> cd fractalViewer
    >> mcc -W cpplib:twoFractals twoFractals.m

  3. twoFractals 共享库需要客户端使用其公共接口。使用 mbuild (MATLAB Compiler SDK) 函数编译并链接 fractalViewer C++ 应用程序与 twoFractals 共享库。fractalViewer C++ 应用程序使用适当的输入调用 twoFractals 函数。

    >> mbuild fractalViewer.cpp twoFractals.lib

    该命令在 Windows 系统上生成可执行文件 fractalViewer.exe 和共享库 twoFractals.dll

    在 Linux 上,它生成一个可执行文件 twoFractals.so 和一个共享库 fractalViewer。在 macOS 上,它会生成一个可执行文件 twoFractals.dylib 和一个共享库 fractalViewer

  4. 在系统命令提示符下运行 fractalViewer 可执行文件以显示曼德布洛特集和科赫雪花。

    C:\fractalViewer> fractalViewer

    出现两个窗口,一个包含曼德布洛特集,一个显示科赫雪花。

创建使用附加功能的可部署存档

此示例显示如何将一个 MATLAB Production Server 附加功能中的代理函数打包到 MATLAB Production Server 存档中,以便您可以从中安装第二个 MATLAB Production Server 附加功能。在这种情况下,第二个附加功能的代理函数调用第一个附加功能的代理函数,而后者又调用第一个附加功能的实际函数(托管在第一个 MATLAB Production Server 实例上的函数)。利用此功能,您可以将多个 MATLAB Production Server 存档链接在一起。然而,较长的链需要更多的网络资源并且运行速度较慢。对于包含附加功能代理函数的已部署存档,不支持应用程序访问控制。

此示例需要 MATLAB Compiler SDK

  1. 在本例中,请将 support_package_root\toolbox\mps\matlabclient\demo\fractalViewer 文件夹的内容复制到系统中一个单独的可写位置,例如,复制到名为 fractalViewer 的文件夹中。fractalViewer 文件夹包含一个 MATLAB 函数 twoFractals,用于显示曼德布洛特集和科赫雪花的图像。

  2. 在可写的 fractalViewer 文件夹中创建 MATLAB 函数签名文件 twoFractalsFunctionSignatures.json。当您创建 twoFractals 函数的可部署存档时,您需要一个 MATLAB 函数签名文件。有关详细信息,请参阅JSON 中的 MATLAB 函数签名。下面是一个示例 MATLAB 函数签名文件。

     twoFractalsFunctionSignatures.json

  3. 从 MATLAB 命令提示符导航到可写的 fractalViewer 文件夹。使用 mcc (MATLAB Compiler) 命令从 twoFractal.ctf MATLAB 函数创建可部署存档 twoFractals.m

    >> cd fractalViewer
    >> mcc('-W','CTF:twoFractals,DISCOVERY:twoFractalsFunctionSignatures.json','-U','twoFractals.m')

  4. 将生成的存档 twoFractals.ctf 复制到 MATLAB Production Server 实例的 auto_deploy 文件夹。

  5. 然后,安装 twoFractals MATLAB Production Server 附加功能。例如,如果您的 MATLAB Production Server 实例具有网络地址 localhost:9910,请使用以下命令:

    >> prodserver.addon.install('twoFractals','localhost',9910)

  6. 最后,调用 twoFractals 代理函数:

    >> twoFractals(300,600,5)
    出现两个窗口,一个包含曼德布洛特集,一个显示科赫雪花。

另请参阅

主题