Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从低级的角度来看,Windows中命名管道和远程过程调用(RPC)之间有什么区别?_Windows_Winapi_Rpc_Named Pipes - Fatal编程技术网

从低级的角度来看,Windows中命名管道和远程过程调用(RPC)之间有什么区别?

从低级的角度来看,Windows中命名管道和远程过程调用(RPC)之间有什么区别?,windows,winapi,rpc,named-pipes,Windows,Winapi,Rpc,Named Pipes,我试图了解微软的vs实现的底层架构。据我所知,两者都可用于本地网络上应用程序之间的客户机/服务器通信。但是为什么我会选择一个而不是另一个呢 另外,RPC是构建在命名管道之上的更高级别实现,还是反之亦然?我还试图看看哪一个开销更小。命名管道是一个通信通道,但它们没有指定要发送的数据(在许多方面,它们非常类似于IP之上的TCP或UDP) 另一方面,RPC接口指定成功通信所需的数据以及通信将产生的数据 请注意,RPC能够使用大量通信通道,命名管道只是可能的选项之一。当然,RPC是在命名管道或其他(通常

我试图了解微软的vs实现的底层架构。据我所知,两者都可用于本地网络上应用程序之间的客户机/服务器通信。但是为什么我会选择一个而不是另一个呢


另外,RPC是构建在命名管道之上的更高级别实现,还是反之亦然?我还试图看看哪一个开销更小。

命名管道是一个通信通道,但它们没有指定要发送的数据(在许多方面,它们非常类似于IP之上的TCP或UDP)

另一方面,RPC接口指定成功通信所需的数据以及通信将产生的数据


请注意,RPC能够使用大量通信通道,命名管道只是可能的选项之一。

当然,RPC是在命名管道或其他(通常的[a]lpc端口)传输之上构建的更高级别的实现。@RbMm:感谢您的澄清。我也很好奇,对于命名管道,它们使用什么样的运输系统?它只是普通的TCP/IP吗?任何内置加密?查找-在大多数情况下使用的ncalrpc协议(本地过程调用[a]lpc)。如果选择“ncacn\u np”,则使用命名管道。还要查找命名管道它们使用什么类型的传输系统-系统中存在特殊驱动程序-npfs.sys-他实现命名管道,即在it设备上打开的文件。当您向命名管道文件系统写入数据时,所有这些都与TCP/IPin一般无关—将数据复制到内核内存中的缓冲区。当有人从这个管道读取数据时,npfs将数据从这个内核缓冲区复制到用户缓冲区(从readfile)。谢谢。但是,从某种意义上说,如果命名管道是比RPC低级别的实现,那么它们也必须基于某种东西(对于远程服务器连接)。这不是TCP,还是内部UDP?不,命名管道协议可以位于IP之上(对于任何最新版本的Windows来说,这都是可能的选择),但它不需要TCP或UDP。NP还可以使用其他(主要是本地)协议,如IPX来传输帧。