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
- TransformCryptoHandle.cs
- ImageDrawing.cs
- TextRenderer.cs
- InvokeGenerator.cs
- _ListenerAsyncResult.cs
- StylusTip.cs
- ISAPIApplicationHost.cs
- HtmlInputFile.cs
- DockAndAnchorLayout.cs
- DocumentGridContextMenu.cs
- RangeValueProviderWrapper.cs
- PermissionSetTriple.cs
- MultiBinding.cs
- ProxyAttribute.cs
- LinearKeyFrames.cs
- COM2IVsPerPropertyBrowsingHandler.cs
- AuthenticationService.cs
- MouseButtonEventArgs.cs
- StorageComplexPropertyMapping.cs
- StreamUpdate.cs
- FileNotFoundException.cs
- MemoryPressure.cs
- base64Transforms.cs
- XmlNodeChangedEventManager.cs
- TextProperties.cs
- LiteralSubsegment.cs
- MessageSecurityVersionConverter.cs
- SecurityStandardsManager.cs
- SafeHandle.cs
- XhtmlTextWriter.cs
- ScriptingAuthenticationServiceSection.cs
- ValidationUtility.cs
- DataServiceRequestOfT.cs
- Sentence.cs
- DynamicActionMessageFilter.cs
- TemplateControlCodeDomTreeGenerator.cs
- CatalogPartChrome.cs
- PageContentCollection.cs
- ArraySortHelper.cs
- GridViewDeletedEventArgs.cs
- PrimaryKeyTypeConverter.cs
- ProviderSettings.cs
- querybuilder.cs
- DbSetClause.cs
- MaskedTextProvider.cs
- ChangeInterceptorAttribute.cs
- XPathArrayIterator.cs
- RectangleHotSpot.cs
- DbProviderFactoriesConfigurationHandler.cs
- WebServiceTypeData.cs
- WorkflowClientDeliverMessageWrapper.cs
- ReliabilityContractAttribute.cs
- SetterBase.cs
- ToolStripControlHost.cs
- LocalizedNameDescriptionPair.cs
- HeaderUtility.cs
- StorageComplexPropertyMapping.cs
- CollectionAdapters.cs
- StoreItemCollection.Loader.cs
- ControlUtil.cs
- StateBag.cs
- DeviceContext.cs
- ExpressionLink.cs
- SystemThemeKey.cs
- BehaviorEditorPart.cs
- PropertyValidationContext.cs
- LogicalExpr.cs
- XpsImage.cs
- OutputCacheSettingsSection.cs
- ContextActivityUtils.cs
- EntitySqlQueryCacheEntry.cs
- ListViewSelectEventArgs.cs
- DefaultProxySection.cs
- SiteMapNodeItemEventArgs.cs
- ProcessThread.cs
- TriggerActionCollection.cs
- GenericXmlSecurityToken.cs
- CrossAppDomainChannel.cs
- DesignerDataTable.cs
- AuthenticateEventArgs.cs
- DataSourceSelectArguments.cs
- TemplatePartAttribute.cs
- HostingEnvironment.cs
- FeatureSupport.cs
- ComplexLine.cs
- WebControlsSection.cs
- ToolStripOverflow.cs
- XmlHierarchyData.cs
- Interfaces.cs
- GradientStopCollection.cs
- CompositeActivityTypeDescriptor.cs
- CqlLexer.cs
- SymmetricCryptoHandle.cs
- QuotedPrintableStream.cs
- PasswordTextContainer.cs
- PassportIdentity.cs
- CodeArrayIndexerExpression.cs
- AutomationProperty.cs
- LayoutManager.cs
- Timeline.cs