上回问同一机器两.net进程通信方式比较有效,高人推荐WCF。
问题就来了,WCF的TCP、Http的方式很容易实现,但是我想用的管道pipe方式就始终有问题问题的表现是在控制台的Client里Add Service报错。一时之间也说不清楚,我想把代码发上来,求高人指正!VS2008 C#

解决方案 »

  1.   

    每种传输方式的优点本节介绍在三种主要传输方式中选择其中之一的主要理由,包括一个用于进行选择的详细决策表。
    适合使用 HTTP 传输的情况HTTP 是客户端与服务器之间的一个请求/响应协议。最常见的应用程序包括与 Web 服务器进行通信的 Web 浏览器客户端。该客户端向服务器发送一个请求,服务器侦听客户端请求消息。当服务器接收到一个请求时,会返回响应,其中包含请求的状态。如果成功,将返回可选数据,如网页、错误消息或其他信息。有关 HTTP 协议的更多信息,请参见 HTTP - 超文本传输协议(可能为英文网页)。HTTP 协议不是基于连接的 - 一旦发送了响应,就不会再维护任何状态。要处理多页事务,应用程序必须持续保持任何必要的状态。在 WCF 中,HTTP 传输绑定针对与旧式非 WCF 系统的互操作性进行了优化。如果所有通信方都使用的是 WCF,则使用基于 TCP 或基于命名管道的绑定会更快。有关更多信息,请参见 NetTcpBinding 和 NetNamedPipeBinding。
    适合使用 TCP 传输的情况TCP 是一个基于连接、面向流的传递服务,具有端对端错误检测和更正功能。“基于连接”表示在交换数据前建立主机之间的一个通信会话。主机是 TCP/IP 网络上由逻辑 IP 地址标识的任意设备。TCP 提供可靠的数据传递,并且易于使用。具体地说,TCP 会通知发送方开始传递包,保证按发送时同样的顺序传递这些包,重新传送丢失的包,并确保数据包不重复。请注意,这种可靠的传递方式适用于两个 TCP/IP 节点之间,与 WS-ReliableMessaging 不一样,后者适用于两个终结点之间,而不考虑它们可能包括多少个中间点。WCF TCP 传输已针对通信的两端均使用 WCF 的情形进行了优化。对于涉及不同计算机之间的通信的情形,此绑定是最快的 WCF 绑定。消息交换使用 BinaryMessageEncodingBindingElement 来实现优化的消息传输。TCP 提供双工通信,因此可以用于实现双工协定,即使客户端位于网络地址转换 (NAT) 的后端也没有关系。
    适合使用命名管道传输的情况命名管道是 Windows 操作系统内核中的一个对象,例如,进程可用于通信的一个共享内存区段。命名管道具有一个名称,可用于单一计算机上的进程之间的单向或双工通信。当一台计算机上的不同 WCF 应用程序之间要求通信,并且您希望阻止来自另一台计算机的任何通信时,请使用命名管道传输。另一个限制就是:从 Windows 远程桌面运行的进程可能只能用于同一 Windows 远程桌面会话,除非它们具有提升的特权。
      

  2.   

    命名管道是 Windows 操作系统内核中的一个对象,例如,进程可用于通信的一个共享内存区段。命名管道具有一个名称,可用于单一计算机上的进程之间的单向或双工通信。
      

  3.   


    不好意思,恕本人愚钝,没明白您的意思我的代码在这里
    http://mail.qq.com/cgi-bin/ftnExs_download?k=61646431aa03cdccea0172271763001c0b555408005505001e525001024e0604525749500457021e035705540557505700525652317d32647022375443155b5056270b5f570a557541050a5a69167e565a4a16504363&t=exs_ftn_download&code=3dd11c23
      

  4.   

    用remoting实现IPC管道通信,因为跨进程通信,用这个会很快,实现起来也不难,楼主可以考虑一下。
      

  5.   


    remoting我已经实现过了只是高人建议试试WCF的管道,可是我总是用不了……
      

  6.   

    不要用VS的Add Service功能,用xml配置服务试试.
      

  7.   

    搞定了,要配置元数据的一直没搞明白什么是元数据至于WCF和remoting
    我觉得remoting使用起来很方便,不用中间公共对象集了。
    服务端改变,客户端更新一下就行了
    还是喜欢WCF,配置方便