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
- RouteParser.cs
- StrongTypingException.cs
- ConnectionManagementElementCollection.cs
- ErrorInfoXmlDocument.cs
- WorkflowIdleElement.cs
- ActivationService.cs
- ToolboxItem.cs
- SecurityManager.cs
- RootBuilder.cs
- ObjectConverter.cs
- SHA512.cs
- ColorTransform.cs
- TemplateKeyConverter.cs
- PageBuildProvider.cs
- ExtensionQuery.cs
- Filter.cs
- MultipleViewProviderWrapper.cs
- HttpDebugHandler.cs
- XhtmlBasicImageAdapter.cs
- EntityProviderServices.cs
- ScriptComponentDescriptor.cs
- StringUtil.cs
- MimeXmlReflector.cs
- CodeMethodReturnStatement.cs
- ControlValuePropertyAttribute.cs
- OrderPreservingPipeliningSpoolingTask.cs
- MSHTMLHost.cs
- GeometryDrawing.cs
- Utils.cs
- MultiBinding.cs
- StoreItemCollection.cs
- DocComment.cs
- ConnectionInterfaceCollection.cs
- MenuEventArgs.cs
- DateTimeParse.cs
- SqlExpander.cs
- RulePatternOps.cs
- DPTypeDescriptorContext.cs
- ButtonFlatAdapter.cs
- __TransparentProxy.cs
- _Events.cs
- PageBreakRecord.cs
- Baml2006SchemaContext.cs
- DataGridViewCellStyleContentChangedEventArgs.cs
- BitmapDecoder.cs
- RequestCacheManager.cs
- CompiledRegexRunnerFactory.cs
- loginstatus.cs
- ReverseQueryOperator.cs
- WebSysDescriptionAttribute.cs
- errorpatternmatcher.cs
- SecurityDescriptor.cs
- WithParamAction.cs
- FontNamesConverter.cs
- VirtualPathUtility.cs
- HwndHostAutomationPeer.cs
- NetworkInterface.cs
- PageRequestManager.cs
- DSACryptoServiceProvider.cs
- TreeNodeMouseHoverEvent.cs
- TcpClientChannel.cs
- smtppermission.cs
- SafeFileMappingHandle.cs
- TableCellsCollectionEditor.cs
- LocalizationComments.cs
- AutoCompleteStringCollection.cs
- TransactionChannelListener.cs
- SamlSecurityToken.cs
- SessionSwitchEventArgs.cs
- HiddenField.cs
- PrincipalPermission.cs
- ProfessionalColorTable.cs
- SmiEventSink_Default.cs
- DataGridView.cs
- PolicyImporterElementCollection.cs
- NameSpaceEvent.cs
- PrimarySelectionAdorner.cs
- CustomValidator.cs
- ImportOptions.cs
- PermissionListSet.cs
- Bold.cs
- SmtpNetworkElement.cs
- ConnectionStringSettingsCollection.cs
- LogReserveAndAppendState.cs
- XmlDataSourceNodeDescriptor.cs
- UnauthorizedWebPart.cs
- StateManagedCollection.cs
- ConnectivityStatus.cs
- SmtpFailedRecipientsException.cs
- XmlDataSource.cs
- WizardPanel.cs
- HtmlSelect.cs
- ComNativeDescriptor.cs
- TreeNode.cs
- XmlQueryStaticData.cs
- OleDbRowUpdatingEvent.cs
- GrammarBuilderBase.cs
- SqlInternalConnectionTds.cs
- AsymmetricAlgorithm.cs
- Parallel.cs