Skip to content

SEOImages: User Story 1463880, Part 30 #11410

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 25 commits into from
Apr 2, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
c4b23e4
Image updates.
damabe Feb 27, 2019
a9fd7be
Image updates.
damabe Feb 27, 2019
648a692
Merge branch 'master' of https://github.com/dotnet/docs
damabe Mar 6, 2019
ad6b189
Merge branch 'master' of https://github.com/dotnet/docs
damabe Mar 7, 2019
3b1be9a
Merge branch 'master' of https://github.com/dotnet/docs
damabe Mar 8, 2019
970c319
Merge branch 'master' of https://github.com/dotnet/docs
damabe Mar 10, 2019
1531b8d
Merge branch 'master' of https://github.com/dotnet/docs
damabe Mar 13, 2019
3ba1a22
Merge branch 'master' of https://github.com/dotnet/docs
damabe Mar 15, 2019
f170c87
Merge branch 'master' of https://github.com/dotnet/docs
damabe Mar 16, 2019
37c98b1
Merge branch 'master' of https://github.com/dotnet/docs
damabe Mar 17, 2019
18da5b4
Merge branch 'master' of https://github.com/dotnet/docs
damabe Mar 18, 2019
1fca543
Merge branch 'master' of https://github.com/dotnet/docs
damabe Mar 19, 2019
ac379a9
Merge branch 'master' of https://github.com/dotnet/docs
damabe Mar 20, 2019
0b05bce
SEO image overview.
damabe Mar 20, 2019
3212112
SEO image overview.
damabe Mar 20, 2019
669fbc4
SEO image overview.
damabe Mar 20, 2019
2611c5e
SEO image overview.
damabe Mar 20, 2019
f626707
SEO image overview.
damabe Mar 20, 2019
bf13b17
Update workflow-service-host-internals.md
damabe Mar 27, 2019
8d80efb
Update docs/framework/wcf/feature-details/workflow-service-host-inter…
mairaw Apr 2, 2019
268ea43
Update docs/framework/wcf/feature-details/workflow-service-host-inter…
mairaw Apr 2, 2019
557cfba
Update docs/framework/wcf/feature-details/workflow-service-host-inter…
mairaw Apr 2, 2019
3f13acf
Update docs/framework/wcf/feature-details/workflow-service-host-inter…
mairaw Apr 2, 2019
d27ab8f
Update docs/framework/wpf/app-development/navigation-topologies-overv…
mairaw Apr 2, 2019
2cc444c
Update docs/framework/wpf/controls/wpf-content-model.md
mairaw Apr 2, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,36 +7,37 @@ ms.assetid: af44596f-bf6a-4149-9f04-08d8e8f45250
<xref:System.ServiceModel.WorkflowServiceHost> provides a host for workflow services. It is responsible for listening for incoming messages and routing them to the appropriate workflow service instance, it controls unloading and persisting of idle workflows, and more. This topic describes how WorkflowServiceHost processes incoming messages.

## WorkflowServiceHost Overview
The <xref:System.ServiceModel.WorkflowServiceHost> class is used to host workflow services. It listens for incoming messages and routes them to the appropriate service instance, creating new instances or loading existing instances from durable storage as needed. The following diagram illustrates on a high level how <xref:System.ServiceModel.WorkflowServiceHost> works.

The <xref:System.ServiceModel.WorkflowServiceHost> class is used to host workflow services. It listens for incoming messages and routes them to the appropriate service instance, creating new instances or loading existing instances from durable storage as needed. The following diagram illustrates on a high level how <xref:System.ServiceModel.WorkflowServiceHost> works:

![WorkflowServiceHost Overview](../../../../docs/framework/wcf/feature-details/media/wfshhighlevel.gif "WFSHHighLevel")
![Diagram that shows an overview of the Workflow Service Host.](./media/workflow-service-host-internals/workflow-service-host-high-level-overview.gif)

This diagram shows that <xref:System.ServiceModel.WorkflowServiceHost> loads workflow service definitions from .xamlx files and loads configuration information from a configuration file. It also loads tracking configuration from the tracking profile. <xref:System.ServiceModel.WorkflowServiceHost> exposes a workflow control endpoint which allows you to send control operations to workflow instances. For more information see [Workflow Control Endpoint sample](../../../../docs/framework/wcf/feature-details/workflow-control-endpoint.md).

