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
- HostingEnvironment.cs
- XmlSchemaComplexContent.cs
- XmlSchemaExternal.cs
- RootBrowserWindowProxy.cs
- WebRequestModuleElementCollection.cs
- NotifyParentPropertyAttribute.cs
- Common.cs
- KeyNotFoundException.cs
- SortedDictionary.cs
- XmlComplianceUtil.cs
- ResourceDictionary.cs
- ConfigurationManagerInternalFactory.cs
- IssuedTokenClientElement.cs
- LineInfo.cs
- LoadMessageLogger.cs
- EventHandlersStore.cs
- DataGridViewCellMouseEventArgs.cs
- SrgsElementFactoryCompiler.cs
- DownloadProgressEventArgs.cs
- PlainXmlSerializer.cs
- _SecureChannel.cs
- FieldNameLookup.cs
- Soap11ServerProtocol.cs
- nulltextnavigator.cs
- ControlTemplate.cs
- JumpList.cs
- ProtocolsConfiguration.cs
- SizeAnimationBase.cs
- ValueChangedEventManager.cs
- EmptyStringExpandableObjectConverter.cs
- UnknownExceptionActionHelper.cs
- Variant.cs
- ObjectTag.cs
- SizeAnimationClockResource.cs
- x509utils.cs
- IntSecurity.cs
- SubMenuStyle.cs
- WorkflowMarkupElementEventArgs.cs
- XmlUnspecifiedAttribute.cs
- DesignerLoader.cs
- FeedUtils.cs
- JournalEntryStack.cs
- BufferedReadStream.cs
- IISMapPath.cs
- SelectedCellsChangedEventArgs.cs
- MarkupObject.cs
- XmlException.cs
- OLEDB_Enum.cs
- cryptoapiTransform.cs
- CellIdBoolean.cs
- Vector.cs
- Stroke.cs
- StatusBarItemAutomationPeer.cs
- ContentOperations.cs
- ValueTypeFixupInfo.cs
- HandlerWithFactory.cs
- Number.cs
- HttpCacheParams.cs
- MouseGesture.cs
- HandlerBase.cs
- ObjRef.cs
- PreservationFileWriter.cs
- PageCodeDomTreeGenerator.cs
- SmiConnection.cs
- InputEventArgs.cs
- ErrorTableItemStyle.cs
- ToolStripContainer.cs
- AQNBuilder.cs
- JsonXmlDataContract.cs
- XmlSerializerOperationBehavior.cs
- Positioning.cs
- TemplateContent.cs
- IPCCacheManager.cs
- EntityDataSourceStatementEditorForm.cs
- DataServiceProcessingPipelineEventArgs.cs
- SerialStream.cs
- FixedBufferAttribute.cs
- MailSettingsSection.cs
- UnconditionalPolicy.cs
- PngBitmapDecoder.cs
- _SslSessionsCache.cs
- DataTableCollection.cs
- DataGridViewAutoSizeModeEventArgs.cs
- OleDbConnection.cs
- HwndKeyboardInputProvider.cs
- ImmComposition.cs
- Rectangle.cs
- AnimatedTypeHelpers.cs
- XmlNamespaceManager.cs
- ReadOnlyDictionary.cs
- BinaryMethodMessage.cs
- AddToCollection.cs
- TokenBasedSetEnumerator.cs
- QilIterator.cs
- RemoteWebConfigurationHost.cs
- MSAAEventDispatcher.cs
- Privilege.cs
- TextWriterTraceListener.cs
- DataGridViewHitTestInfo.cs
- EUCJPEncoding.cs