Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / AddIn / AddIn / System / Addin / Hosting / RemotingHelper.cs / 1305376 / RemotingHelper.cs
using System; using System.Collections.Generic; using System.Text; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Ipc; namespace System.AddIn.Hosting { internal static class RemotingHelper { // runtime initializes this to false; static bool CreatedInAD; static readonly Object s_lock = new Object(); internal static readonly String s_emptyGuid = Guid.Empty.ToString(); //// [System.Security.SecuritySafeCritical] [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Assert, Flags = System.Security.Permissions.SecurityPermissionFlag.RemotingConfiguration | System.Security.Permissions.SecurityPermissionFlag.Infrastructure)] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security","CA2116:AptcaMethodsShouldOnlyCallAptcaMethods")] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2129:SecurityTransparentCodeShouldNotReferenceNonpublicSecurityCriticalCode", Justification = "This is a SecurityRules.Level1 assembly, in which this rule is being incorrectly applied")] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2128:SecurityTransparentCodeShouldNotAssert", Justification = "This is a SecurityRules.Level1 assembly, in which this rule is being incorrectly applied")] internal static void InitializeClientChannel() { lock(s_lock) { if (CreatedInAD) // only one client channel per AD return; CreatedInAD = true; // make sure this hasn't been created already in this AD // BinaryServerFormatterSinkProvider serverProvider = new BinaryServerFormatterSinkProvider(); serverProvider.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full; BinaryClientFormatterSinkProvider clientProvider = new BinaryClientFormatterSinkProvider(); System.Collections.IDictionary props = new System.Collections.Hashtable(); props["name"] = "ClientChannel"; props["portName"] = Guid.NewGuid().ToString(); props["typeFilterLevel"] = "Full"; // When communicating between application domains on the same computer, the ipc channel is much faster than the tcp IChannel ichannel = new AddInIpcChannel(props, clientProvider, serverProvider); // ( ChannelServices.RegisterChannel(ichannel, false); } } // AddinServer is a singleton per process. It is created at process creation. // The AddinServer is the Marshaled class used to hook up the Client and Server remoting channel. //// // // // // // [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Justification = "Reviewed")] [System.Security.SecuritySafeCritical] internal static AddInServer GetAddInServer(string guid) { System.Diagnostics.Contracts.Contract.Requires(guid != null && guid != s_emptyGuid); return (AddInServer)Activator.GetObject(Type.GetType(@"System.AddIn.Hosting.AddInServer") , @"ipc://" + guid + @"/AddInServer"); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Collections.Generic; using System.Text; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Ipc; namespace System.AddIn.Hosting { internal static class RemotingHelper { // runtime initializes this to false; static bool CreatedInAD; static readonly Object s_lock = new Object(); internal static readonly String s_emptyGuid = Guid.Empty.ToString(); //// // [System.Security.SecuritySafeCritical] [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Assert, Flags = System.Security.Permissions.SecurityPermissionFlag.RemotingConfiguration | System.Security.Permissions.SecurityPermissionFlag.Infrastructure)] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security","CA2116:AptcaMethodsShouldOnlyCallAptcaMethods")] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2129:SecurityTransparentCodeShouldNotReferenceNonpublicSecurityCriticalCode", Justification = "This is a SecurityRules.Level1 assembly, in which this rule is being incorrectly applied")] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2128:SecurityTransparentCodeShouldNotAssert", Justification = "This is a SecurityRules.Level1 assembly, in which this rule is being incorrectly applied")] internal static void InitializeClientChannel() { lock(s_lock) { if (CreatedInAD) // only one client channel per AD return; CreatedInAD = true; // make sure this hasn't been created already in this AD // BinaryServerFormatterSinkProvider serverProvider = new BinaryServerFormatterSinkProvider(); serverProvider.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full; BinaryClientFormatterSinkProvider clientProvider = new BinaryClientFormatterSinkProvider(); System.Collections.IDictionary props = new System.Collections.Hashtable(); props["name"] = "ClientChannel"; props["portName"] = Guid.NewGuid().ToString(); props["typeFilterLevel"] = "Full"; // When communicating between application domains on the same computer, the ipc channel is much faster than the tcp IChannel ichannel = new AddInIpcChannel(props, clientProvider, serverProvider); // ( ChannelServices.RegisterChannel(ichannel, false); } } // AddinServer is a singleton per process. It is created at process creation. // The AddinServer is the Marshaled class used to hook up the Client and Server remoting channel. //// // // // // // [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2122:DoNotIndirectlyExposeMethodsWithLinkDemands", Justification = "Reviewed")] [System.Security.SecuritySafeCritical] internal static AddInServer GetAddInServer(string guid) { System.Diagnostics.Contracts.Contract.Requires(guid != null && guid != s_emptyGuid); return (AddInServer)Activator.GetObject(Type.GetType(@"System.AddIn.Hosting.AddInServer") , @"ipc://" + guid + @"/AddInServer"); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.//
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- UnsafeNativeMethods.cs
- SafeMarshalContext.cs
- StyleReferenceConverter.cs
- UserControlDocumentDesigner.cs
- RemotingException.cs
- OleDbMetaDataFactory.cs
- PresentationAppDomainManager.cs
- ResourcePool.cs
- WrapPanel.cs
- iisPickupDirectory.cs
- ProtectedConfigurationSection.cs
- RequestCachePolicyConverter.cs
- EditorZone.cs
- NullableDecimalAverageAggregationOperator.cs
- _AuthenticationState.cs
- ComplexLine.cs
- SimpleApplicationHost.cs
- SafeReversePInvokeHandle.cs
- PropagationProtocolsTracing.cs
- ControlParameter.cs
- ModulesEntry.cs
- DataGridColumnHeaderAutomationPeer.cs
- SystemBrushes.cs
- Transform3DGroup.cs
- InputLanguageManager.cs
- OletxCommittableTransaction.cs
- WebServiceErrorEvent.cs
- ApplicationProxyInternal.cs
- DefaultShape.cs
- ScrollBarAutomationPeer.cs
- CheckBoxRenderer.cs
- ContentPresenter.cs
- TemplateBuilder.cs
- CodeConstructor.cs
- BaseCodePageEncoding.cs
- ThicknessAnimationUsingKeyFrames.cs
- ServiceProviders.cs
- WebPartDescriptionCollection.cs
- Popup.cs
- LinearKeyFrames.cs
- ConfigXmlComment.cs
- TextMetrics.cs
- CodeNamespaceCollection.cs
- OleDbRowUpdatingEvent.cs
- WebPartsSection.cs
- ChameleonKey.cs
- SortFieldComparer.cs
- SpeakCompletedEventArgs.cs
- ListViewDataItem.cs
- SqlCacheDependencySection.cs
- COM2PictureConverter.cs
- DataGridViewToolTip.cs
- FormClosingEvent.cs
- LinkTarget.cs
- MessageQueueInstaller.cs
- KnownTypes.cs
- ClientSettingsProvider.cs
- ResourceReferenceKeyNotFoundException.cs
- ConfigurationPropertyCollection.cs
- MetadataHelper.cs
- XamlParser.cs
- JsonFormatWriterGenerator.cs
- MetadataProperty.cs
- SqlDataSourceStatusEventArgs.cs
- Cloud.cs
- ArraySet.cs
- StatusBarAutomationPeer.cs
- Empty.cs
- EntityDesignerUtils.cs
- PostBackOptions.cs
- HiddenField.cs
- DBCSCodePageEncoding.cs
- ContextBase.cs
- Point3DKeyFrameCollection.cs
- ChooseAction.cs
- FunctionDetailsReader.cs
- ActiveXMessageFormatter.cs
- BitSet.cs
- FigureHelper.cs
- CharacterBufferReference.cs
- OperationResponse.cs
- FlagsAttribute.cs
- ServiceContractGenerator.cs
- PerspectiveCamera.cs
- ThreadExceptionEvent.cs
- SimpleTypeResolver.cs
- BreakRecordTable.cs
- LinearGradientBrush.cs
- Int32KeyFrameCollection.cs
- Hyperlink.cs
- ResponseBodyWriter.cs
- RotateTransform.cs
- DataGridViewColumnCollection.cs
- GridSplitterAutomationPeer.cs
- LocalizableResourceBuilder.cs
- WebMethodAttribute.cs
- WebDescriptionAttribute.cs
- CipherData.cs
- PerformanceCounterManager.cs
- TaskFileService.cs