Orchard CMS and other ASP.NET content management systems Oleksandr Krakovetskyi Software Developer, Team Lead at Ciklum Microsoft Regional Director, ASP.NET MVP [email protected] , @msugvnua http://msug.vn.ua , http://wp7rocks.com/
Jun 25, 2015
Orchard CMSand other ASP.NET content management systems
Oleksandr KrakovetskyiSoftware Developer, Team Lead at CiklumMicrosoft Regional Director, ASP.NET [email protected], @msugvnuahttp://msug.vn.ua, http://wp7rocks.com/
ASP.NET Content Management Systems
Agenda
DotNetNukeTelligent Community ServerTelligent GraffitimojoPortal, UmbraconopCommerce1С Битрикс (.NET Forge CMS), SiteCore, Telerik Sitefinity, EPIServer, BlogEngine.NET
List of ASP.NET CMS
Open Source (BSD)Written in VB.NET Moved to C# not so far
DotNetNuke
http://dotnetnuke.com/
PaidSuitable for online communitiesBlogs, Forums, Social, Calendar etc.Good for big communities & good hosting
Telligent Community Server
http://telligent.com/
Free and open sourceLimited Community Server functionalityMicrosoft Reciprocal License (Ms-RL)
Telligent Graffiti
http://graffiticms.com/ http://graffiticms.codeplex.com/
Free and open sourcemojoPortal: Common Public License, Umbraco: MIT
mojoPortal, Umbraco
http://www.mojoportal.com/
Free and open source (with logo and trademarks)
The nopCommerce Public License Version 1.0 ("NPL")
Shopping card, e-commerce
nopCommerce
http://www.nopcommerce.com/
Oxite basedhttp://nuget.orghttp://orchardproject.net/gallery http://visitmix.net/ Free and open sourceMicrosoft supported
ORCHARD CMS. Quick facts
ASP.NET MVC 3.0NHibernate: an object-relational mapping toolAutofac: an IoC containerCastle Dynamic Proxy: dynamic proxy generation
ORCHARD CMS. Architecture
Content ItemA content item is a single piece of content, often associated with a single URL (address) on the site. Examples of content items are pages, blog posts or products.
Content typeContent items are instances of content types. Said differently, content types are classes of content items. What we call a blog post is just an item of type blog post.
ORCHARD CMS. Main concepts. Content Item and type
In Orchard, content types are built from smaller parts, that are conveniently called content parts. Content parts are atoms of content that are enough to build a specific coherent behavior and that can be reused across content types.
ORCHARD CMS. Main concepts. Content Part
Content fields are pieces of information that can be added to a content type. Content fields have a name and a type and are specific to a content type. There can be several of each field type on any given content type.
For example, a Product content type can have a text field representing its Sku, a numeric field representing its price, and another numeric field representing its weight. Each of these fields probably only makes sense on a product.
ORCHARD CMS. Main concepts. Content Field
The various possible custom possible extensions that can be built for Orchard are typically built as modules. A module is a set of extensions for Orchard that are grouped under a single sub-folder of the Modules directory that can be found under the Orchard web site.
ORCHARD CMS. Module
A module can contain one or more features, which is a logical grouping of functionality that can be enabled or disabled individually. For example, an auth module could have separate features for OpenID, FaceBook, LiveID, Twitter or Google authentication that can each be turned on or off.
ORCHARD CMS. Main concepts. Features
A manifest is a small text file that describes a module or a theme to the system.
ORCHARD CMS. Main concepts. Manifest
A theme is a packaged look and feel for a site. It can consist of any combination of style sheets, images, layouts, templates and even custom code. It is even possible to create a theme that inherits from another, which is very useful if you are trying to make only small modifications on an existing theme.
ORCHARD CMS. Main concepts. UI. Theme
Each content part, each field and each widget will need to be graphically represented in the front-end, transforming the data that it represents into a form that can be read by the users of the site. A template is the recipe that formats that data and transforms it into HTML for the browser to display. You can think of a template as plain HTML with well-defined "holes" where data gets inserted.
<h1>@Model.Title</h1>
ORCHARD CMS. Main concepts. UI. Template
Before displaying something using a template, that something gets transformed into a shape, which is a very malleable object that contains all the information required in order to display it. Before getting rendered by templates, everything gets mapped into a tree of shapes that is a sort of abstract representation of the contents of the final page. The advantage of such trees of shapes is that any module can modify existing shapes or create new ones.
ORCHARD CMS. Main concepts. UI. Shape
When rendering the collections of parts and fields -or any other shapes- that compose a page or content item, Orchard needs to know in what order to do so. Placement.info files are XML files that describe rules that can be used to determine what shapes go into what zones and in what order.
<Placement> <Place Parts_Map="Content:10"/> <Place Parts_Map_Edit="Content:7.5"/> </Placement>
ORCHARD CMS. Main concepts. UI. Placement
A layout is a file in a theme that defines the general organization of the pages of the.
Zones are specific parts of a layout that can be customized by inserting widgets.
ORCHARD CMS. Main concepts. UI. Layout & Zones
A widget is a small fragment of UI that can be added to some or all pages of the site. Examples of widgets are tag clouds, maps, archives, a search form, or recent blog posts.
ORCHARD CMS. Main concepts. UI. Widgets
A layer is a group of widgets (with their specific configuration, which includes their positioning -zone name and ordering-) that is activated by a specific rule.
TheHomePage, Default etc.
ORCHARD CMS. Main concepts. UI. Layer
AdministratorEditorModeratorAuthorContributorAnonymousAuthenticated
Own
ORCHARD CMS. Main concepts. Security. Roles
ORCHARD CMS. Main concepts. Security. Privileges and Permissions
A handler is similar to an MVC filter in that it contains code that will execute for specific events of the request life-cycle. They are typically used to set-up data repositories or to do additional operations when something gets loaded.
Drivers are similar to MVC controllers, but they act at the level of a content part instead of at the level of the full request. They typically prepare shapes for rendering and handle post-backs from admin editors.
ORCHARD CMS. Development
RecordA record is a class that models the database representation of a content part. They are POCOs where each property must be virtual.
ModelWhat plays the part of the model for a content part is the part class itself. Some parts also define view models, in the form of strongly-typed classes or of more flexible dynamic shapes.
ORCHARD CMS. Development
MigrationA migration is a description of the operations to execute when first installing a feature or when upgrading it from a version to the next. This enables smooth upgrades of individual features without data loss. Orchard includes a data migration framework.
ORCHARD CMS. Development
InjectionInversion of Control, or injection, is widely used in Orchard. When any piece of code requires a dependency, it will typically demand the injection of one or several instances of a specific interface. The framework will take care of selecting, instantiating and injecting the right implementations at runtime.
ORCHARD CMS. Development
http://msug.vn.ua/ http://www.orchardproject.net/docs/https://blogs.msdn.com/b/vyunev/ http://stackoverflow.com/questions/1978360/anybody-using-orchard-cms http://channel9.msdn.com/Events/MIX/MIX10/FT06
ORCHARD CMS. References
http://wp7rocks.com http://msug.vn.ua http://twitter.com/msugvnua [email protected]
Thanks! Q&A!