SaaS CMS has officially launched! Learn more now.

Johan Björnfot
Nov 22, 2017
  7483
(16 votes)

CMS 11 - A package breaking release

At Episerver we are using continuous releases and we follow semantic versioning. That means that we release features and bugfixes continuously. A major release indicates that there is breaking change compared to the previous version. The main breaking change we have introduced in CMS 11 is that we have separated our packages in "core" runtime packages and packages dependent on specific technologies. Some of the new packages are:

  • EPiServer.Framework.AspNetEPiServer.CMS.AspNet - Contains the ASP.NET specific implementations of CMS like WebForms and MVC 5 support.
  • EPiServer.ServiceLocation.StructureMap - A StructureMap based IOC implementation. Having this as a separate package opens up for newer version of unsigned StructureMap (planned to be release in a near future) but also for other implementations of IOC containers.
  • EPiServer.XForms - Optional package that can be used if xforms is used. 
  • EPiServer.DynamicContent - Optional package that can be used if dynamic content is used
  • EPiServer.Search.Cms - Optional package if EPiServer Search is used.

The main purpose is to achieve a better separation of concern. One goal was to have a core runtime that is not dependent to be executed in a specific environment like ASP.NET but instead can be setup in for example an integration test.

.NET Standard

The .NET Standard is a formal specification of .NET APIs that are intended to be available on all .NET implementations. The specification is maintained by .NET implementors, specifically Microsoft (includes .NET Framework, .NET Core and Mono) and Unity. The idea is that a library that is compliant with NET standard can be consumed and executed on all environments where .NET is supported (a.k.a. cross-platform library).

Previous to CMS 11 all Episerver CMS packages (e.g. EPiServer.Framework, EPiServer.CMS.Core) where dependent on assemblies only available on .NET Framework and could hence only execute on environments where .NET Framework is installed.

In CMS 11 our "core" packages EPiServer.Framework and EPiServer.CMS.Core are now .NET Standard 2.0 compliant. The packages EPiServer.Framework.AspNet and EPiServer.CMS.AspNet that contain the ASP.NET specific implementation (e.g. with dependecies to System.Web, System.Web.Mvc and System.Configuration) still requires .NET Framework.

An overview of the packages are shown below:

Image CMS11.png

The existing applications today that are ASP.NET application will require the EPiServer.CMS.AspNet package (supporting both WebForms and MVC 5) and will execute on ASP.NET on .NET Framework. However the separation of packages also opens up for example for integration tests (that do not require ASP.NET) and also since core packages are now .NET Standard compliant it is also possible to build other types of applications (e.g. Console application or Web API) based on .Net Core. 

We aim to release a package that will assist with setting up CMS runtime in an ASP.NET Core application within a near future. This package will for example contain an implementation of our IOC abstraction based on the default dependency injection implementation in .Net Core. 

Nov 22, 2017

Comments

Please login to comment.
Latest blogs
Optimizely SaaS CMS Concepts and Terminologies

Whether you're a new user of Optimizely CMS or a veteran who have been through the evolution of it, the SaaS CMS is bringing some new concepts and...

Patrick Lam | Jul 15, 2024

How to have a link plugin with extra link id attribute in TinyMce

Introduce Optimizely CMS Editing is using TinyMce for editing rich-text content. We need to use this control a lot in CMS site for kind of WYSWYG...

Binh Nguyen Thi | Jul 13, 2024

Create your first demo site with Optimizely SaaS/Visual Builder

Hello everyone, We are very excited about the launch of our SaaS CMS and the new Visual Builder that comes with it. Since it is the first time you'...

Patrick Lam | Jul 11, 2024

Integrate a CMP workflow step with CMS

As you might know Optimizely has an integration where you can create and edit pages in the CMS directly from the CMP. One of the benefits of this i...

Marcus Hoffmann | Jul 10, 2024

GetNextSegment with empty Remaining causing fuzzes

Optimizely CMS offers you to create partial routers. This concept allows you display content differently depending on the routed content in the URL...

David Drouin-Prince | Jul 8, 2024 | Syndicated blog

Product Listing Page - using Graph

Optimizely Graph makes it possible to query your data in an advanced way, by using GraphQL. Querying data, using facets and search phrases, is very...

Jonas Bergqvist | Jul 5, 2024