---
id: namedpipedescription
title: 命名管道描述
---

## 一、说明

“命名管道”又名“命名管线”（Named Pipes），是一种简单的进程间通信（IPC）机制，之前Microsoft Windows大都提供了对它的支持（但不包括Windows CE），但目前已经与.net可以跨平台使用。命名管道可在同一台计算机的不同进程之间或在跨越一个网络的不同计算机的不同进程之间，支持可靠的、单向或双向的数据通信。推荐用命名管道作为进程通信方案的一项重要的原因是它们充分利用了Windows内建的安全特性（ACL等）。

用命名管道来设计跨计算机应用程序实际非常简单，并不需要事先深入掌握底层网络传送协议（如TCP、UDP、IP、IPX）的知识。这是由于命名管道利用了微软网络提供者（MSNP）重定向器通过同一个网络在各进程间建立通信，这样一来，应用程序便不必关心网络协议的细节。

命名管道是一个具有名称，可以单向或双面在一个服务器和一个或多个客户端之间进行通讯的管道。命名管道的所有实例拥有相同的名称，但是每个实例都有其自己的缓冲区和句柄，用来为不同客户端通许提供独立的管道。使用实例可使多个管道客户端同时使用相同的命名管道。

命名管道的名称在本系统中是唯一的。

命名管道可以被任意符合权限要求的进程访问。

命名管道只能在本地创建。

命名管道的客户端可以是本地进程（本地访问：\.\pipe\PipeName）或者是远程进程（访问远程：\ServerName\pipe\PipeName）。

命名管道使用比匿名管道灵活，服务端、客户端可以是任意进程，匿名管道一般情况下用于父子进程通讯。


## 二、性能测试


如下图，创建了一个命名管道服务器和一个客户端，进行简单的接收，流速达到了6.5Gb/s，效率大概是tcp的三倍。且无任何GC。

<img src={require('@site/static/img/docs/namedpipeservice-2.gif').default}/>

[性能测试Demo](https://gitee.com/RRQM_Home/TouchSocket/tree/master/examples/NamedPipe/NamedPipeStressTestingConsoleApp)