Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.ServiceModel.Activities / System / ServiceModel / Activities / WorkflowControlEndpoint.cs / 1305376 / WorkflowControlEndpoint.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.ServiceModel.Activities { using System.Diagnostics; using System.Globalization; using System.ServiceModel; using System.ServiceModel.Activities.Description; using System.ServiceModel.Channels; using System.ServiceModel.Description; using System.Runtime; [Fx.Tag.XamlVisible(false)] public class WorkflowControlEndpoint : ServiceEndpoint { static Uri defaultBaseUri; static ContractDescription workflowControlServiceContract; static object workflowContractDescriptionLock = new object(); public WorkflowControlEndpoint() : this(WorkflowControlEndpoint.GetDefaultBinding(), new EndpointAddress(new Uri(WorkflowControlEndpoint.DefaultBaseUri, new Uri(Guid.NewGuid().ToString(), UriKind.Relative)))) { } public WorkflowControlEndpoint(Binding binding, EndpointAddress address) : base(WorkflowControlEndpoint.WorkflowControlServiceContract, binding, address) { this.IsSystemEndpoint = true; } internal static ContractDescription WorkflowControlServiceContract { get { if (workflowControlServiceContract == null) { lock (workflowContractDescriptionLock) { if (workflowControlServiceContract == null) { ContractDescription tempControlServiceContract = ContractDescription.GetContract( typeof(IWorkflowInstanceManagement)); tempControlServiceContract.Behaviors.Add(new ServiceMetadataContractBehavior(true)); ApplyOperationBehaviors(tempControlServiceContract); workflowControlServiceContract = tempControlServiceContract; } } } return workflowControlServiceContract; } } static Uri DefaultBaseUri { get { if (defaultBaseUri == null) { defaultBaseUri = new Uri(string.Format(CultureInfo.InvariantCulture, "net.pipe://localhost/workflowControlServiceEndpoint/{0}/{1}", Process.GetCurrentProcess().Id, AppDomain.CurrentDomain.Id)); } return defaultBaseUri; } } static Binding GetDefaultBinding() { return new NetNamedPipeBinding(NetNamedPipeSecurityMode.None) { TransactionFlow = true }; } static void ApplyOperationBehaviors(ContractDescription contractDescription) { foreach (OperationDescription operationDescription in contractDescription.Operations) { //Except "Abandon" all the operations in this contract are Async. //All Transacted* operation are Transacted & Async. switch (operationDescription.Name) { case XD2.WorkflowInstanceManagementService.Abandon: case XD2.WorkflowInstanceManagementService.Cancel: case XD2.WorkflowInstanceManagementService.Run: case XD2.WorkflowInstanceManagementService.Suspend: case XD2.WorkflowInstanceManagementService.Terminate: case XD2.WorkflowInstanceManagementService.Unsuspend: EnsureDispatch(operationDescription); break; case XD2.WorkflowInstanceManagementService.TransactedCancel: case XD2.WorkflowInstanceManagementService.TransactedRun: case XD2.WorkflowInstanceManagementService.TransactedSuspend: case XD2.WorkflowInstanceManagementService.TransactedTerminate: case XD2.WorkflowInstanceManagementService.TransactedUnsuspend: EnsureDispatch(operationDescription); EnsureTransactedInvoke(operationDescription); break; } } } static void EnsureDispatch(OperationDescription operationDescription) { operationDescription.Behaviors.Add(new ControlOperationBehavior(false)); } static void EnsureTransactedInvoke(OperationDescription operationDescription) { OperationBehaviorAttribute operationAttribute = operationDescription.Behaviors.Find(); operationAttribute.TransactionScopeRequired = true; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- GridItemProviderWrapper.cs
- CrossSiteScriptingValidation.cs
- SerialReceived.cs
- TextTrailingCharacterEllipsis.cs
- SchemaElement.cs
- TextEffectResolver.cs
- MetafileHeaderWmf.cs
- VisualTreeUtils.cs
- List.cs
- ObjectIDGenerator.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- HttpListenerPrefixCollection.cs
- RegistrationServices.cs
- SmtpNetworkElement.cs
- UdpContractFilterBehavior.cs
- RegisteredScript.cs
- MulticastIPAddressInformationCollection.cs
- WeakReference.cs
- RealizationDrawingContextWalker.cs
- DataExpression.cs
- XmlDocument.cs
- LayoutTable.cs
- Maps.cs
- TableLayoutPanelCellPosition.cs
- InitializerFacet.cs
- SpeechEvent.cs
- OuterGlowBitmapEffect.cs
- DataGridViewTextBoxCell.cs
- TraceProvider.cs
- TextEditorTables.cs
- XPathChildIterator.cs
- CultureInfoConverter.cs
- Config.cs
- PtsPage.cs
- ListViewItem.cs
- ToolStripSplitButton.cs
- XPathDocumentIterator.cs
- ZipIOLocalFileHeader.cs
- ConnectionsZone.cs
- IgnoreDeviceFilterElementCollection.cs
- SQLDouble.cs
- SecurityCriticalDataForSet.cs
- DLinqAssociationProvider.cs
- DataStorage.cs
- HighContrastHelper.cs
- Root.cs
- SortQuery.cs
- RegexMatchCollection.cs
- DSASignatureDeformatter.cs
- XmlConvert.cs
- ColorBlend.cs
- ProfileProvider.cs
- DependencyPropertyKey.cs
- GridViewSortEventArgs.cs
- FixedHyperLink.cs
- EventBindingService.cs
- FlowLayoutSettings.cs
- PointLight.cs
- Animatable.cs
- BasicCellRelation.cs
- WindowVisualStateTracker.cs
- NoneExcludedImageIndexConverter.cs
- Resources.Designer.cs
- SecurityPolicySection.cs
- DataGridViewHeaderCell.cs
- FlatButtonAppearance.cs
- UriSection.cs
- EncryptedKey.cs
- SoapObjectReader.cs
- SqlConnectionPoolGroupProviderInfo.cs
- PlainXmlDeserializer.cs
- XPathExpr.cs
- NativeMethods.cs
- DBSchemaRow.cs
- XsltInput.cs
- BindingExpressionBase.cs
- DocumentReference.cs
- StaticFileHandler.cs
- ThreadExceptionEvent.cs
- ComponentCommands.cs
- SessionStateItemCollection.cs
- BookmarkResumptionRecord.cs
- WorkflowViewElement.cs
- ServiceObjectContainer.cs
- MiniModule.cs
- DataGridAddNewRow.cs
- XPathNavigatorKeyComparer.cs
- DecimalFormatter.cs
- Peer.cs
- TextViewSelectionProcessor.cs
- BindingOperations.cs
- CallbackValidatorAttribute.cs
- StringResourceManager.cs
- InstanceDescriptor.cs
- PropertyTabChangedEvent.cs
- FrameworkContentElementAutomationPeer.cs
- DBSqlParserColumnCollection.cs
- SmiXetterAccessMap.cs
- ToolStripDropDownItem.cs
- SyndicationSerializer.cs