Contensive 5.0 vs 4.1
The move to Version 5.0 was to
- Remove all proprietary third party dependencies (paid licenses)
- All code to be open source
- Support an architecture that easily scales out.
Architectural differences are very small. In both cases clients are written by creating an instance of Contensive.Core.CPClass, and addons are written by creating a class that inherits CPAddonBaseClass.
both systems use Sql server and the local file system, although version 4.1 also supports MS Access and the version 5.0 also supports a remote file system.
In version 4.1, CPClass is a dotnet wrapper around COM (and DCom) components. There is a windows server (ccService) which does scheduling, background task execution and local cache. There is also a server health monitor (ccMonitor).
In version 5.0, CPClass wraps a native dotnet core. The local cache has been eliminated in favor of a remote cache like AWS Elasticache (MemCacheD), although a replace local cache is in development for small installations. The windows service supports an independent task scheduler and task runner so there can be many task runnings in a scale out environment. The monitor has also been rewritten in dotnet.
Physical Component Differences
Contensive Library version 5 has several functional components that make up an application
- Configuration Files
- In version 4.1, the configuration is stored in xml format in the program files (x86)\kma\contensive\config\config.xml file. in version 5.0 server configuration information is in the \ProgramData\clib\serverConfig.json file (in json format). One property of this configuration is the physical location of the clusterConfig.json file, which contains information about the cluster.
- The Client Processor (cp)
- This component (clibCore.dll) is the primary executable on the server. A reference to the assembly in your dotnet project gives you access to the full cp namespace for running addons and routes. It is installed with the setup.
- The client Base Classes (cpBase)
- installed with the setup and is available through NuGet (Contensive.clib). A reference to this assembly is needed to write Contensive Addons.
- The command line utility (clib.exe)
- Used to facilitate installation, setup and maintenance. for example, "clib -n" initializes a new server instance and creates new applications on the instance.
- The windows service (clibService.exe)
- (Optional) The service performs two optional functions. First, it schedules the execution of code (addons) in the background, adding them to an execution queue as needed. Second it kicks off command processes from the front of the queue. This way, on a single server the service can perform all duties and on a multiple server installation, you can have as many background worker processes (workerRoles) as you need and still only need a single task scheduler.
- Sql Server
- Either a local or remote instance of Sql Server. The local instance can be any edition (including the free Sql Express). A remote instance can be an instance of Sql Server, or the AWS RS service (supporting Multi Availability Zones, etc)
- MemCacheD cache cluster
- (Optional) Currently only AWS Elasticache is supported.
- Application Filesystem
- (Optional) A persistent (non ephemeral) file store used to synchronize