<xref:System.ServiceModel.WorkflowServiceHost> also exposes application endpoints that listen for incoming application messages. When an incoming message arrives it is sent to the appropriate workflow service instance (if it is currently loaded). If needed a new workflow instance is created. Or if an existing instance has been persisted it is loaded from the persistence store.

## WorkflowServiceHost Details
The following diagram shows how <xref:System.ServiceModel.WorkflowServiceHost> handles messages in a bit more detail.
The following diagram shows how <xref:System.ServiceModel.WorkflowServiceHost> handles messages in a bit more detail:

![Workflow Service Host Message Flow](../../../../docs/framework/wcf/feature-details/media/wfshmessageflow.gif "WFSHMessageFlow")
![Diagram that shows the Workflow Service Host message flow.](./media/workflow-service-host-internals/workflow-service-host-message-flow.gif)

This diagram shows three different endpoints, an application endpoint, a workflow control endpoint, and a workflow hosting endpoint. The application endpoint receives messages that are bound for a specific workflow instance. The workflow control endpoint listens for control operations. The workflow hosting endpoint listens for messages that cause <xref:System.ServiceModel.WorkflowServiceHost> to load and execute non-service workflows. As shown in the diagram all messages are processed through the WCF runtime. Workflow service instance throttling is achieved by using the <xref:System.ServiceModel.Description.ServiceThrottlingBehavior.MaxConcurrentInstances%2A> property. This property will limit the number of concurrent workflow service instances. When this throttle is exceeded any additional requests for new workflow service instances or requests to activate persisted workflow instances will be queued. The queued requests are processed in FIFO order regardless of whether they are requests for a new instance or a running, persisted instance. Host policy information is loaded that determines how unhandled exceptions are dealt with, and how idle workflow services are unloaded and persisted. For more information about these topics see [How to: Configure Workflow Unhandled Exception Behavior with WorkflowServiceHost](../../../../docs/framework/wcf/feature-details/config-workflow-unhandled-exception-workflowservicehost.md) and [How to: Configure Idle Behavior with WorkflowServiceHost](../../../../docs/framework/wcf/feature-details/how-to-configure-idle-behavior-with-workflowservicehost.md). Workflow instances are persisted according to host policies and are reloaded when needed. For more information about workflow persistence see: [How to: Configure Persistence with WorkflowServiceHost](../../../../docs/framework/wcf/feature-details/how-to-configure-persistence-with-workflowservicehost.md), [Creating a Long-running Workflow Service](../../../../docs/framework/wcf/feature-details/creating-a-long-running-workflow-service.md), and [Workflow Persistence](../../../../docs/framework/windows-workflow-foundation/workflow-persistence.md).

The following illustration shows what the WorkflowServiceHost.Open is called.
The following illustration shows the flow when WorkflowServiceHost.Open is called:

![When WorkflowServiceHost.Open is called](../../../../docs/framework/wcf/feature-details/media/wfhostopen.gif "WFHostOpen")
![Diagram that shows the flow when WorkflowServiceHost.Open is called.](./media/workflow-service-host-internals/workflow-service-host-open.gif)

The workflow is loaded from XAML and the activity tree is created. <xref:System.ServiceModel.WorkflowServiceHost> walks the activity tree and creates the service description. Configuration is applied to the host. Finally the host begins to listen for incoming messages.

The following illustration shows what the <xref:System.ServiceModel.WorkflowServiceHost> does when it receives a message bound for a Receive activity that has CanCreateInstance set to `true`.
The following illustration shows what the <xref:System.ServiceModel.WorkflowServiceHost> does when it receives a message bound for a Receive activity that has CanCreateInstance set to `true`:

![Workflow Service Host Receives a message](../../../../docs/framework/wcf/feature-details/media/wfhreceivemessagecci.gif "WFHReceiveMessageCCI")
![Decision tree used by the WFS Host when it receives a message and CanCreateInstance is true.](./media/workflow-service-host-internals/workflow-service-host-receive-message-cancreateinstance.gif)

