Architectural Changes in SIP 4 · Architectural Changes in SIP 4.0 Sitecore® is a registered trademark. All other brand and product names are the property of their respective holders.
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
Sitecore SIP 4.0 Architectural Changes in SIP 4.0 Rev: 23 May 2013
Chapter 1 Introduction .......................................................................................................................... 3 Chapter 2 Global Changes................................................................................................................... 4
2.1 SIP is no Longer an Out of the Box Intranet Solution ............................................................. 5 2.1.1 Features in SIP 4.0.............................................................................................................. 5 2.1.2 All SIP Features are Separated into Modules ..................................................................... 5 2.1.3 SIP 4.0 Contains No Front-end UI Elements ...................................................................... 6 2.1.4 Features Removed from SIP 4.0 ......................................................................................... 6
2.2 Architecture Changes for the Modular Approach .................................................................... 7 2.2.1 The Modules Work Independently ...................................................................................... 8 2.2.2 SIP 4.0 Works in Live Mode ................................................................................................ 8
3.1.1 Interaction with Other Modules ......................................................................................... 11 3.2 RSS Engine Module .............................................................................................................. 12
3.2.1 Interaction with Other Modules ......................................................................................... 13 3.3 Draft Mode Module ................................................................................................................ 14 3.4 User Profile Module ............................................................................................................... 16 3.5 DCF (Data Channel Framework) Module ............................................................................. 18 3.6 Search Module ...................................................................................................................... 20 3.7 Language Engine Module ..................................................................................................... 21
3.7.1 Interaction with Other Modules ......................................................................................... 23 3.8 Site Tools Module ................................................................................................................. 24
This document describes the key architectural changes that have been implemented in SIP 4.0.
In earlier versions of SIP it was very difficult to leverage functionality from the core CMS platform and to integrate with other modules in the Sitecore portfolio — DMS, Web Forms for Marketers, Email Campaign Manager, Multi-site Foundry, and so on. We have therefore decided to implement a new architecture.
SIP in now developed in a modular fashion. This means that the key pieces of functionality that together make up the Intranet product, can be deployed together or as individual modules and can be easily integrated with Sitecore CMS and other Sitecore products.
This document describes some of the core technical changes that have been implemented to facilitate this modular approach.
This document contains the following chapters:
Chapter 1 — Introduction This introduction to the manual.
Chapter 2 — Global Changes This chapter describes the important global changes that have been made in SIP 4.0.
Chapter 3 — The SIP Modules This chapter describes each module in the new SIP 4.0 architecture and lists the important changes that have been implemented in each module.
2.1 SIP is no Longer an Out of the Box Intranet Solution
Based on the enormous amount of feedback that we received from partners and developers, we have removed all the pre-configured visual elements and features that were restricting development with SIP.
As a result of this fundamental change, SIP is no longer an out of the box Intranet portal solution. SIP is now a flexible platform on which you can build Intranet solutions. We are leveraging best-practice CMS methodology and leaving all the front-end customization and implementation to the developers.
We have therefore removed the elements that constrained developers, such as, the web part features and the restrictive CSS page layout templates from the product.
However, to demonstrate how our current range of features works on an Intranet site, we have created a set of sample pages for SIP 4.0. These pages are available as a Sitecore package that you can download from the SDN.
Important We recommend that you do not use these sample pages in production environments. However, you can extend them to suit your requirements.
2.1.1 Features in SIP 4.0
The following core Intranet-specific functionality has been retained and improved:
Easy Editing — you can use the Page Editor to quickly create, edit, and save intranet content.
Easy Uploading — you can easily upload attachments to a page. This feature uses Silverlight.
Private Drafts — when you edit and save a content item it is saved as a private draft. Private drafts can only be viewed by you and other specific users that you have shared them with. The private drafts functionality is based on the CMS workflow system and can be extended accordingly.
Language Fallback Engine — you can specify a default corporate language for your Intranet solution as well as multiple local languages for different territories. This feature acts as a fallback mechanism — if the content is not available in the local language, it is displayed in the corporate language.
Intranet User Profiles — these are pre-defined data templates that store standard information about user profiles.
Data Channel Framework — you can segment information on the Intranet according to specific target groups. A target group can be any group of users, for example, corporate departments.
Search — the Intranet search feature uses the new Lucene.DLL that is included in CMS 6.6 to
search within documents and related pages on your Intranet.
2.1.2 All SIP Features are Separated into Modules
All the SIP functionality is now contained in the following modules:
The following key changes have been made in SIP 4.0 to accommodate the new modular architecture.
Every Namespace has been changed to reflect the new modular structure
The various classes have been allocated to the appropriate modules and have therefore been given new namespaces to reflect the module that they belong to.
Each module has its own settings file
Each module has its own include file that you can use to add the necessary changes to the web.config
file.
The include files contain the settings that relate to the current module.
For example, the following modules contain a setting that specifies the target sites:
Module Setting
Language Engine Intranet.LanguageEngine.Sites
Draft Mode Intranet.DraftMode.Sites
When you use these settings, the features in the current module are only applied to the target sites that you specify.
There is no unified Intranet Settings file
Each individual module has its own settings item. The settings items are stored at:
If you do not need certain modules and do not deploy them, the rest of the modules will still work together.
If you remove a number of modules from the solution, the remaining modules will still work together.
2.2.2 SIP 4.0 Works in Live Mode
SIP 4.0 has only been tested to work in live mode. In subsequent releases Sitecore will support implementing SIP 4.0 in a distributed environment — with multiple Core, Master, and Web databases spread across distributed Content Delivery and Content Management servers.
The following changes have been made to the RSS Engine module:
Config Changes
The SIP_RSS.config file has been renamed as
App_config\Include\Intranet\Modules\Intranet.RSS.config. All the module
settings have been moved to it.
The Intranet.FeedPrefix setting has been renamed as Intranet.RSS.FeedPrefix.
The PortalRSSFeeds.Enabled setting has been renamed as Intranet.RSS.Enabled.
The Intranet.RSS.Site setting has been added.
The Intranet.RSS.RemoveTagsIfFieldNotFound setting has been added.
This setting specifies the source database for the RSS Engine module.
The detectFeedRequest pipeline has been removed.
The SIP_Feeds pipelines group has been renamed as RSSEngine.
The <RSS> node has been added.
This setting lets you use the features of the RSS module within other modules. You must use the
Sitecore.Configuration.Factory class to do this.
The <rssSettings>, <rssDataService>, and <processorHelpersFactory> nodes have
been added to implement dependency injection within the RSS module.
param nodes have been added under the processor nodes to pass the necessary parameters
using dependency injection.
For more information about dependency injection see the blog http://www.sitecore.net/Community/Technical-Blogs/John-West-Sitecore-Blog/Posts/2011/02/Dependency-Injection-with-the-Sitecore-ASPNET-CMS.aspx.
Code Changes
All the classes have been moved to the Sitecore.Intranet.RSS namespace.
The Settings class has been added.
This class contains settings from both the configuration file and the configuration item.
The FeedSectionKeys class has been deleted.
The logic of the ExpandRSSBodyMarkers class has been changed. If there is no field for the
marker, it is removed from the body.
The IntranetPortalFeed class has been renamed as RSSEngineFeed.
The CurrentIntranetSite property has been moved from the IntranetUtil class to the
Settings class and renamed as Site.
The FeedHelper class has been renamed as RSS and the IsFeedRequest property has been
removed from it.
All the methods of the LocalizedXslHelper class have been removed except:
The <extension namespace=http://www.sitecore.net/dm …> node has been added
to the xslExtensions.
This namespace extension defines the method that is used to check whether or not an item is a private draft and to get the URL link that is used to share the draft with other users.
A private draft is not accessible to other users who are not the owner of the item unless you have specifically shared it with them.
The Intranet.DraftWorkflows setting has been renamed as
Intranet.DraftMode.DraftWorkflows.
The Intranet.DraftMode.Sites setting has been added.
This setting specifies which websites the draft mode feature should be applied to.
The <DraftMode> and <DraftModeDiscardChanges> nodes have been added.
These settings let you use the features of the Draft Mode module within other modules. You must
use the Sitecore.Configuration.Factory class to do this.
The <draftModeSettings> and <draftModeShareLinkProvider> nodes have been
added to implement dependency injection within the Draft Mode module.
The param nodes have been added under some nodes to use dependency injection to pass the
necessary parameters.
For more information about dependency injection see the blog http://www.sitecore.net/Community/Technical-Blogs/John-West-Sitecore-Blog/Posts/2011/02/Dependency-Injection-with-the-Sitecore-ASPNET-CMS.aspx.
Code Changes
All the Draft Mode module classes have been moved to the Sitecore.Intranet.DraftMode
namespace.
The DraftModeXslHelper class has been added.
This class provides the xslt extension that works with the draft mode logic.
The following changes have been made to the DraftModeUtil class:
o The class implements the IDraftMode interface that specifies the core methods of the Draft
Mode module.
o The WorkflowInfo GetDraftInfo(Item item) method has been removed.
The following changes have been made to the User Profile module:
Config Changes
The App_config\Include\Intranet\Modules\Intranet.Profiles.config file has
been added.
The getSiteLanguageList node has been added to the pipelines.
This node adds the GetUserPreferredLanguage processor to the top of the
getSiteLanguageList pipeline that is specified in the Language Engine module.
The Intranet.UserProfileTreeDepth setting has been renamed as
Intranet.Profiles.UserProfilesTreeDepth.
The Intranet.Profiles.UserProfilesFolder setting has been added.
This setting specifies the folder in the content tree under that user profiles are stored in.
The UserProfile setting has been moved from the
App_Config\IntranetSettings.config file to the Intranet.Profiles.config file and
the setting has been renamed as Intranet.Profiles.UserProfileTemplate.
The <UserProfileProvider> node has been changed.
This setting lets you use the features of the User Profile module within other modules. You must
use the Sitecore.Configuration.Factory class to do this.
o The providers sub-node has been removed.
o The excludeDomains attribute of the UserProfileProvider node has been moved to
the Intranet.Profiles.ExcludeDomains setting.
o The createUserProfiles attribute of the UserProfileProvider node has been
removed.
o The param node has been added under the UserProfileProvider node to pass the
necessary parameters using dependency injection.
The <profilesSettings> node has been added to implement dependency injection within the
User Profile module.
For more information about dependency injection see the blog http://www.sitecore.net/Community/Technical-Blogs/John-West-Sitecore-Blog/Posts/2011/02/Dependency-Injection-with-the-Sitecore-ASPNET-CMS.aspx.
Code Changes
All the User Profile module classes have been moved to the Sitecore.Intranet.Profiles
namespace.
The GetUserPreferredLanguage class has been added.
This class is the processor of the getSiteLanguageList pipeline. It adds the user preferred
language to the list of languages.
The following changes have been made to UserProfileProvider class:
This class provides methods that return the current site, content languages, and the specified item in these languages.
Note
To implement a custom LanguageResolver class, you must implement an
ILanguageResolver interface.
o LanguageSwitcher
This class lets you to switch the context language to the specified language. The context item also switches to a version in the language that you specify.
If there is no version available in the language that you specify, the context item switches to an empty version in the specified language.
o ContentAreaSwitcher
This class lets you switch the context language to the content language.
The context language is the standard CMS context language —
Sitecore.Context.Language.
The content language is specified by the getContentLanguageList pipeline.
o LanguageUtil
This class contains some auxiliary methods. For example, a method that checks the accessibility of the specified language for the current user.
This class is not available for external use.
o ContextManager
This class contains methods that let you switch the context language to a language that you specify.
This class is not available for external use.
The GetLanguageListAgrs class has been added.
This class represents the arguments of the getSiteLanguageList and
getContentLanguageList pipelines. It specifies the type of an object that is used to pass the
arguments though the pipelines.
To add a language to the appropriate list, you must add the language to the LanguageList
property of the GetLanguageListAgrs class.
You can also use the Sitecore.Pipelines.PipelineArgs class to pass the arguments
through the pipelines.
If you use the Sitecore.Pipelines.PipelineArgs class, you must add a new language to
the LanguageList element of the CustomData dictionary property.
At the beginning of each request, the SetContextLanguage processor sets the context
language to the site language.
The Sitecore.Intranet.Utils.LocalizedXslHelper class has been renamed as
LanguageEngineXslHelper.
Now the class only contains methods that relate to the Language Engine module. All the other methods have been removed.