Views: 1590
Number of votes: 0
Average rating:

The EPiServer Channel Wrapper

We’re releasing a very early version of a wrapper we’ve written around EPiServer’s content channels. It reduces the amount of code necessary to connect to a content channel and send data to it.

Additionally, it provides a framework for the persistent mapping of external content IDs (from whatever datasource) against EPiServer PageGUIDs. This makes it possible to know when you need to create new content, and when you need to update existing content (and then have the correct GUID to do that).

The use case here is when you have content outside your EPiServer install that you need to sync against pages inside EPiServer. We see this so often in content integration scenarios that we finally built this wrapper to make it easier.

(And yes, we know the Service API for CMS will be coming at some point. But that’s just the transmission mechanism. If even we swap the services out, there’s still a bunch of surrounding logic to our library that’s still necessary.)

I wrote a blog post about the pattern here, which is worth reading as it discusses the reasoning and some of the architectural concepts behind the pattern (which, for the record, is not unique to EPiServer).

The “Import and Update” Pattern

And the code is on GitHub here:

EPiServer Channel Wrapper

There are example projects showing imports from code, XML, a SQL database, and another EPiServer installation (which makes it effectively a low-level form of content mirroring that you can modify, which is handy).  The README in the root has code samples and some architectural notes.

There’s quite a bit left to do on it yet:

  • Improve the deletion detection code
  • Implement content hashing to determine if content has changed since the last run and pre-empt the web service call entirely
  • Allow for parent page GUIDs, so as to allow nesting of content


Future improvements will come.  Pull requests are welcome.

Nov 13, 2014

Please login to comment.