Top Banner
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/
31

Oleksandr Krakovetskyi - Orchard CMS

Jun 25, 2015

Download

Technology

Ciklum

Orchard CMS - this is a new content management system supported by Microsoft. During the presentation will be reviewed basic principles of architecture, system modules and usage
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Oleksandr Krakovetskyi - Orchard CMS

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/

Page 2: Oleksandr Krakovetskyi - Orchard CMS

ASP.NET Content Management Systems

Agenda

Page 3: Oleksandr Krakovetskyi - Orchard CMS

DotNetNukeTelligent Community ServerTelligent GraffitimojoPortal, UmbraconopCommerce1С Битрикс (.NET Forge CMS), SiteCore, Telerik Sitefinity, EPIServer, BlogEngine.NET

List of ASP.NET CMS

Page 4: Oleksandr Krakovetskyi - Orchard CMS

Open Source (BSD)Written in VB.NET Moved to C# not so far

DotNetNuke

http://dotnetnuke.com/

Page 5: Oleksandr Krakovetskyi - Orchard CMS

PaidSuitable for online communitiesBlogs, Forums, Social, Calendar etc.Good for big communities & good hosting

Telligent Community Server

http://telligent.com/

Page 6: Oleksandr Krakovetskyi - Orchard CMS

Free and open sourceLimited Community Server functionalityMicrosoft Reciprocal License (Ms-RL)

Telligent Graffiti

http://graffiticms.com/ http://graffiticms.codeplex.com/

Page 7: Oleksandr Krakovetskyi - Orchard CMS

Free and open sourcemojoPortal: Common Public License, Umbraco: MIT

mojoPortal, Umbraco

http://www.mojoportal.com/

Page 8: Oleksandr Krakovetskyi - Orchard CMS

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/

Page 9: Oleksandr Krakovetskyi - Orchard CMS

Oxite basedhttp://nuget.orghttp://orchardproject.net/gallery http://visitmix.net/ Free and open sourceMicrosoft supported

ORCHARD CMS. Quick facts

Page 10: Oleksandr Krakovetskyi - Orchard CMS

ASP.NET MVC 3.0NHibernate: an object-relational mapping toolAutofac: an IoC containerCastle Dynamic Proxy: dynamic proxy generation

ORCHARD CMS. Architecture

Page 11: Oleksandr Krakovetskyi - Orchard CMS

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

Page 12: Oleksandr Krakovetskyi - Orchard CMS

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

Page 13: Oleksandr Krakovetskyi - Orchard CMS

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

Page 14: Oleksandr Krakovetskyi - Orchard CMS

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

Page 15: Oleksandr Krakovetskyi - Orchard CMS

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

Page 16: Oleksandr Krakovetskyi - Orchard CMS

A manifest is a small text file that describes a module or a theme to the system.

ORCHARD CMS. Main concepts. Manifest

Page 17: Oleksandr Krakovetskyi - Orchard CMS

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

Page 18: Oleksandr Krakovetskyi - Orchard CMS

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

Page 19: Oleksandr Krakovetskyi - Orchard CMS

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

Page 20: Oleksandr Krakovetskyi - Orchard CMS

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

Page 21: Oleksandr Krakovetskyi - Orchard CMS

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

Page 22: Oleksandr Krakovetskyi - Orchard CMS

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

Page 23: Oleksandr Krakovetskyi - Orchard CMS

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

Page 24: Oleksandr Krakovetskyi - Orchard CMS

AdministratorEditorModeratorAuthorContributorAnonymousAuthenticated

Own

ORCHARD CMS. Main concepts. Security. Roles

Page 25: Oleksandr Krakovetskyi - Orchard CMS

ORCHARD CMS. Main concepts. Security. Privileges and Permissions

Page 26: Oleksandr Krakovetskyi - Orchard CMS

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

Page 27: Oleksandr Krakovetskyi - Orchard CMS

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

Page 28: Oleksandr Krakovetskyi - Orchard CMS

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

Page 29: Oleksandr Krakovetskyi - Orchard CMS

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

Page 31: Oleksandr Krakovetskyi - Orchard CMS

http://wp7rocks.com http://msug.vn.ua http://twitter.com/msugvnua [email protected]

Thanks! Q&A!