Architecture - TcmExtensions/TcmCDService GitHub Wiki

The Tridion Content Delivery functionality is supplied as Java libraries. In order to make use of the Java code from a .NET environment, Tridion makes use of a CodeMesh JuggerNET.

The JuggerNET provided architecture allows a .NET application to interact with Java objects created in a remote Java virtual machine using JNI (Java Native Interface).

JuggerNet Architecture

Linked from CodeMesh JuggerNET architecture

For a Tridion implementation across multiple ASP.NET application pools, the implementation would look as follows:

Native Integration

The above diagram shows the native integration provided by Tridion. When using multiple websites, multiple Tridion Java VM's are loaded, each having their own loaded copy of the Tridion libraries and their own object caching.

As the number of application pools using Tridion on the server increases so does the pressure on valuable server resources.

TcmCDService allows to host a centralized interface to the Tridion Content Delivery API, which allows to run a single Java VM with a shared object cache in order to serve many .NET client applications.

TcmCDService Integration

TcmCDService exposes its functionality over standard Windows Communication Foundation protocols.

This allows both local and remote .NET based clients to connect using multiple protocols such as named pipes or TCP connections.

Note that JuggerNET does have the possibility to run over TCP/IP using a shared VM, but this is highly unoptimized, mostly because all Java objects have to travel as a POJO across the network.

TcmCDService alleviates this by sending only the required results using optimized WCF serialization from any Tridion Content Delivery call to the client, greatly decreasing round-trip times.

Additionally this also allows TcmCDService to be running on a remote machine and .NET application clients connecting remotely to the service.

Making use of a standard WCF architecture allows hosting TcmCDService both as a self-hosted Windows Service or inside a web application. Also it removes any dependency on Tridion libraries from applications, simplifying the Tridion deployment architecture.

⚠️ **GitHub.com Fallback** ⚠️