The message arrives and is processed by the WCF channel stack. Throttles are checked and correlation queries are executed. If the message is bound for an existing instance the message is delivered. If a new instance needs to be created, the Receive activity’s CanCreateInstance property is checked. If it is set to true, a new instance is created and the message is delivered.

The following illustration shows what the <xref:System.ServiceModel.WorkflowServiceHost> does when it receives a message bound for a Receive activity that has CanCreateInstance set to false.

![WorkflowServiceHost receives a message](../../../../docs/framework/wcf/feature-details/media/wfshreceivemessage.gif "WFSHReceiveMessage")
![Decision tree used by the WFS Host when it receives a message and CanCreateInstance is false.](./media/workflow-service-host-internals/workflow-service-host-receive-message.gif)

The message arrives and is processed by the WCF channel stack. Throttles are checked and correlation queries are executed. The message is bound for an existing instance (because CanCreateInstance is false) so the instance is loaded from persistence store, the bookmark is resumed and the workflow executes.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ ms.assetid: 5d5ee837-629a-4933-869a-186dc22ac43d

This topic covers three common navigation topologies: *fixed linear*, *fixed hierarchical*, and *dynamically generated*. Each navigation topology is demonstrated with a sample that has a [!INCLUDE[TLA2#tla_ui](../../../../includes/tla2sharptla-ui-md.md)] like the one that is shown in the following figure:

![Task pages with data items](./media/navigationtopologyfigure6.png "NavigationTopologyFigure6")
![Task pages with data items and navigation buttons.](./media/navigation-topologies-overview/navigation-topology-data-items.png)

<a name="Structured_Navigation_Topologies"></a>
## Structured Navigation Topologies
Expand All @@ -54,9 +54,9 @@ ms.assetid: 5d5ee837-629a-4933-869a-186dc22ac43d

<a name="Navigation_over_a_Fixed_Linear_Topology"></a>
## Navigation over a Fixed Linear Topology
A fixed linear topology is analogous to the structure of a wizard that has one or more wizard pages that are navigated in a fixed sequence. The following figure shows the high-level structure and flow of a wizard with a fixed linear topology.
A fixed linear topology is analogous to the structure of a wizard that has one or more wizard pages that are navigated in a fixed sequence. The following figure shows the high-level structure and flow of a wizard with a fixed linear topology:

![Navigation topology diagram](./media/navigationtopologyfigure1.png "NavigationTopologyFigure1")
![Diagram that shows a fixed linear topology.](./media/navigation-topologies-overview/navigation-topology-fixed-linear.png)

The typical behaviors for navigating over a fixed linear topology include the following:

Expand All @@ -78,13 +78,13 @@ ms.assetid: 5d5ee837-629a-4933-869a-186dc22ac43d

<a name="Dynamic_Navigation_over_a_Fixed_Hierarchical_Topology"></a>
## Dynamic Navigation over a Fixed Hierarchical Topology
In some applications, pages allow navigation to two or more other pages, as shown in the following figure.
In some applications, pages allow navigation to two or more other pages, as shown in the following figure:

![A page that can navigate to multiple pages](./media/navigationtopologyfigure2.png "NavigationTopologyFigure2")
![Diagram that shows a page that can navigate to multiple pages.](./media/navigation-topologies-overview/navigation-topology-multiple-pages.png)

This structure is known as a fixed hierarchical topology, and the sequence in which the hierarchy is traversed is often determined at run time by either the application or the user. At run time, each page in the hierarchy that allows navigation to two or more other pages gathers the data required to determine which page to navigate to. The following figure illustrates one of several possible navigation sequences based on the previous figure.
This structure is known as a fixed hierarchical topology, and the sequence in which the hierarchy is traversed is often determined at run time by either the application or the user. At run time, each page in the hierarchy that allows navigation to two or more other pages gathers the data required to determine which page to navigate to. The following figure illustrates one of several possible navigation sequences based on the previous figure:

![Navigation topology diagram](./media/navigationtopologyfigure3.png "NavigationTopologyFigure3")
![Diagram that shows a possible navigation sequence.](./media/navigation-topologies-overview/navigation-topology-fixed-hierarchical.png)

Even though the sequence in which pages in a fixed hierarchical structure are navigated is determined at run time, the user experience is the same as the user experience for a fixed linear topology:

Expand All @@ -108,13 +108,13 @@ ms.assetid: 5d5ee837-629a-4933-869a-186dc22ac43d

<a name="Navigation_over_a_Dynamically_Generated_Topology"></a>
## Navigation over a Dynamically Generated Topology
In some applications, the sequence in which two or more pages are navigated can only be determined at run time, whether by the user, the application, or external data. The following figure illustrates a set of pages with an undetermined navigation sequence.
In some applications, the sequence in which two or more pages are navigated can only be determined at run time, whether by the user, the application, or external data. The following figure illustrates a set of pages with an undetermined navigation sequence:

![Navigation topology diagram](./media/navigationtopologyfigure4.png "NavigationTopologyFigure4")
![A set of pages with an undetermined navigation sequence.](./media/navigation-topologies-overview/navigation-topology-dynamically-generated.png)

The next figure illustrates a navigation sequence that was chosen by the user at run time.
The next figure illustrates a navigation sequence that was chosen by the user at run time:

![Navigation diagram](./media/navigationtopologyfigure5.png "NavigationTopologyFigure5")
![Diagram that shows a navigation sequence chosen at run time.](./media/navigation-topologies-overview/navigation-topology-sequence-chosen-run-time.png)

The navigation sequence is known as a dynamically generated topology. For the user, as with the other navigation topologies, the user experience is the same as it is for the previous topologies:

Expand Down
15 changes: 6 additions & 9 deletions docs/framework/wpf/controls/wpf-content-model.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ ms.assetid: 214da5ef-547a-4cf8-9b07-4aa8a0e52cdd
|<xref:System.Windows.Controls.ItemsControl>|A collection of arbitrary objects.|
|<xref:System.Windows.Controls.HeaderedItemsControl>|A header and a collection of items, all of which are arbitrary objects.|

Controls that inherit from these classes can contain the same type of content and treat the content in the same way. The following illustration shows one control from each content model that contains an image and some text.
Controls that inherit from these classes can contain the same type of content and treat the content in the same way. The following illustration shows one control from each content model that contains an image and some text:

![Button, GroupBox, Listbax, TreeViewItem](./media/controlcontentmodelimagetextinto.PNG "ControlContentModelImageTextInto")
![Screenshot that shows four different controls, one from each content model.](./media/wpf-content-model/control-content-model-image-text.png)

### Controls That Contain a Single Arbitrary Object
The <xref:System.Windows.Controls.ContentControl> class contains a single piece of arbitrary content. Its content property is <xref:System.Windows.Controls.ContentControl.Content%2A>. The following controls inherit from <xref:System.Windows.Controls.ContentControl> and use its content model:
Expand Down Expand Up @@ -79,10 +79,9 @@ ms.assetid: 214da5ef-547a-4cf8-9b07-4aa8a0e52cdd

- <xref:System.Windows.Window>

The following illustration shows four buttons whose <xref:System.Windows.Controls.ContentControl.Content%2A> is set to a string, a <xref:System.DateTime> object, a <xref:System.Windows.Shapes.Rectangle>, and a <xref:System.Windows.Controls.Panel> that contains an <xref:System.Windows.Shapes.Ellipse> and a <xref:System.Windows.Controls.TextBlock>.
The following illustration shows four buttons whose <xref:System.Windows.Controls.ContentControl.Content%2A> is set to a string, a <xref:System.DateTime> object, a <xref:System.Windows.Shapes.Rectangle>, and a <xref:System.Windows.Controls.Panel> that contains an <xref:System.Windows.Shapes.Ellipse> and a <xref:System.Windows.Controls.TextBlock>:

![Four buttons](./media/controlcontentmodelbuttons.PNG "ControlContentModelButtons")
Four buttons that have different types of content
![Screenshot that shows four buttons with different content types.](./media/wpf-content-model/control-content-model-buttons.png)

For an example of how to set the <xref:System.Windows.Controls.ContentControl.Content%2A> property, see <xref:System.Windows.Controls.ContentControl>.

Expand All @@ -99,8 +98,7 @@ Four buttons that have different types of content

The following illustration shows two <xref:System.Windows.Controls.TabItem> objects. The first <xref:System.Windows.Controls.TabItem> has <xref:System.Windows.UIElement> objects as the <xref:System.Windows.Controls.HeaderedContentControl.Header%2A> and the <xref:System.Windows.Controls.ContentControl.Content%2A>. The <xref:System.Windows.Controls.HeaderedContentControl.Header%2A> is set to a <xref:System.Windows.Controls.StackPanel> that contains an <xref:System.Windows.Shapes.Ellipse> and a <xref:System.Windows.Controls.TextBlock>. The <xref:System.Windows.Controls.ContentControl.Content%2A> is set to a <xref:System.Windows.Controls.StackPanel> that contains a <xref:System.Windows.Controls.TextBlock> and a <xref:System.Windows.Controls.Label>. The second <xref:System.Windows.Controls.TabItem> has a string in the <xref:System.Windows.Controls.HeaderedContentControl.Header%2A> and a <xref:System.Windows.Controls.TextBlock> in the <xref:System.Windows.Controls.ContentControl.Content%2A>.

![TabControl](./media/controlcontentmodelteabitem.PNG "ControlContentModelTeabItem")
TabControl that uses different types in the Header property
![TabControl that uses different types in the Header property.](./media/wpf-content-model/control-content-model-tab.png)

For an example of how to create <xref:System.Windows.Controls.TabItem> objects, see <xref:System.Windows.Controls.HeaderedContentControl>.

Expand Down Expand Up @@ -141,8 +139,7 @@ TabControl that uses different types in the Header property

- A <xref:System.Windows.Controls.Panel> that contains an <xref:System.Windows.Shapes.Ellipse> and a <xref:System.Windows.Controls.TextBlock>.

![ListBox with four types of content](./media/controlcontentmodellistbox2.PNG "ControlContentModelListBox2")
ListBox that contains multiple types of objects
![Screenshot that shows a ListBox with four types of content.](./media/wpf-content-model/control-content-model-listbox.png)

### Controls That Contain a Header and a Collection of Arbitrary Objects
The <xref:System.Windows.Controls.HeaderedItemsControl> class inherits from <xref:System.Windows.Controls.ItemsControl> and can contain multiple items, such as strings, objects, or other elements, and a header. It inherits the <xref:System.Windows.Controls.ItemsControl> content properties, <xref:System.Windows.Controls.ItemsControl.ItemsSource%2A>, and <xref:System.Windows.Controls.ItemsControl.Items%2A>, and it defines the <xref:System.Windows.Controls.HeaderedItemsControl.Header%2A> property that can be an arbitrary object.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ The **XmlDataDocument** class is a derived class of the **XmlDocument**, and con

Because **XmlDataDocument** is inherited from an **XmlDocument**, it provides an implementation of the W3C DOM. The fact that the **XmlDataDocument** is associated with, and stores a subset of its data within, a **DataSet** does not restrict or alter its use as an **XmlDocument** in any way. Code written to consume an **XmlDocument** works unaltered against an **XmlDataDocument**. The **DataSet** provides the relational view of the same data by defining tables, columns, relations, and constraints, and is a stand-alone, in-memory user data store.

The following illustration shows the different associations that XML data has with the **DataSet** and **XmlDataDocument**.
The following illustration shows the different associations that XML data has with the **DataSet** and **XmlDataDocument**:

![XML DataSet](../../../../docs/standard/data/xml/media/xmlintegrationwithrelationaldataandadodotnet.gif "xmlIntegrationWithRelationalDataAndADOdotNet")
![Diagram that shows different associations with the XML DataSet.](./media/xml-integration-with-relational-data-and-adonet/xml-integration-relational-data-adodotnet.gif)

The illustration shows that XML data can be loaded directly into a **DataSet**, which allows direct manipulation with XML in the relational manner. Or, the XML can be loaded into a derived class of the DOM, which is the **XmlDataDocument**, and subsequently loaded and synchronized with the **DataSet**. Because the **DataSet** and **XmlDataDocument** are synchronized over a single set of data, changes made to the data in one store are reflected in the other store.

Expand Down