第四章 绑定 本机.NET应用程序间的通信

本文介绍了Windows Communication Foundation (WCF) 中的netNamedPipeBinding绑定如何支持进程间及进程内的通信,包括其配置属性与使用示例。netNamedPipeBinding绑定通过命名管道实现了高效的本地通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进程间,跨进程,通信就是在同一台机器上的两个独立进程间的通信。进程内,或者在进程中,通信就是在一个进程内两个软件模块的通信。这些通信类型一起组成了我们所称的本机通信。

应用程序域是通过进一步对一个Windows进程拆分并将多个.NET应用程序在安全性和活动范围层次进行隔离的.NET中的架构。这意味着应用程序域是另一个可以被.NET程序跨越的边界。因为这些我们定义了两个额外的名词: 应用程序域间和内部应用程序域。

                应用程序域间或者跨应用程序域。在同一个Windows进程内运行的独立应用程序域是两个.NET应用程序进行通信的场所。也可以在一个单独的设计可以运行多个应用程序域的.NET应用程序中进行通信。

                应用程序域内或者在应用程序域中.  在一个单独的应用程序域中运行的一个单独.NET应用程序也是进行通信的场所。为了便于讨论,把一个应用程序域想象成在一个Windows进程中运行的一个或多个.NET进程。

WCF并不对进程间,进程内,应用程序域内和应用程序域间的通信加以区分。相反的,WCF提供一个基于命名管道的机上传输信道。命名管道是WindowsUnix环境中标准的进程间通信(IPC)的实现方式。WCF开发组考虑了一个进程内部的绑定但是最后认为对大多数情况来说它不是必要的。不要去关注这个决定本身,因为在功能性上并没有丢失。在一个命名管道和一个真正的进程内绑定的差别在于性能。

命名管道绑定的性能比大多数进程内部通信情况都要好很多。如果你发现一个单独的机上信道不是很全面。你可以使用自定义传输信道创建一个自定义绑定。查看后续章节的创建一个自定义绑定来获得关于创建一个自定义绑定的更多信息。

netNamedPipeBinding

WCF通过netNamedPipeBinding绑定来支持进程间和进程内通信场景。netNamedPipeBinding绑定利用一个命名管道传输。由于在WCF中相对其他标准绑定来说它提供了重要的性能增长,所以它非常适合进程间通信(IPC). 查看接下来的比较绑定性能和扩展性章节来获得一个比较快捷的性能比较。

提示  WCF限定netNamedPipeBinding绑定到本机通信!

尽管可以在网络间使用命名管道来通信,WCF却限制了命名管道只能用于本机通信。这意味着netNamedPipeBinding绑定(任何基于namedPipeTransport绑定元素的绑定)可以用来确定你的服务在网络上不可访问。这是通过两个架构实现的。首先,网络安全鉴定符(SID:S-1-5-2)无权限访问命名管道。其次,命名管道的名字随时生成并存储在共享内存中,所以只有本机客户端才可以访问它。

使用netNamedPipeBinding绑定的地址如下格式:

net.pipe://localhost/{service location}

4.4 显示了netNamedPipeBinding绑定可以配置的绑定属性。netNamedPipeBinding绑定的一个重要属性是maxConnections.这个属性限制了访问终结点的连接数目。默认值是10。为了最大化吞吐量这需要增加。

4.4 netNamedPipeBinding 绑定属性

属性名

描述

默认值

closeTimeout

等待连接关闭的最大时间.

00:01:00

hostNameComparisonMode

当截取URIs时,确定主机名比较的方法。

StrongWildCard

maxBufferPoolSize

传输中使用的任意缓冲池的最大尺寸。

524,888

maxBufferSize

在内存中用来缓存接收到消息的最大字节数。

65,536

maxConnections

接入/接出的最大连接数目。接入/接出连接独立计算。

10

maxReceivedMessageSize

接收到的消息的最大长度

65,536

name

绑定名称.

 

openTimeout

等待打开操作完成的最大时间。

00:01:00

readerQuotas

确定可以处理消息的复杂度(比如,大小)

n/a

receiveTimeout

等待接收操作完成的最大时间。

00:01:00

security

确定绑定的安全设置。

n/a

sendTimeout

等待发送操作完成的最大时间。

00:01:00

transactionFlow

允许事务从客户端流转到服务端

false

transactionProtocol

事务支持的类型,OleTransactionsWSAtomicTransactions.

OleTransactions

n/a- 意思是这个设置是一个子节点元素,需要多个属性设置或者除非另外属性被设置否则不会起作用。

下面的配置信息是用来与通过4.4中列表4.2显示的样例的一起工作的。列表4.9 中的配置信息暴露了使用netNamedPipeBinding绑定的StockQuoteService服务。

列表4.9 netNamedPipeBinding宿主配置


 

 

列表4.10 显示了使用列表4.9中显示的使用netNamedPipeBinding绑定的服务的客户端。

列表4.10 netNamedPipeBinding客户端配置

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值