zoukankan      html  css  js  c++  java
  • WCF 第四章 绑定 本机.NET应用程序间的通信

    进程间,跨进程,通信就是在同一台机器上的两个独立进程间的通信。进程内,或者在进程中,通信就是在一个进程内两个软件模块的通信。这些通信类型一起组成了我们所称的本机通信。
    应用程序域是通过进一步对一个Windows进程拆分并将多个.NET应用程序在安全性和活动范围层次进行隔离的.NET中的架构。这意味着应用程序域是另一个可以被.NET程序跨越的边界。因为这些我们定义了两个额外的名词: 应用程序域间和内部应用程序域。
         应用程序域间或者跨应用程序域。在同一个Windows进程内运行的独立应用程序域是两个.NET应用程序进行通信的场所。也可以在一个单独的设计可以运行多个应用程序域的.NET应用程序中进行通信。
         应用程序域内或者在应用程序域中.  在一个单独的应用程序域中运行的一个单独.NET应用程序也是进行通信的场所。为了便于讨论,把一个应用程序域想象成在一个Windows进程中运行的一个或多个.NET进程。
    WCF并不对进程间,进程内,应用程序域内和应用程序域间的通信加以区分。相 反的,WCF提供一个基于命名管道的机上传输信道。命名管道是Windows和Unix环境中标准的进程间通信(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 绑定属性
     
    n/a- 意思是这个设置是一个子节点元素,需要多个属性设置或者除非另外属性被设置否则不会起作用。
    下面的配置信息是用来与通过4.4中列表4.2显示的样例的一起工作的。列表4.9 中的配置信息暴露了使用netNamedPipeBinding绑定的StockQuoteService服务。
    列表4.9 netNamedPipeBinding宿主配置 
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <system.serviceModel>
            <services>
                <service behaviorConfiguration="" name="EssentialWCF.StockQuoteService">
                    <endpoint binding="netNamedPipeBinding" bindingConfiguration=""
                        contract="EssentialWCF.IStockQuoteService" />
                    <host>
                        <baseAddresses>
                            <add baseAddress="net.pipe://localhost/stockquoteservice" />
                        </baseAddresses>
                    </host>
                </service>
            </services>
        </system.serviceModel>
    </configuration>
    列表4.10 显示了使用列表4.9中显示的使用netNamedPipeBinding绑定的服务的客户端。
    列表4.10 netNamedPipeBinding客户端配置
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <system.serviceModel>
            <bindings />
            <client>
                <endpoint address="net.pipe://localhost/stockquoteservice" binding="netNamedPipeBinding"
                    bindingConfiguration="" contract="EssentialWCF.IStockQuoteService"
                    name="" />
            </client>
        </system.serviceModel>
    </configuration>


    ===============

    转载自

     

  • 相关阅读:
    windows 11下载地址
    ubuntu 安装无线网卡驱动
    修复因为安装openssl 1.0.0而导致使用ssh和scp产生警告信息
    vim下Java自动补全插件javacomplete
    mysql 配置多实例(mysqld_multi)
    nagios 整合 ganglia 设置邮件、短信报警
    Linux (ubuntu 10.10) 安装两个MySQL
    HDU 3269 P2P File Sharing System
    ubuntu 10.10 安装 sun java
    闲逛计算机系统(一):从HelloWorld说起
  • 原文地址:https://www.cnblogs.com/llbofchina/p/2092995.html
Copyright © 2011-2022 走看看