Calling all developers! We invite you to provide your input on Feature Experimentation by completing this brief survey.

 

Deane Barker
Nov 13, 2014
  3366
(0 votes)

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

Comments

Please login to comment.
Latest blogs
Level Up with Optimizely's Newly Relaunched Certifications!

We're thrilled to announce the relaunch of our Optimizely Certifications—designed to help partners, customers, and developers redefine what it mean...

Satata Satez | Jan 14, 2025

Introducing AI Assistance for DBLocalizationProvider

The LocalizationProvider for Optimizely has long been a powerful tool for enhancing the localization capabilities of Optimizely CMS. Designed to ma...

Luc Gosso (MVP) | Jan 14, 2025 | Syndicated blog

Order tabs with drag and drop - Blazor

I have started to play around a little with Blazor and the best way to learn is to reimplement some old stuff for CMS12. So I took a look at my old...

Per Nergård | Jan 14, 2025

Product Recommendations - Common Pitfalls

With the added freedom and flexibility that the release of the self-service widgets feature for Product Recommendations provides you as...

Dylan Walker | Jan 14, 2025