Condense Light is a runtime that is designed to be embedded in your web or desktop application.
The Preview is available on Nuget.
Condense.Core: 0.9.1.0, or
Condense.Light: 0.9.1.0, or
Couchbase Server (recommended): http://couchbase.com. This can be installed locally, or remotely (eg: EC2 - with AMIs available). (Or use the in-memory storage provider)
You may use a separate assembly or include these types in your application directly.
Create your entities as POCO object. Decorate them with the
Create your lambda methods, either on domain objects, or on service classes. Decorate these with the
Lambda attribute. If on a service type, be sure to set the
ContextType, you generally care that inputs have some sort of shared lineage. A lambda method on a domain object will use the type it is declared on (and the this pointer) as the context.
Create an interface for interoperability.
Create interoperability methods. Input entity parameters are treated as new events. If a return type is specified the call will block until an event of that type occurs in the context of the inputs, and then the event entity will be returned.
Condense.Light and dependancies.
web.config file with the details of your Couchbase cluster.
In your application initialization construct a
CondenseLight host providing your domain assembly to the constructor, or
TDomain is a type in your domain assembly. This assembly will be scanned for entities and lambdas. Keep a reference to the returned host.
.GetIntegration<TIntegration>() on the host. This will return an constructed implementation of
TIntegration, following the integration rules.
Condense Light runs as a single independent node in-process. While work is performed according to the same transactional rules as Cloud, the local work-queue is non-persistent ( at this stage). The runtime may need a few seconds after a request to complete any trailing work before shutting down the application (or drain-stopping a web node).
As it runs in-process, you may be able to access data between lambdas using static fields or other local storage. On the Cloud platform lambdas that are not explicitly flagged for ‘in process chaining’ will likely run on a completely different worker node.
Condense will log to Common.Logging. Listeners and outputs can be configured, and adapters to other logging frameworks such as NLog and log4net are available.
Condense Light can be configured to run using a lightweight in-memory storage provider. This is primarily intended for integration testing. It may also be useful for using Condense to orchestrate workflow in situations where persistence of state isn’t needed.
Condense Light persists domain entities and support metadata in a Couchbase cluster.
Connection information must be specified in the
.config file. The storage provider is currently hard-coded to use the bucket “default”. The GSI index must be created on this bucket, as the currently implementation uses N1QL queries for some data retrieval (this is likely to change to regular views for performance reasons).
<configuration> <configSections> <sectionGroup name="couchbaseClients"> <section name="couchbase" type="Couchbase.Configuration.Client.Providers.CouchbaseClientSection, Couchbase.NetClient" /> </sectionGroup> </configSections> <couchbaseClients> <couchbase useSsl="false"> <servers> <add uri="http://127.0.0.1:8091/pools"></add> </servers> </couchbase> </couchbaseClients> </configuration>