部署附加功能
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 Server 从 fractal 存档在客户端计算机上安装 fractal 附加功能。安装 fractal 附加功能会在您的计算机上安装代理 mandelbrot 函数。然后,您可以在 MATLAB 中编写一个使用代理 mandelbrot 函数的客户端程序。
您还可以使用 MATLAB Compiler SDK 将代理 mandelbrot 函数打包成共享库,例如 fractal.dll。然后,您可以编写一个使用 fractal.dll 的 C++客户端程序。
下图显示了 MATLAB 客户端(蓝色)和 C++ 客户端(绿色)调用相同的代理 mandlebrot 函数与部署到 MATLAB Production Server 实例的 mandelbrot 函数进行通信。

以下示例显示如何将已安装的代理函数打包成独立可执行文件、共享库和可部署存档。这些示例使用系统上 文件夹中的文件。support_package_root\toolbox\mps\matlabclient\demodemo 文件夹包含以下文件夹:
fractal- 包含mandelbrot和snowflakeMATLAB 函数。mandelbrot函数生成曼德布洛特集,snowflake函数生成科赫雪花的轮廓。您将这些 MATLAB 函数打包到 MATLAB Production Server 可部署存档中。mandelflake- 包含显示曼德布洛特集和科赫雪花的mandelflakeMATLAB 函数。您将mandelflake函数打包成独立的可执行文件。fractalViewer- 包含twoFractalsMATLAB 函数,该函数根据您指定的输入参量显示曼德布洛特集和科赫雪花。您将twoFractals函数打包到共享库和可部署存档中。
前提条件
这些示例要求您在 MATLAB 会话中拥有 fractal MATLAB Production Server 附加功能。这些示例将 fractal 附加功能中的代理函数打包成一个独立的可执行文件、一个共享库和一个可部署的存档。要使 fractal 附加功能在 MATLAB 中可用:
使用 Production Server 存档编译器 (MATLAB Compiler SDK)将
mandelbrot和snowflakeMATLAB 函数从\demo\fractal\文件夹打包到名为fractal的可部署压缩包中。创建存档时,必须包含 MATLAB 函数签名文件。有关打包存档的更多信息,请参阅针对 MATLAB Production Server 创建可部署存档 (MATLAB Compiler SDK)。将
fractal存档部署到 MATLAB Production Server 实例。有关部署存档的更多信息,请参阅将存档部署至 MATLAB Production Server。与服务器管理员确认服务器上已启用发现服务。有关详细信息,请参阅发现服务。
在您的 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 的计算机上运行独立可执行文件。
在本例中,请将
文件夹的内容复制到系统中一个单独的可写位置,例如,复制到名为support_package_root\toolbox\mps\matlabclient\demo\mandelflakemandelflake的文件夹中。从 MATLAB 命令提示符导航到可写的
mandelflake文件夹。mandelflake文件夹包含一个名为mandelflake的 MATLAB 函数。使用mcc(MATLAB Compiler) 命令从mandelflakeMATLAB 函数创建一个名为mandelflake的独立可执行文件。>> cd mandelflake >> mcc -m mandelflake
此命令在 Windows® 系统上生成可执行文件
mandelflake.exe。在 Linux® 和 macOS 上,它会生成一个名为
mandelflake的可执行文件。在系统命令提示符下运行可执行文件以显示曼德布洛特集和科赫雪花。
C:\mandelflake> mandelflake
出现两个窗口,一个包含曼德布洛特集,一个显示科赫雪花。
创建使用附加功能的共享库或软件组件
此示例显示如何将 MATLAB Production Server 附加功能安装的代理函数打包到共享库中,然后在 C++ 客户端中使用该共享库调用托管在 MATLAB Production Server 实例上的 MATLAB 函数。此示例需要 MATLAB Compiler SDK 和受支持的 C++ 编译器。有关受支持的 C++ 编译器的列表,请参阅受支持和兼容的编译器。MATLAB Compiler SDK 从 MATLAB 函数创建软件组件,例如共享库。
在本例中,请将
文件夹的内容复制到系统中一个单独的可写位置,例如,复制到名为support_package_root\toolbox\mps\matlabclient\demo\fractalViewerfractalViewer的文件夹中。fractalViewer文件夹包含以下内容:MATLAB 函数
twoFractals根据函数的输入参量显示曼德布洛特集和科赫雪花的图像一个 C++ 应用程序
fractalViewer,使用所需的输入参量调用twoFractals函数
从 MATLAB 命令提示符导航到可写的
fractalViewer文件夹。使用mcc(MATLAB Compiler) 命令从twoFractals.libMATLAB 函数创建一个名为twoFractals.m的共享库。>> cd fractalViewer >> mcc -W cpplib:twoFractals twoFractals.m
twoFractals共享库需要客户端使用其公共接口。使用mbuild(MATLAB Compiler SDK) 函数编译并链接fractalViewerC++ 应用程序与twoFractals共享库。fractalViewerC++ 应用程序使用适当的输入调用twoFractals函数。>> mbuild fractalViewer.cpp twoFractals.lib
该命令在 Windows 系统上生成可执行文件
fractalViewer.exe和共享库twoFractals.dll。在 Linux 上,它生成一个可执行文件
twoFractals.so和一个共享库fractalViewer。在 macOS 上,它会生成一个可执行文件twoFractals.dylib和一个共享库fractalViewer。在系统命令提示符下运行
fractalViewer可执行文件以显示曼德布洛特集和科赫雪花。C:\fractalViewer> fractalViewer
出现两个窗口,一个包含曼德布洛特集,一个显示科赫雪花。
创建使用附加功能的可部署存档
此示例显示如何将一个 MATLAB Production Server 附加功能中的代理函数打包到 MATLAB Production Server 存档中,以便您可以从中安装第二个 MATLAB Production Server 附加功能。在这种情况下,第二个附加功能的代理函数调用第一个附加功能的代理函数,而后者又调用第一个附加功能的实际函数(托管在第一个 MATLAB Production Server 实例上的函数)。利用此功能,您可以将多个 MATLAB Production Server 存档链接在一起。然而,较长的链需要更多的网络资源并且运行速度较慢。对于包含附加功能代理函数的已部署存档,不支持应用程序访问控制。
此示例需要 MATLAB Compiler SDK。
在本例中,请将
文件夹的内容复制到系统中一个单独的可写位置,例如,复制到名为support_package_root\toolbox\mps\matlabclient\demo\fractalViewerfractalViewer的文件夹中。fractalViewer文件夹包含一个 MATLAB 函数twoFractals,用于显示曼德布洛特集和科赫雪花的图像。在可写的
fractalViewer文件夹中创建 MATLAB 函数签名文件twoFractalsFunctionSignatures.json。当您创建twoFractals函数的可部署存档时,您需要一个 MATLAB 函数签名文件。有关详细信息,请参阅JSON 中的 MATLAB 函数签名。下面是一个示例 MATLAB 函数签名文件。从 MATLAB 命令提示符导航到可写的
fractalViewer文件夹。使用mcc(MATLAB Compiler) 命令从twoFractal.ctfMATLAB 函数创建可部署存档twoFractals.m。>> cd fractalViewer >> mcc('-W','CTF:twoFractals,DISCOVERY:twoFractalsFunctionSignatures.json','-U','twoFractals.m')
将生成的存档
twoFractals.ctf复制到 MATLAB Production Server 实例的auto_deploy文件夹。然后,安装
twoFractalsMATLAB Production Server 附加功能。例如,如果您的 MATLAB Production Server 实例具有网络地址localhost:9910,请使用以下命令:>> prodserver.addon.install('twoFractals','localhost',9910)
最后,调用
twoFractals代理函数:出现两个窗口,一个包含曼德布洛特集,一个显示科赫雪花。>> twoFractals(300,600,5)
