Execute MATLAB Functions on MATLAB Production Server Reference Architecture
Client applications for MATLAB® Production Server™ on the cloud are different from those for on-premises server instances in several ways. To execute MATLAB functions deployed on MATLAB Production Server on the cloud, you must use the MATLAB execution endpoint URL specified in the dashboard. Depending on the implementation of your client program, you might have to update your code to use the Azure® application gateway self-signed SSL certificate and cookie-based session affinity.
Similar to client applications for on-premises server installations, you must use the MATLAB Production Server client libraries for client applications that you write using Java®, .NET, C, and Python®.
Use MATLAB Execution Endpoint URL
After your MATLAB Production Server deployment to Azure is complete, log in to the dashboard to retrieve the MATLAB execution endpoint. The Overview tab in the dashboard specifies the MATLAB Execution Endpoint. For information on accessing the dashboard, see Connect to Dashboard.
This endpoint is an HTTPS URL that client programs use to make requests to the server
and execute MATLAB functions deployed to the server. For example, if the MATLAB execution endpoint for your server is
https://mpst4ezclcdtlcay.eastus.cloudapp.azure.com
, to use the
MATLAB
Production Server RESTful API to execute a MATLAB function mymagic
located in a deployed application
myapp
, specify the URL
https://mpst4ezclcdtlcay.eastus.cloudapp.azure.com/myapp/mymagic
.
Download Client Libraries
If you want to write client programs in Java, .NET, C, and Python for invoking MATLAB functions deployed on the server, you must use the MATLAB Production Server client libraries. To download the client libraries, see MATLAB Production Server Client Libraries.
Work with Self-Signed Certificate
The Azure application gateway in the deployment requires an SSL certificate. The application gateway provides the MATLAB execution endpoint, which is an HTTPS URL that client programs use to send requests to the server. IT is recommended that the application gateway uses an SSL certificate signed by a certificate authority. However, if your application gateway uses a self-signed certificate, your client programs might require some modifications.
Client programs might require disabling host name verification to avoid encountering an exception caused by a failure in host name verification. The verification can fail due to a mismatch between the host names in the HTTPS URL for MATLAB function execution and the common name (CN) of the self-signed certificate. For example, the host name for the MATLAB execution endpoint can have the value <
, but the CN of your self-signed certificate can have the value uniqueID
>.<location
>.cloudapp.azure.comazure.com
.
Depending on the implementation of your client program, you might also have to retrieve the self-signed certificate that the application gateway uses and add the certificate to your local truststore. For more information on configuring the client environment, see Handle Exceptions for a Java client and Handle Exceptions for a .NET client.
Manage HTTP Cookie
The Azure application gateway provides cookie-based session affinity, where it uses
cookies to keep a user session on the same server. On receiving a request from a client
program, the application gateway sets the Set-Cookie
HTTP response header
with information about the server virtual machine (VM) that processes the request.
Asynchronous Request Execution
A client program that uses asynchronous requests to execute a MATLAB function deployed to the server must set the Cookie
HTTP
request header with the value of the Set-Cookie
header for all
subsequent requests. This ensures that same server VM that processes the first request
processes all subsequent requests for that session.
Synchronous Request Execution
A client program that uses synchronous requests to execute a MATLAB function deployed to the server must not set the Cookie
HTTP request header with the value of the Set-Cookie
header, and must
clear the value of the Cookie
header if it has been previously set.
This ensures that the synchronous requests are load balanced and the same server VM does
not process them.
The default property in a Java client that uses MWHttpClient
sets HTTP cookies. For
information about disabling cookies, see Configure Client-Server Connection. The Java client API that uses protobuf and the .NET client API do not set HTTP
cookies by default.