Whats the difference between and in Sitecore configuration?What is a pipeline?Sitecore administration page to view all pipeline processorsAntiForgery Tokens and Sitecore DevelopmentDynamics CRM Connect - Map OptionSet and DateTime CRM fields to SitecoreHow to make a history record of the website in Sitecore?How can I get a new Sitecore Publish Dialog Option into the Publish Processors?Can we use Sitecore pipeline engine when implement a “Custom Form” on Sitecore platform?How to get Sitecore Pipelines to run along with /API callsWhat are the benefit of pipelines?How to abort the request execution from GetPageItemProcessor (Sitecore 8.2)How to rework LoggingIn pipelines in Sitecore 9.1?
London underground zone 1-2 train ticket
What is it exactly about flying a Flyboard across the English channel that made Zapata's thighs burn?
If I build a custom theme, will it update?
split large formula in align
Ancients don't give a full level?
Is a switch from R to Python worth it?
Changing Row Keys into Normal Rows
What is the German idiom or expression for when someone is being hypocritical against their own teachings?
Why does putting a dot after the URL remove login information?
Prime too close to f in Garamond Math
The meaning of "scale" in "because diversions scale so easily wealth becomes concentrated"
Probably terminated or laid off soon; confront or not?
How to check a file was encrypted (really & correctly)
Can you take actions after being healed at 0hp?
Can a Hogwarts student refuse the Sorting Hat's decision?
In MTG, was there ever a five-color deck that worked well?
Identify Batman without getting caught
How to realistically deal with a shield user?
What are the function of EM and EN spaces?
Why am I not getting stuck in the loop
How can I perform a deterministic physics simulation?
Is space radiation a risk for space film photography, and how is this prevented?
Launch capabilities of GSLV Mark III
Does a 4 bladed prop have almost twice the thrust of a 2 bladed prop?
Whats the difference between and in Sitecore configuration?
What is a pipeline?Sitecore administration page to view all pipeline processorsAntiForgery Tokens and Sitecore DevelopmentDynamics CRM Connect - Map OptionSet and DateTime CRM fields to SitecoreHow to make a history record of the website in Sitecore?How can I get a new Sitecore Publish Dialog Option into the Publish Processors?Can we use Sitecore pipeline engine when implement a “Custom Form” on Sitecore platform?How to get Sitecore Pipelines to run along with /API callsWhat are the benefit of pipelines?How to abort the request execution from GetPageItemProcessor (Sitecore 8.2)How to rework LoggingIn pipelines in Sitecore 9.1?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
Or is it like the difference between hooks and processors? (where a hook is executed by a specific processor)
Or are processors used for non-visual/http process and are instead used for things like commands or background actions?
Edit:
Both Pipelines and Processors are composed of processors. (Confusing naming scheme)
If you look in your configuration files you'll see a <processors>
and a <pipelines>
node with <process>
child nodes.
Is there any real difference between them?
For example there is a <uiUpload>
process (under <processors>
) and a <publish>
pipeline under the <pipelines>
node. Both of which have processor children nodes.
pipelines processor
add a comment |
Or is it like the difference between hooks and processors? (where a hook is executed by a specific processor)
Or are processors used for non-visual/http process and are instead used for things like commands or background actions?
Edit:
Both Pipelines and Processors are composed of processors. (Confusing naming scheme)
If you look in your configuration files you'll see a <processors>
and a <pipelines>
node with <process>
child nodes.
Is there any real difference between them?
For example there is a <uiUpload>
process (under <processors>
) and a <publish>
pipeline under the <pipelines>
node. Both of which have processor children nodes.
pipelines processor
1
Possible duplicate of What is a pipeline?
– Pete Navarra
7 hours ago
@PeteNavarra actually this question is about a<processors>
Sitecore configuration. I misunderstood the question at first and thought it's about what a pipeline was.
– Marek Musielak
7 hours ago
Yeah, I guess the answers though are really similar though. It's close.
– Pete Navarra
4 hours ago
I'm voting to close this question as off-topic because one it shows lack of understanding, two its answered here sitecore.stackexchange.com/questions/1874/what-is-a-pipeline
– ASura
4 hours ago
add a comment |
Or is it like the difference between hooks and processors? (where a hook is executed by a specific processor)
Or are processors used for non-visual/http process and are instead used for things like commands or background actions?
Edit:
Both Pipelines and Processors are composed of processors. (Confusing naming scheme)
If you look in your configuration files you'll see a <processors>
and a <pipelines>
node with <process>
child nodes.
Is there any real difference between them?
For example there is a <uiUpload>
process (under <processors>
) and a <publish>
pipeline under the <pipelines>
node. Both of which have processor children nodes.
pipelines processor
Or is it like the difference between hooks and processors? (where a hook is executed by a specific processor)
Or are processors used for non-visual/http process and are instead used for things like commands or background actions?
Edit:
Both Pipelines and Processors are composed of processors. (Confusing naming scheme)
If you look in your configuration files you'll see a <processors>
and a <pipelines>
node with <process>
child nodes.
Is there any real difference between them?
For example there is a <uiUpload>
process (under <processors>
) and a <publish>
pipeline under the <pipelines>
node. Both of which have processor children nodes.
pipelines processor
pipelines processor
edited 6 hours ago
techphoria414
3,02510 silver badges42 bronze badges
3,02510 silver badges42 bronze badges
asked 8 hours ago
Adam HessAdam Hess
1578 bronze badges
1578 bronze badges
1
Possible duplicate of What is a pipeline?
– Pete Navarra
7 hours ago
@PeteNavarra actually this question is about a<processors>
Sitecore configuration. I misunderstood the question at first and thought it's about what a pipeline was.
– Marek Musielak
7 hours ago
Yeah, I guess the answers though are really similar though. It's close.
– Pete Navarra
4 hours ago
I'm voting to close this question as off-topic because one it shows lack of understanding, two its answered here sitecore.stackexchange.com/questions/1874/what-is-a-pipeline
– ASura
4 hours ago
add a comment |
1
Possible duplicate of What is a pipeline?
– Pete Navarra
7 hours ago
@PeteNavarra actually this question is about a<processors>
Sitecore configuration. I misunderstood the question at first and thought it's about what a pipeline was.
– Marek Musielak
7 hours ago
Yeah, I guess the answers though are really similar though. It's close.
– Pete Navarra
4 hours ago
I'm voting to close this question as off-topic because one it shows lack of understanding, two its answered here sitecore.stackexchange.com/questions/1874/what-is-a-pipeline
– ASura
4 hours ago
1
1
Possible duplicate of What is a pipeline?
– Pete Navarra
7 hours ago
Possible duplicate of What is a pipeline?
– Pete Navarra
7 hours ago
@PeteNavarra actually this question is about a
<processors>
Sitecore configuration. I misunderstood the question at first and thought it's about what a pipeline was.– Marek Musielak
7 hours ago
@PeteNavarra actually this question is about a
<processors>
Sitecore configuration. I misunderstood the question at first and thought it's about what a pipeline was.– Marek Musielak
7 hours ago
Yeah, I guess the answers though are really similar though. It's close.
– Pete Navarra
4 hours ago
Yeah, I guess the answers though are really similar though. It's close.
– Pete Navarra
4 hours ago
I'm voting to close this question as off-topic because one it shows lack of understanding, two its answered here sitecore.stackexchange.com/questions/1874/what-is-a-pipeline
– ASura
4 hours ago
I'm voting to close this question as off-topic because one it shows lack of understanding, two its answered here sitecore.stackexchange.com/questions/1874/what-is-a-pipeline
– ASura
4 hours ago
add a comment |
4 Answers
4
active
oldest
votes
From Sitecore documentation:
Pipelines define a sequence of processors that implement a function, such as defining the Sitecore context for an HTTP request or generating a list of messages in the Content Editor. Pipelines assist with encapsulation, flexible configuration, separation of concerns, testability and other objectives.
Each processor in a pipeline contains a method named Process() that accepts a single argument and returns void. A processor can abort the pipeline, preventing Sitecore from invoking subsequent processors.
The argument that is passed to the Process() method must be of a type that is specific to the pipeline or be the default argument —Sitecore.Pipelines.PipelineArgs. To create a pipeline processor, create a class that implements a method named Process() with the same signature as the other processors in the pipeline. This processor can inherit from an existing processor, and you can add, remove, replace, and rearrange processors in the pipelines to suit your requirements.
Read more in Sitecore Pipelines document. It's for Sitecore 6.5 but the concept is still the same.
EDIT
Both <processors>
and <pipelines>
nodes in Sitecore configuration are used for defining pipelines.
There are few differences I know about:
Processors
processors should have parameterless constructors- When defining a processor inside
<processors>
node, you can specify method name different fromProcess
, e.g.:
<processors>
<uiAddFromTemplate>
<processor mode="on" type="Sitecore.Shell.Framework.Pipelines.AddFromTemplate,Sitecore.Kernel"
method="GetTemplate" />
<processor mode="on" type="Sitecore.Shell.Framework.Pipelines.AddFromTemplate,Sitecore.Kernel"
method="Execute" />
</uiAddFromTemplate>
</processors>
- When defining
<pipelines>
pipeline, you can group pipelines (see second<pipelines>
tag inside the group), e.g.:
<pipelines>
<group name="itemProvider" groupName="itemProvider">
<pipelines>
<addFromTemplate help="Processors should derive from Sitecore.Pipelines.ItemProvider.AddFromTemplate.AddFromTemplateProcessor.">
</addFromTemplate>
</pipelines>
</group>
</pipelines>
In background Sitecore uses different methods for creation of the pipelines defined in <processors>
and in <pipelines>
config nodes.
It looks like <processors>
are mostly used for UI
related stuff.
I would recommend to use always <pipelines>
if you want to build any custom funcionality for consistency and transparency.
Whats the difference between<processors>
and<pipelines>
is what I'm getting at. They are BOTH composed of processors.
– Adam Hess
8 hours ago
@AdamHess sorry, I misunderstood your question. Answer updated.
– Marek Musielak
7 hours ago
thanks for the response. The terminology can get a bit confusing as the semantic saturation of the word "processor" can muddy the two up.
– Adam Hess
7 hours ago
I do agree with you
– Marek Musielak
7 hours ago
add a comment |
A pipeline is a series of actions that execute in sequence to perform a task in Sitecore. Pipelines are fundamental to Sitecore's basic architecture. Most processes in Sitecore are defined as pipelines. Pipelines can be modified by developers to change, add, or remove functionality from Sitecore.
Pipelines are made up of one or more steps - called "processors." A pipeline is defind in configuration. For example, here is the definition for the getRenderingPreview
from Sitecore.config:
<getRenderingPreview>
<processor type="Sitecore.Pipelines.GetRenderingPreview.GetXslRenderingPreview,Sitecore.Kernel" />
<processor type="Sitecore.Pipelines.GetRenderingPreview.TryRenderControl,Sitecore.Kernel" />
<processor type="Sitecore.Pipelines.GetRenderingPreview.GetRenderingPreviewField,Sitecore.Kernel" />
<processor type="Sitecore.Pipelines.GetRenderingPreview.GetDefaultRenderingPreview,Sitecore.Kernel" />
</getRenderingPreview>
When the getRenderingPreview
pipeline is executed, the processors defined above run in order from first to last. Most pipelines pass data between each processor in the form of an arguments object. For example, getRenderingPreview
use an arguments object called GetRenderingPreviewArgs
. This stores data that each processor of the pipeline may need. This usually also includes data about the current Sitecore context.
A processor is implemented by a C# class. Many built-in pipelines can be found under the Sitecore.Pipelines
namespace in Sitecore.Kernel.dll
.
Conceptually, a Sitecore pipeline is based around the pipes and filters pattern which is also termed the pipeline pattern.
pipes and filters pattern
The basic elements of the pipe and filters pattern are:
Pump : Pushes the data to be processed into the pipeline
Pipe : The channel containing one or more sequential filters
Filter : Performs the data processing (in Sitecore terms these are called Processors)
Sink : Consumes the data processed by the pipeline
Edit
If you see Sitecore.config
Processors classes must have parameterless constructor. Processors is also a pipeline like dispatch
as mentioned below.
As recommended practice for custom implementation use specific pipeline ex- initialize
,httpRequestBegin
,renderField
based on yours requirement.
<!-- PROCESSORS
Classes must have parameterless constructor.
Supported attributes:
mode=[on|off]
type=name of class (case-sensitive).
namespace=namespace containing class. If no namespace is included, it is assumed that the namespace is the same as the assembly name.
assembly=name of dll containing the class (case-sensitive)
-->
<processors>
<dispatch>
<!-- This pipeline has been deprecated - try using the CommandManager object instead -->
</dispatch>
@Adam, I updated answer based on yours edit.
– Abhishek Malaviya
7 hours ago
add a comment |
In few words :
Processors provide the logic that is used when a pipeline is invoked.
A pipeline is basically a method whose flow is defined using XML.
A pipeline consists of a sequence of processors. A processor is a .NET class that implements a method. When a pipeline is invoked, the processors are run in order.
Pipelines are used to control most of Sitecore’s functionality. Processes ranging from authentication to request handling to publishing to indexing are all controlled through pipelines.
More informations you can find here:
https://sitecorespark.com/article/introduction-to-pipelines
http://www.coreworks.co/sitecore-pipelines-overview
add a comment |
As has been pointed out in other answers, <processors>
are used primarily for UI-related activities. They must be executed via Sitecore.Pipelines.PipelineFactory
and Sitecore.Pipelines.Pipeline
instead of Sitecore.Pipelines.CorePipeline
.
Functionally, the main difference appears to be that these UI pipelines have the ability to suspend while waiting for user input, and resume on Sheer UI postback. The Pipeline
class has an ID
property which is used for storing it in session. Thus the Pipeline
itself and its args need to be [Serializable]
. You can see some of this suspend/resume logic in Sitecore.Web.UI.Sheer.ClientPage
.
Practically, unless you are doing Sheer UI customization, you should stick with use of <pipelines>
/ CorePipeline
.
theuiUpload
processor does not work with sheer ui components at all. I've been fighting to get it to render anything and the best solution thus far is to get javascript to trigger an "alert()"
– Adam Hess
6 hours ago
Yes it looks like that one is used within a SPEAK dialog? Possibly for similar reasons, possibly because the dialog used to be Sheer? ¯_(ツ)_/¯ ... if you have a specific issue with that pipeline might be worth posting a separate Q.
– techphoria414
5 hours ago
Its come up in other places, the uiUpload process doesn't work with speak/sheer.
– Adam Hess
5 hours ago
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "664"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsitecore.stackexchange.com%2fquestions%2f20330%2fwhats-the-difference-between-processors-and-pipelines-in-sitecore-configurat%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
4 Answers
4
active
oldest
votes
4 Answers
4
active
oldest
votes
active
oldest
votes
active
oldest
votes
From Sitecore documentation:
Pipelines define a sequence of processors that implement a function, such as defining the Sitecore context for an HTTP request or generating a list of messages in the Content Editor. Pipelines assist with encapsulation, flexible configuration, separation of concerns, testability and other objectives.
Each processor in a pipeline contains a method named Process() that accepts a single argument and returns void. A processor can abort the pipeline, preventing Sitecore from invoking subsequent processors.
The argument that is passed to the Process() method must be of a type that is specific to the pipeline or be the default argument —Sitecore.Pipelines.PipelineArgs. To create a pipeline processor, create a class that implements a method named Process() with the same signature as the other processors in the pipeline. This processor can inherit from an existing processor, and you can add, remove, replace, and rearrange processors in the pipelines to suit your requirements.
Read more in Sitecore Pipelines document. It's for Sitecore 6.5 but the concept is still the same.
EDIT
Both <processors>
and <pipelines>
nodes in Sitecore configuration are used for defining pipelines.
There are few differences I know about:
Processors
processors should have parameterless constructors- When defining a processor inside
<processors>
node, you can specify method name different fromProcess
, e.g.:
<processors>
<uiAddFromTemplate>
<processor mode="on" type="Sitecore.Shell.Framework.Pipelines.AddFromTemplate,Sitecore.Kernel"
method="GetTemplate" />
<processor mode="on" type="Sitecore.Shell.Framework.Pipelines.AddFromTemplate,Sitecore.Kernel"
method="Execute" />
</uiAddFromTemplate>
</processors>
- When defining
<pipelines>
pipeline, you can group pipelines (see second<pipelines>
tag inside the group), e.g.:
<pipelines>
<group name="itemProvider" groupName="itemProvider">
<pipelines>
<addFromTemplate help="Processors should derive from Sitecore.Pipelines.ItemProvider.AddFromTemplate.AddFromTemplateProcessor.">
</addFromTemplate>
</pipelines>
</group>
</pipelines>
In background Sitecore uses different methods for creation of the pipelines defined in <processors>
and in <pipelines>
config nodes.
It looks like <processors>
are mostly used for UI
related stuff.
I would recommend to use always <pipelines>
if you want to build any custom funcionality for consistency and transparency.
Whats the difference between<processors>
and<pipelines>
is what I'm getting at. They are BOTH composed of processors.
– Adam Hess
8 hours ago
@AdamHess sorry, I misunderstood your question. Answer updated.
– Marek Musielak
7 hours ago
thanks for the response. The terminology can get a bit confusing as the semantic saturation of the word "processor" can muddy the two up.
– Adam Hess
7 hours ago
I do agree with you
– Marek Musielak
7 hours ago
add a comment |
From Sitecore documentation:
Pipelines define a sequence of processors that implement a function, such as defining the Sitecore context for an HTTP request or generating a list of messages in the Content Editor. Pipelines assist with encapsulation, flexible configuration, separation of concerns, testability and other objectives.
Each processor in a pipeline contains a method named Process() that accepts a single argument and returns void. A processor can abort the pipeline, preventing Sitecore from invoking subsequent processors.
The argument that is passed to the Process() method must be of a type that is specific to the pipeline or be the default argument —Sitecore.Pipelines.PipelineArgs. To create a pipeline processor, create a class that implements a method named Process() with the same signature as the other processors in the pipeline. This processor can inherit from an existing processor, and you can add, remove, replace, and rearrange processors in the pipelines to suit your requirements.
Read more in Sitecore Pipelines document. It's for Sitecore 6.5 but the concept is still the same.
EDIT
Both <processors>
and <pipelines>
nodes in Sitecore configuration are used for defining pipelines.
There are few differences I know about:
Processors
processors should have parameterless constructors- When defining a processor inside
<processors>
node, you can specify method name different fromProcess
, e.g.:
<processors>
<uiAddFromTemplate>
<processor mode="on" type="Sitecore.Shell.Framework.Pipelines.AddFromTemplate,Sitecore.Kernel"
method="GetTemplate" />
<processor mode="on" type="Sitecore.Shell.Framework.Pipelines.AddFromTemplate,Sitecore.Kernel"
method="Execute" />
</uiAddFromTemplate>
</processors>
- When defining
<pipelines>
pipeline, you can group pipelines (see second<pipelines>
tag inside the group), e.g.:
<pipelines>
<group name="itemProvider" groupName="itemProvider">
<pipelines>
<addFromTemplate help="Processors should derive from Sitecore.Pipelines.ItemProvider.AddFromTemplate.AddFromTemplateProcessor.">
</addFromTemplate>
</pipelines>
</group>
</pipelines>
In background Sitecore uses different methods for creation of the pipelines defined in <processors>
and in <pipelines>
config nodes.
It looks like <processors>
are mostly used for UI
related stuff.
I would recommend to use always <pipelines>
if you want to build any custom funcionality for consistency and transparency.
Whats the difference between<processors>
and<pipelines>
is what I'm getting at. They are BOTH composed of processors.
– Adam Hess
8 hours ago
@AdamHess sorry, I misunderstood your question. Answer updated.
– Marek Musielak
7 hours ago
thanks for the response. The terminology can get a bit confusing as the semantic saturation of the word "processor" can muddy the two up.
– Adam Hess
7 hours ago
I do agree with you
– Marek Musielak
7 hours ago
add a comment |
From Sitecore documentation:
Pipelines define a sequence of processors that implement a function, such as defining the Sitecore context for an HTTP request or generating a list of messages in the Content Editor. Pipelines assist with encapsulation, flexible configuration, separation of concerns, testability and other objectives.
Each processor in a pipeline contains a method named Process() that accepts a single argument and returns void. A processor can abort the pipeline, preventing Sitecore from invoking subsequent processors.
The argument that is passed to the Process() method must be of a type that is specific to the pipeline or be the default argument —Sitecore.Pipelines.PipelineArgs. To create a pipeline processor, create a class that implements a method named Process() with the same signature as the other processors in the pipeline. This processor can inherit from an existing processor, and you can add, remove, replace, and rearrange processors in the pipelines to suit your requirements.
Read more in Sitecore Pipelines document. It's for Sitecore 6.5 but the concept is still the same.
EDIT
Both <processors>
and <pipelines>
nodes in Sitecore configuration are used for defining pipelines.
There are few differences I know about:
Processors
processors should have parameterless constructors- When defining a processor inside
<processors>
node, you can specify method name different fromProcess
, e.g.:
<processors>
<uiAddFromTemplate>
<processor mode="on" type="Sitecore.Shell.Framework.Pipelines.AddFromTemplate,Sitecore.Kernel"
method="GetTemplate" />
<processor mode="on" type="Sitecore.Shell.Framework.Pipelines.AddFromTemplate,Sitecore.Kernel"
method="Execute" />
</uiAddFromTemplate>
</processors>
- When defining
<pipelines>
pipeline, you can group pipelines (see second<pipelines>
tag inside the group), e.g.:
<pipelines>
<group name="itemProvider" groupName="itemProvider">
<pipelines>
<addFromTemplate help="Processors should derive from Sitecore.Pipelines.ItemProvider.AddFromTemplate.AddFromTemplateProcessor.">
</addFromTemplate>
</pipelines>
</group>
</pipelines>
In background Sitecore uses different methods for creation of the pipelines defined in <processors>
and in <pipelines>
config nodes.
It looks like <processors>
are mostly used for UI
related stuff.
I would recommend to use always <pipelines>
if you want to build any custom funcionality for consistency and transparency.
From Sitecore documentation:
Pipelines define a sequence of processors that implement a function, such as defining the Sitecore context for an HTTP request or generating a list of messages in the Content Editor. Pipelines assist with encapsulation, flexible configuration, separation of concerns, testability and other objectives.
Each processor in a pipeline contains a method named Process() that accepts a single argument and returns void. A processor can abort the pipeline, preventing Sitecore from invoking subsequent processors.
The argument that is passed to the Process() method must be of a type that is specific to the pipeline or be the default argument —Sitecore.Pipelines.PipelineArgs. To create a pipeline processor, create a class that implements a method named Process() with the same signature as the other processors in the pipeline. This processor can inherit from an existing processor, and you can add, remove, replace, and rearrange processors in the pipelines to suit your requirements.
Read more in Sitecore Pipelines document. It's for Sitecore 6.5 but the concept is still the same.
EDIT
Both <processors>
and <pipelines>
nodes in Sitecore configuration are used for defining pipelines.
There are few differences I know about:
Processors
processors should have parameterless constructors- When defining a processor inside
<processors>
node, you can specify method name different fromProcess
, e.g.:
<processors>
<uiAddFromTemplate>
<processor mode="on" type="Sitecore.Shell.Framework.Pipelines.AddFromTemplate,Sitecore.Kernel"
method="GetTemplate" />
<processor mode="on" type="Sitecore.Shell.Framework.Pipelines.AddFromTemplate,Sitecore.Kernel"
method="Execute" />
</uiAddFromTemplate>
</processors>
- When defining
<pipelines>
pipeline, you can group pipelines (see second<pipelines>
tag inside the group), e.g.:
<pipelines>
<group name="itemProvider" groupName="itemProvider">
<pipelines>
<addFromTemplate help="Processors should derive from Sitecore.Pipelines.ItemProvider.AddFromTemplate.AddFromTemplateProcessor.">
</addFromTemplate>
</pipelines>
</group>
</pipelines>
In background Sitecore uses different methods for creation of the pipelines defined in <processors>
and in <pipelines>
config nodes.
It looks like <processors>
are mostly used for UI
related stuff.
I would recommend to use always <pipelines>
if you want to build any custom funcionality for consistency and transparency.
edited 7 hours ago
answered 8 hours ago
Marek MusielakMarek Musielak
13.9k1 gold badge15 silver badges39 bronze badges
13.9k1 gold badge15 silver badges39 bronze badges
Whats the difference between<processors>
and<pipelines>
is what I'm getting at. They are BOTH composed of processors.
– Adam Hess
8 hours ago
@AdamHess sorry, I misunderstood your question. Answer updated.
– Marek Musielak
7 hours ago
thanks for the response. The terminology can get a bit confusing as the semantic saturation of the word "processor" can muddy the two up.
– Adam Hess
7 hours ago
I do agree with you
– Marek Musielak
7 hours ago
add a comment |
Whats the difference between<processors>
and<pipelines>
is what I'm getting at. They are BOTH composed of processors.
– Adam Hess
8 hours ago
@AdamHess sorry, I misunderstood your question. Answer updated.
– Marek Musielak
7 hours ago
thanks for the response. The terminology can get a bit confusing as the semantic saturation of the word "processor" can muddy the two up.
– Adam Hess
7 hours ago
I do agree with you
– Marek Musielak
7 hours ago
Whats the difference between
<processors>
and <pipelines>
is what I'm getting at. They are BOTH composed of processors.– Adam Hess
8 hours ago
Whats the difference between
<processors>
and <pipelines>
is what I'm getting at. They are BOTH composed of processors.– Adam Hess
8 hours ago
@AdamHess sorry, I misunderstood your question. Answer updated.
– Marek Musielak
7 hours ago
@AdamHess sorry, I misunderstood your question. Answer updated.
– Marek Musielak
7 hours ago
thanks for the response. The terminology can get a bit confusing as the semantic saturation of the word "processor" can muddy the two up.
– Adam Hess
7 hours ago
thanks for the response. The terminology can get a bit confusing as the semantic saturation of the word "processor" can muddy the two up.
– Adam Hess
7 hours ago
I do agree with you
– Marek Musielak
7 hours ago
I do agree with you
– Marek Musielak
7 hours ago
add a comment |
A pipeline is a series of actions that execute in sequence to perform a task in Sitecore. Pipelines are fundamental to Sitecore's basic architecture. Most processes in Sitecore are defined as pipelines. Pipelines can be modified by developers to change, add, or remove functionality from Sitecore.
Pipelines are made up of one or more steps - called "processors." A pipeline is defind in configuration. For example, here is the definition for the getRenderingPreview
from Sitecore.config:
<getRenderingPreview>
<processor type="Sitecore.Pipelines.GetRenderingPreview.GetXslRenderingPreview,Sitecore.Kernel" />
<processor type="Sitecore.Pipelines.GetRenderingPreview.TryRenderControl,Sitecore.Kernel" />
<processor type="Sitecore.Pipelines.GetRenderingPreview.GetRenderingPreviewField,Sitecore.Kernel" />
<processor type="Sitecore.Pipelines.GetRenderingPreview.GetDefaultRenderingPreview,Sitecore.Kernel" />
</getRenderingPreview>
When the getRenderingPreview
pipeline is executed, the processors defined above run in order from first to last. Most pipelines pass data between each processor in the form of an arguments object. For example, getRenderingPreview
use an arguments object called GetRenderingPreviewArgs
. This stores data that each processor of the pipeline may need. This usually also includes data about the current Sitecore context.
A processor is implemented by a C# class. Many built-in pipelines can be found under the Sitecore.Pipelines
namespace in Sitecore.Kernel.dll
.
Conceptually, a Sitecore pipeline is based around the pipes and filters pattern which is also termed the pipeline pattern.
pipes and filters pattern
The basic elements of the pipe and filters pattern are:
Pump : Pushes the data to be processed into the pipeline
Pipe : The channel containing one or more sequential filters
Filter : Performs the data processing (in Sitecore terms these are called Processors)
Sink : Consumes the data processed by the pipeline
Edit
If you see Sitecore.config
Processors classes must have parameterless constructor. Processors is also a pipeline like dispatch
as mentioned below.
As recommended practice for custom implementation use specific pipeline ex- initialize
,httpRequestBegin
,renderField
based on yours requirement.
<!-- PROCESSORS
Classes must have parameterless constructor.
Supported attributes:
mode=[on|off]
type=name of class (case-sensitive).
namespace=namespace containing class. If no namespace is included, it is assumed that the namespace is the same as the assembly name.
assembly=name of dll containing the class (case-sensitive)
-->
<processors>
<dispatch>
<!-- This pipeline has been deprecated - try using the CommandManager object instead -->
</dispatch>
@Adam, I updated answer based on yours edit.
– Abhishek Malaviya
7 hours ago
add a comment |
A pipeline is a series of actions that execute in sequence to perform a task in Sitecore. Pipelines are fundamental to Sitecore's basic architecture. Most processes in Sitecore are defined as pipelines. Pipelines can be modified by developers to change, add, or remove functionality from Sitecore.
Pipelines are made up of one or more steps - called "processors." A pipeline is defind in configuration. For example, here is the definition for the getRenderingPreview
from Sitecore.config:
<getRenderingPreview>
<processor type="Sitecore.Pipelines.GetRenderingPreview.GetXslRenderingPreview,Sitecore.Kernel" />
<processor type="Sitecore.Pipelines.GetRenderingPreview.TryRenderControl,Sitecore.Kernel" />
<processor type="Sitecore.Pipelines.GetRenderingPreview.GetRenderingPreviewField,Sitecore.Kernel" />
<processor type="Sitecore.Pipelines.GetRenderingPreview.GetDefaultRenderingPreview,Sitecore.Kernel" />
</getRenderingPreview>
When the getRenderingPreview
pipeline is executed, the processors defined above run in order from first to last. Most pipelines pass data between each processor in the form of an arguments object. For example, getRenderingPreview
use an arguments object called GetRenderingPreviewArgs
. This stores data that each processor of the pipeline may need. This usually also includes data about the current Sitecore context.
A processor is implemented by a C# class. Many built-in pipelines can be found under the Sitecore.Pipelines
namespace in Sitecore.Kernel.dll
.
Conceptually, a Sitecore pipeline is based around the pipes and filters pattern which is also termed the pipeline pattern.
pipes and filters pattern
The basic elements of the pipe and filters pattern are:
Pump : Pushes the data to be processed into the pipeline
Pipe : The channel containing one or more sequential filters
Filter : Performs the data processing (in Sitecore terms these are called Processors)
Sink : Consumes the data processed by the pipeline
Edit
If you see Sitecore.config
Processors classes must have parameterless constructor. Processors is also a pipeline like dispatch
as mentioned below.
As recommended practice for custom implementation use specific pipeline ex- initialize
,httpRequestBegin
,renderField
based on yours requirement.
<!-- PROCESSORS
Classes must have parameterless constructor.
Supported attributes:
mode=[on|off]
type=name of class (case-sensitive).
namespace=namespace containing class. If no namespace is included, it is assumed that the namespace is the same as the assembly name.
assembly=name of dll containing the class (case-sensitive)
-->
<processors>
<dispatch>
<!-- This pipeline has been deprecated - try using the CommandManager object instead -->
</dispatch>
@Adam, I updated answer based on yours edit.
– Abhishek Malaviya
7 hours ago
add a comment |
A pipeline is a series of actions that execute in sequence to perform a task in Sitecore. Pipelines are fundamental to Sitecore's basic architecture. Most processes in Sitecore are defined as pipelines. Pipelines can be modified by developers to change, add, or remove functionality from Sitecore.
Pipelines are made up of one or more steps - called "processors." A pipeline is defind in configuration. For example, here is the definition for the getRenderingPreview
from Sitecore.config:
<getRenderingPreview>
<processor type="Sitecore.Pipelines.GetRenderingPreview.GetXslRenderingPreview,Sitecore.Kernel" />
<processor type="Sitecore.Pipelines.GetRenderingPreview.TryRenderControl,Sitecore.Kernel" />
<processor type="Sitecore.Pipelines.GetRenderingPreview.GetRenderingPreviewField,Sitecore.Kernel" />
<processor type="Sitecore.Pipelines.GetRenderingPreview.GetDefaultRenderingPreview,Sitecore.Kernel" />
</getRenderingPreview>
When the getRenderingPreview
pipeline is executed, the processors defined above run in order from first to last. Most pipelines pass data between each processor in the form of an arguments object. For example, getRenderingPreview
use an arguments object called GetRenderingPreviewArgs
. This stores data that each processor of the pipeline may need. This usually also includes data about the current Sitecore context.
A processor is implemented by a C# class. Many built-in pipelines can be found under the Sitecore.Pipelines
namespace in Sitecore.Kernel.dll
.
Conceptually, a Sitecore pipeline is based around the pipes and filters pattern which is also termed the pipeline pattern.
pipes and filters pattern
The basic elements of the pipe and filters pattern are:
Pump : Pushes the data to be processed into the pipeline
Pipe : The channel containing one or more sequential filters
Filter : Performs the data processing (in Sitecore terms these are called Processors)
Sink : Consumes the data processed by the pipeline
Edit
If you see Sitecore.config
Processors classes must have parameterless constructor. Processors is also a pipeline like dispatch
as mentioned below.
As recommended practice for custom implementation use specific pipeline ex- initialize
,httpRequestBegin
,renderField
based on yours requirement.
<!-- PROCESSORS
Classes must have parameterless constructor.
Supported attributes:
mode=[on|off]
type=name of class (case-sensitive).
namespace=namespace containing class. If no namespace is included, it is assumed that the namespace is the same as the assembly name.
assembly=name of dll containing the class (case-sensitive)
-->
<processors>
<dispatch>
<!-- This pipeline has been deprecated - try using the CommandManager object instead -->
</dispatch>
A pipeline is a series of actions that execute in sequence to perform a task in Sitecore. Pipelines are fundamental to Sitecore's basic architecture. Most processes in Sitecore are defined as pipelines. Pipelines can be modified by developers to change, add, or remove functionality from Sitecore.
Pipelines are made up of one or more steps - called "processors." A pipeline is defind in configuration. For example, here is the definition for the getRenderingPreview
from Sitecore.config:
<getRenderingPreview>
<processor type="Sitecore.Pipelines.GetRenderingPreview.GetXslRenderingPreview,Sitecore.Kernel" />
<processor type="Sitecore.Pipelines.GetRenderingPreview.TryRenderControl,Sitecore.Kernel" />
<processor type="Sitecore.Pipelines.GetRenderingPreview.GetRenderingPreviewField,Sitecore.Kernel" />
<processor type="Sitecore.Pipelines.GetRenderingPreview.GetDefaultRenderingPreview,Sitecore.Kernel" />
</getRenderingPreview>
When the getRenderingPreview
pipeline is executed, the processors defined above run in order from first to last. Most pipelines pass data between each processor in the form of an arguments object. For example, getRenderingPreview
use an arguments object called GetRenderingPreviewArgs
. This stores data that each processor of the pipeline may need. This usually also includes data about the current Sitecore context.
A processor is implemented by a C# class. Many built-in pipelines can be found under the Sitecore.Pipelines
namespace in Sitecore.Kernel.dll
.
Conceptually, a Sitecore pipeline is based around the pipes and filters pattern which is also termed the pipeline pattern.
pipes and filters pattern
The basic elements of the pipe and filters pattern are:
Pump : Pushes the data to be processed into the pipeline
Pipe : The channel containing one or more sequential filters
Filter : Performs the data processing (in Sitecore terms these are called Processors)
Sink : Consumes the data processed by the pipeline
Edit
If you see Sitecore.config
Processors classes must have parameterless constructor. Processors is also a pipeline like dispatch
as mentioned below.
As recommended practice for custom implementation use specific pipeline ex- initialize
,httpRequestBegin
,renderField
based on yours requirement.
<!-- PROCESSORS
Classes must have parameterless constructor.
Supported attributes:
mode=[on|off]
type=name of class (case-sensitive).
namespace=namespace containing class. If no namespace is included, it is assumed that the namespace is the same as the assembly name.
assembly=name of dll containing the class (case-sensitive)
-->
<processors>
<dispatch>
<!-- This pipeline has been deprecated - try using the CommandManager object instead -->
</dispatch>
edited 7 hours ago
answered 8 hours ago
Abhishek MalaviyaAbhishek Malaviya
1,0071 gold badge3 silver badges18 bronze badges
1,0071 gold badge3 silver badges18 bronze badges
@Adam, I updated answer based on yours edit.
– Abhishek Malaviya
7 hours ago
add a comment |
@Adam, I updated answer based on yours edit.
– Abhishek Malaviya
7 hours ago
@Adam, I updated answer based on yours edit.
– Abhishek Malaviya
7 hours ago
@Adam, I updated answer based on yours edit.
– Abhishek Malaviya
7 hours ago
add a comment |
In few words :
Processors provide the logic that is used when a pipeline is invoked.
A pipeline is basically a method whose flow is defined using XML.
A pipeline consists of a sequence of processors. A processor is a .NET class that implements a method. When a pipeline is invoked, the processors are run in order.
Pipelines are used to control most of Sitecore’s functionality. Processes ranging from authentication to request handling to publishing to indexing are all controlled through pipelines.
More informations you can find here:
https://sitecorespark.com/article/introduction-to-pipelines
http://www.coreworks.co/sitecore-pipelines-overview
add a comment |
In few words :
Processors provide the logic that is used when a pipeline is invoked.
A pipeline is basically a method whose flow is defined using XML.
A pipeline consists of a sequence of processors. A processor is a .NET class that implements a method. When a pipeline is invoked, the processors are run in order.
Pipelines are used to control most of Sitecore’s functionality. Processes ranging from authentication to request handling to publishing to indexing are all controlled through pipelines.
More informations you can find here:
https://sitecorespark.com/article/introduction-to-pipelines
http://www.coreworks.co/sitecore-pipelines-overview
add a comment |
In few words :
Processors provide the logic that is used when a pipeline is invoked.
A pipeline is basically a method whose flow is defined using XML.
A pipeline consists of a sequence of processors. A processor is a .NET class that implements a method. When a pipeline is invoked, the processors are run in order.
Pipelines are used to control most of Sitecore’s functionality. Processes ranging from authentication to request handling to publishing to indexing are all controlled through pipelines.
More informations you can find here:
https://sitecorespark.com/article/introduction-to-pipelines
http://www.coreworks.co/sitecore-pipelines-overview
In few words :
Processors provide the logic that is used when a pipeline is invoked.
A pipeline is basically a method whose flow is defined using XML.
A pipeline consists of a sequence of processors. A processor is a .NET class that implements a method. When a pipeline is invoked, the processors are run in order.
Pipelines are used to control most of Sitecore’s functionality. Processes ranging from authentication to request handling to publishing to indexing are all controlled through pipelines.
More informations you can find here:
https://sitecorespark.com/article/introduction-to-pipelines
http://www.coreworks.co/sitecore-pipelines-overview
answered 6 hours ago
Vlad IobagiuVlad Iobagiu
14.2k2 gold badges13 silver badges39 bronze badges
14.2k2 gold badges13 silver badges39 bronze badges
add a comment |
add a comment |
As has been pointed out in other answers, <processors>
are used primarily for UI-related activities. They must be executed via Sitecore.Pipelines.PipelineFactory
and Sitecore.Pipelines.Pipeline
instead of Sitecore.Pipelines.CorePipeline
.
Functionally, the main difference appears to be that these UI pipelines have the ability to suspend while waiting for user input, and resume on Sheer UI postback. The Pipeline
class has an ID
property which is used for storing it in session. Thus the Pipeline
itself and its args need to be [Serializable]
. You can see some of this suspend/resume logic in Sitecore.Web.UI.Sheer.ClientPage
.
Practically, unless you are doing Sheer UI customization, you should stick with use of <pipelines>
/ CorePipeline
.
theuiUpload
processor does not work with sheer ui components at all. I've been fighting to get it to render anything and the best solution thus far is to get javascript to trigger an "alert()"
– Adam Hess
6 hours ago
Yes it looks like that one is used within a SPEAK dialog? Possibly for similar reasons, possibly because the dialog used to be Sheer? ¯_(ツ)_/¯ ... if you have a specific issue with that pipeline might be worth posting a separate Q.
– techphoria414
5 hours ago
Its come up in other places, the uiUpload process doesn't work with speak/sheer.
– Adam Hess
5 hours ago
add a comment |
As has been pointed out in other answers, <processors>
are used primarily for UI-related activities. They must be executed via Sitecore.Pipelines.PipelineFactory
and Sitecore.Pipelines.Pipeline
instead of Sitecore.Pipelines.CorePipeline
.
Functionally, the main difference appears to be that these UI pipelines have the ability to suspend while waiting for user input, and resume on Sheer UI postback. The Pipeline
class has an ID
property which is used for storing it in session. Thus the Pipeline
itself and its args need to be [Serializable]
. You can see some of this suspend/resume logic in Sitecore.Web.UI.Sheer.ClientPage
.
Practically, unless you are doing Sheer UI customization, you should stick with use of <pipelines>
/ CorePipeline
.
theuiUpload
processor does not work with sheer ui components at all. I've been fighting to get it to render anything and the best solution thus far is to get javascript to trigger an "alert()"
– Adam Hess
6 hours ago
Yes it looks like that one is used within a SPEAK dialog? Possibly for similar reasons, possibly because the dialog used to be Sheer? ¯_(ツ)_/¯ ... if you have a specific issue with that pipeline might be worth posting a separate Q.
– techphoria414
5 hours ago
Its come up in other places, the uiUpload process doesn't work with speak/sheer.
– Adam Hess
5 hours ago
add a comment |
As has been pointed out in other answers, <processors>
are used primarily for UI-related activities. They must be executed via Sitecore.Pipelines.PipelineFactory
and Sitecore.Pipelines.Pipeline
instead of Sitecore.Pipelines.CorePipeline
.
Functionally, the main difference appears to be that these UI pipelines have the ability to suspend while waiting for user input, and resume on Sheer UI postback. The Pipeline
class has an ID
property which is used for storing it in session. Thus the Pipeline
itself and its args need to be [Serializable]
. You can see some of this suspend/resume logic in Sitecore.Web.UI.Sheer.ClientPage
.
Practically, unless you are doing Sheer UI customization, you should stick with use of <pipelines>
/ CorePipeline
.
As has been pointed out in other answers, <processors>
are used primarily for UI-related activities. They must be executed via Sitecore.Pipelines.PipelineFactory
and Sitecore.Pipelines.Pipeline
instead of Sitecore.Pipelines.CorePipeline
.
Functionally, the main difference appears to be that these UI pipelines have the ability to suspend while waiting for user input, and resume on Sheer UI postback. The Pipeline
class has an ID
property which is used for storing it in session. Thus the Pipeline
itself and its args need to be [Serializable]
. You can see some of this suspend/resume logic in Sitecore.Web.UI.Sheer.ClientPage
.
Practically, unless you are doing Sheer UI customization, you should stick with use of <pipelines>
/ CorePipeline
.
answered 6 hours ago
techphoria414techphoria414
3,02510 silver badges42 bronze badges
3,02510 silver badges42 bronze badges
theuiUpload
processor does not work with sheer ui components at all. I've been fighting to get it to render anything and the best solution thus far is to get javascript to trigger an "alert()"
– Adam Hess
6 hours ago
Yes it looks like that one is used within a SPEAK dialog? Possibly for similar reasons, possibly because the dialog used to be Sheer? ¯_(ツ)_/¯ ... if you have a specific issue with that pipeline might be worth posting a separate Q.
– techphoria414
5 hours ago
Its come up in other places, the uiUpload process doesn't work with speak/sheer.
– Adam Hess
5 hours ago
add a comment |
theuiUpload
processor does not work with sheer ui components at all. I've been fighting to get it to render anything and the best solution thus far is to get javascript to trigger an "alert()"
– Adam Hess
6 hours ago
Yes it looks like that one is used within a SPEAK dialog? Possibly for similar reasons, possibly because the dialog used to be Sheer? ¯_(ツ)_/¯ ... if you have a specific issue with that pipeline might be worth posting a separate Q.
– techphoria414
5 hours ago
Its come up in other places, the uiUpload process doesn't work with speak/sheer.
– Adam Hess
5 hours ago
the
uiUpload
processor does not work with sheer ui components at all. I've been fighting to get it to render anything and the best solution thus far is to get javascript to trigger an "alert()"– Adam Hess
6 hours ago
the
uiUpload
processor does not work with sheer ui components at all. I've been fighting to get it to render anything and the best solution thus far is to get javascript to trigger an "alert()"– Adam Hess
6 hours ago
Yes it looks like that one is used within a SPEAK dialog? Possibly for similar reasons, possibly because the dialog used to be Sheer? ¯_(ツ)_/¯ ... if you have a specific issue with that pipeline might be worth posting a separate Q.
– techphoria414
5 hours ago
Yes it looks like that one is used within a SPEAK dialog? Possibly for similar reasons, possibly because the dialog used to be Sheer? ¯_(ツ)_/¯ ... if you have a specific issue with that pipeline might be worth posting a separate Q.
– techphoria414
5 hours ago
Its come up in other places, the uiUpload process doesn't work with speak/sheer.
– Adam Hess
5 hours ago
Its come up in other places, the uiUpload process doesn't work with speak/sheer.
– Adam Hess
5 hours ago
add a comment |
Thanks for contributing an answer to Sitecore Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsitecore.stackexchange.com%2fquestions%2f20330%2fwhats-the-difference-between-processors-and-pipelines-in-sitecore-configurat%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
Possible duplicate of What is a pipeline?
– Pete Navarra
7 hours ago
@PeteNavarra actually this question is about a
<processors>
Sitecore configuration. I misunderstood the question at first and thought it's about what a pipeline was.– Marek Musielak
7 hours ago
Yeah, I guess the answers though are really similar though. It's close.
– Pete Navarra
4 hours ago
I'm voting to close this question as off-topic because one it shows lack of understanding, two its answered here sitecore.stackexchange.com/questions/1874/what-is-a-pipeline
– ASura
4 hours ago