Article
Robert Cemper · Aug 15, 2020 2m read

ECP between IRIS and Caché / Ensemble

Those of you that worked already with ECP might know that it operates not only across
operating systems, processor technologies (big-little-endian), but also -with limits- across versions in C/E.
This cross-version feature also includes IRIS (verified for 2020.1)  and C/E (2018.3)

There are of course limits and you are not as free as in pure C/E only environments.
It is not a good idea to share code across this type of ECP connection.

While .MAC and .INT routines may work eventually. Class Code will definitely not.
2 Examples:
Storage of a %Serial class:

  • C/E : <Type>%Library.CacheSerialState</Type>
  • IRIS: <Type>%Storage.Serial</Type>

Storage of a %Persisten Class:

  • C/E : <Type>%Library.CacheStorage</Type>
  • IRIS: <Type>%Storage.Persistent</Type>

The consequences:
You need to port your classes from C/E to IRIS
You need only to map the referred GLOBALS ! (or all Globals)
But this is a rather simple and well-documented exercise.

In General:
Mapping only Globals over ECP should be the preferred approach anyhow since they are the moving parts.
Code (Routines and Classes) does not change in production systems so often on the fly that an immediate update is required.
So you reduce the load on your ECP connection and win performance by better using your available bandwidth. 

With IRIS the different inheritance is just an additional push to separate code from data.
(which makes sense anyhow. eg. backups)

This approach allows you to make limited use of some IRIS features
and reduces time pressure before you run a full migration to IRIS.

It follows the idea of a micro-service, allowing to split a big BANG into smaller bang, bang, bang steps.

7
1 285
Discussion (2)1
Log in or sign up to continue

I have a configuration with Caché 2018.1 as an ECP Data server and a few ECP Application servers on Ensemble 2012.2. The code is compiled and deployed for 2012, only, but stored on 2018.1. The data server even does not have a namespace for an application. It only mounts databases, and code databases just like any other data, which used by application servers. Ensemble Production works on a separate application server. And ECP Data server uses mirroring, so, my ensemble production and integrations does not care about IP migration at all, they work in the same place all the time.

In case of when ECP Application server may work on different versions, I would recommend storing all the versions of code in one place anyway on ECP Data Server. Just mount a specific code version on different platforms.

@Dmitry Maslennikov 
Thanks for the excellent example!

The only addon: C/E code has to be separated from IRIS code.  (Not really a challenge)