OpenExpressApp控件 - 采用WCF作为分布式应用支持


由于CSLA数据门户支持WCF代理,所以这里我就很自然的使用了WCFProxy功能来作为分布式应用支持。在园子中有很多人对WCF如何使用都进行了细致的介绍,而且本人其实也只是了解WCF的皮毛而已,所以我这里就不作具体介绍,大家想从整体上了解如何使用WCF的可以上网去搜索一下。

  由于CSLA内置了WCF数据门户,所以在使用过程中只需要在服务器端和客户端进行简单配置既能够简单使用了。由于应用中可能会传输较大数据,所以会对修改一些配置以及添加压缩数据功能。本篇主要讲解一下与OpenExpressApp相关的WCF知识。

  服务器端配置

  在serviceModel中添加端口以及绑定、扩展等配置。下面配置为支持http和net.tcp协议。其中对一些参数进行了配置,如maxReceivedMessageSize等为了支持大数据量进行了配置。

 <system.serviceModel>
    <services>
      <!-- Before deployment, you should remove the returnFaults behavior configuration to avoid disclosing information in exception messages -->
      <service name="Csla.Server.Hosts.WcfPortal" behaviorConfiguration="returnFaults">
        <endpoint address="http://localhost:8000/GIX4" binding ="customBinding" bindingConfiguration="compactBinding" contract="Csla.Server.Hosts.IWcfPortal"/>
        <endpoint address="net.tcp://localhost:8001/GIX4" binding="netTcpBinding" bindingConfiguration="netTcp"  contract="Csla.Server.Hosts.IWcfPortal">
        </endpoint>
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8000/GIX4"/>
          </baseAddresses>
        </host>
      </service>
    </services>
    <bindings>
      <customBinding>
        <binding name="compactBinding" sendTimeout="00:10:00">
            <compactMessageEncoding>
                <binaryMessageEncoding>
                  <readerQuotas maxDepth="64" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
                </binaryMessageEncoding>
            </compactMessageEncoding>
          <httpTransport maxReceivedMessageSize="2147483647" />
        </binding>                                          
      </customBinding>
      <netTcpBinding>
        <binding name="netTcp"  maxReceivedMessageSize="2147483647">
          <readerQuotas maxDepth="64" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
        </binding>
      </netTcpBinding>
    </bindings>
     <extensions>
      <bindingElementExtensions>
        <add name="compactMessageEncoding" type="Amib.WCF.CompactMessageEncodingElement, CompactMessageEncoder, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      </bindingElementExtensions>
    </extensions>
  </system.serviceModel>
客户端配置

  首先在appSetting中添加CslaDataPortalProxyKey为Csla.DataPortalClient.WcfProxy, Csla,指定使用WCF数据门户

    <appSettings>
        <add key="CslaAuthentication" value="Csla" />
        <add key="CslaPropertyChangedMode" value="Xaml" />
        <add key="CslaDataPortalProxy" value="Csla.DataPortalClient.WcfProxy, Csla"/
    </appSettings>

  然后再在serviceModel中添加端口以及绑定、扩展等配置,这些都与服务器端配置对应。下面配置为支持http协议,你也可以配置为支持net.tcp协议,但好像CSLA中一次只能指定一个。

    <serviceModel>
        <!--<client>
       <endpoint name="WcfDataPortal"
                 address="net.tcp://localhost:8001/GIX4" 
                 binding="netTcpBinding" bindingConfiguration="netTcp"  
                 contract="Csla.Server.Hosts.IWcfPortal"/>
    </client>-->
        <client>
            <endpoint name="WcfDataPortal" address="http://localhost:8000/GIX4" binding="customBinding" bindingConfiguration="compactBinding" contract="Csla.Server.Hosts.IWcfPortal" />
        </client>
        <bindings>
            <customBinding>
                <binding name="compactBinding" sendTimeout="00:10:00">
                    <compactMessageEncoding>
                        <binaryMessageEncoding>
                            <readerQuotas maxDepth="64" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                        </binaryMessageEncoding>
                    </compactMessageEncoding>
                    <httpTransport maxReceivedMessageSize="2147483647" />
                </binding>
            </customBinding>
            <netTcpBinding>
                <binding name="netTcp" transferMode="Streamed" maxReceivedMessageSize="2147483647">
                    <readerQuotas maxDepth="64" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                </binding>
            </netTcpBinding>
        </bindings>
        <extensions>
            <bindingElementExtensions>
                <add name="compactMessageEncoding" type="Amib.WCF.CompactMessageEncodingElement, CompactMessageEncoder, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
            </bindingElementExtensions>
        </extensions>
    </system.serviceModel>



相关阅读:
DIV CSS制作网页时易犯的错误总结
Javascript 兼容firefox的一些问题
ReSaveRemoteFile函数之asp实现查找文件保存替换的代码
Oracle使用函数取得小数的整数部分
巧设卡巴斯基 保障系统安全步骤
php smarty 二级分类代码和模版循环例子
javascript代码加载优化方法
Windows2003 中怎样配置NAT服务器?
js 钻石棋网页游戏代码
教你Ubuntu下安装QT开发环境
详细介绍Windows的登录类型
使用自定义setTimeout和setInterval使之可以传递参数和对象参数
dedecms 5.6 缩略图按大小比例缩小裁剪
扩展Windows 服务器2008年评估期
快速导航

Copyright © 2016 phpStudy |