Best practices

The following information presents the recommended best practices for using and maintaining your MVS Toolkit system.

Back Up Your Web Services

  • Export your web services every time you make a change.
  • You can copy the web service export file into a D3 data file.
  • Web service data is stored in the <MVS.Install.Directory>/server/database directory which can be added to your backup scheme.

MVS Toolkit Version

Make sure all Toolkit clients and servers are running the same version of the Toolkit (preferably the latest version). Failure to do so can result in operational inconsistencies and errors. For the latest version, see ourStatus Sheets.

Unique Server Names

  • Use unique names for your MVS Web Service Providers and MV Servers (D3/mvBase).
  • Develop and use a naming convention. For example: For a server named Acmeserver that hosts both the MVS Web Server and a D3 or mvBase database server, name the Web Service Provider Acmeserver_mvs and name the MV Server Acmeserver_d3 or Acmeserver_mvB. This will avoid confusion when communicating with others about your web service environment and makes it easier to programmatically change server names in a web service export file prior to importing web services.

Host Names

  • NEVER use “localhost” as a hostname.

    While this works fine on test systems where the IDE, the MV server, and all of the clients (including browsers and applications) all reside on the same machine, the use of “localhost” will be problematic when you start distributing or testing in a multi-machine environment.

  • If you cannot use a DNS-resolvable name, use an IP address.
  • If you prefer not to bury the IP address in all of your definitions, use the “hosts” files on all machines involved to resolve names to IP addresses.
  • Make sure you can ping the host by your chosen name/address from any machine hosting the client or server. Remember, if you cannot ping it, the client/server cannot connect to it.

Avoid AQL-based Web Service Operations

  • Using subroutines rather than AQL statements gives you more control over your responses and gives you greater ability to validate request data and enforce security.
  • AQL responses as implemented in the Toolkit suffer from over-nesting.

Subroutine Error Handling

  • All subroutine logic flow MUST ultimately reach a RETURN statement.
  • Where you might use END, DEBUG, ABORT, or STOP in a normal subroutine when an error occurs, this will cause the MVSP connection to hang for no clear reason.
  • Log errors to a file and/or pass errors back to the web service via a “status” argument in your subroutine.

Logs

Regularly review your Client, Server, and D3/mvBase error logs. It is recommended that you purge these logs on a regular basis to keep their sizes more manageable. Also, smaller logs are easier to review and send to Rocket D3MV Support if requested.

  • The MVS server logs are in the <MVS.Install.Directory>/server/logs directory.
  • The MVS client log is in the /users/<User>/MVTool/.metadata directory.

Separate MVS-specific D3/mvBase Account

  • In D3/mvBase, set up a separate account from which to run your web services.
  • Use Q-pointers within that account to point to your real data accounts.
  • Create a BP file local to that account to hold your MVS-specific subroutines.
  • When using subroutines from your existing application account, catalog only the subroutines you are using (not every subroutine in the existing application’s normal BP file).

Source Control

  • There is no source control utility within the Toolkit. While it is possible to deploy the IDE Client to multiple machines, it is not recommended unless you have addressed the issue of source control. We instead recommend installing the IDE client on one machine and using remote desktop to access the client on that machine.
  • When there are multiple developers working on the same system, make sure they communicate and do not step on each other's work.