WCF 配置服务 演示

作者:jiankunking 出处:http://blog.csdn.net/jiankunking


1、搭建IIS(具体步骤略)

2、服务契约如下:
namespace JianKunKing.NewVersion.Service
{
    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“NewVersionService”。
    //[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class NewVersionService : INewVersionService
    {
        NewVersionManager newVersionManager = new NewVersionManager();
        public string GetHello()
        {
            return newVersionManager.GetHello();
        }
    }
}

3、WCF客户端引用服务:


4、客户端调用


重点来了:

客户端配置文件:

<?xml version="1.0"?>
<configuration>
  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_INewVersionService" closeTimeout="00:01:00"
                      openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                      allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                      maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
                      messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                      useDefaultWebProxy="true">
          <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647"
              maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
          <security mode="None">
            <transport clientCredentialType="None" proxyCredentialType="None"
                realm="" />
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>
        </binding>

      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint
        address="http://192.168.XX.XX/JianKunKingServer/NewVersionService.svc"
        binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_INewVersionService"
        contract="NewVersionClient.INewVersionService" name="BasicHttpBinding_INewVersionService" />
    </client>
  </system.serviceModel>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
</configuration>


WCF服务客户端配置文件的契约由以下两部分组成:
1、Client的服务引用
2、WCF服务接口(就是平时说的WCF契约)

服务端配置文件Web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
	<system.web>
		<compilation debug="true" targetFramework="4.0" />
	</system.web>
	<system.serviceModel>
		<bindings>
			<basicHttpBinding>
				<binding 
				name="MyServiceBinding"  
				maxBufferSize="2147483647" 
				maxReceivedMessageSize="2147483647" >
					<readerQuotas 
					maxArrayLength="2147483647" 
					maxBytesPerRead="2147483647" 
					maxDepth="2147483647" 
					maxNameTableCharCount="2147483647" 
					maxStringContentLength="2147483647"/>
				</binding>
			</basicHttpBinding>
		</bindings>
		<services>
			<service name="JianKunKing.NewVersion.Service.NewVersionService">
				<endpoint 
				address="" 
				binding="basicHttpBinding" 
				bindingConfiguration="MyServiceBinding" 
				contract="JianKunKing.NewVersion.Service.INewVersionService">
				</endpoint>			
			</service>
		</services>
		<behaviors>
			<serviceBehaviors>
				<behavior>
					<!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false 并删除上面的元数据终结点 -->
					<serviceMetadata httpGetEnabled="true"/>
					<!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 -->
					<serviceDebug includeExceptionDetailInFaults="false"/>
				</behavior>
			</serviceBehaviors>
		</behaviors>
		<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
	</system.serviceModel>
	<system.webServer>
		<modules runAllManagedModulesForAllRequests="true"/>
	</system.webServer>
</configuration>

WCF服务实现多个契约的时候 :

public class RightManagementServer : IRightManagementServer,IUserRightService
服务端config配置:

 <service name="JianKunKing.Test.Service.RightManagementServer">
	<endpoint 
			address="" 
			binding="basicHttpBinding" 
			bindingConfiguration="MyServiceBinding" 
			contract="JianKunKing.Test.Service.IRightManagementServer">
	</endpoint>		
	<endpoint 
			address="" 
			binding="basicHttpBinding" 
			bindingConfiguration="MyServiceBinding" 
			contract="JianKunKing.Test.Service.IUserRightService">
	</endpoint>			
</service>

WCF配置演示源码:点击打开链接

WCF 配置服务介绍:点击打开链接

在一个服务器端A调用另一个服务端B的Client,比如:
服务器A是搜索引擎服务器,服务端B是数据库服务器(这两个服务器可以是物理上的一台机器也可以是物理上的两台机器),这两个服务器都有自己WCF的服务端及Client端,在搜索引擎服务器的一部分操作需要操作操作数据库,此时需要调用数据库服务器的Client来操作数据,搜索引擎服务器的具体配置如下:


<?xml version="1.0" encoding="utf-8"?>
<configuration>
	<connectionStrings>
		<add name="JianKunKingSystemDBConnenction" connectionString="Data Source=127.0.0.1;Initial Catalog=JianKunKingDBtest;Persist Security Info=True;User ID=a;Password=a" providerName="System.Data.SqlClient" />
	</connectionStrings>
	<system.web>
		<compilation debug="true" targetFramework="4.0" />
	</system.web>
	<system.serviceModel>
		<bindings>
			<basicHttpBinding>			
				<binding name="JianKunKingServiceBinding" closeTimeout="10:01:00"
                  openTimeout="10:01:00" receiveTimeout="10:10:00" sendTimeout="10:01:00"
                  allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                  maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
                  messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                  useDefaultWebProxy="true">
					<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647"
              maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
					<security mode="None">
						<transport clientCredentialType="None" proxyCredentialType="None"
                realm="" />
						<message clientCredentialType="UserName" algorithmSuite="Default" />
					</security>
				</binding>
			</basicHttpBinding>
		</bindings>
		<client>
			<endpoint address="http://127.0.0.1:8088/JianKunKingService/SearchEngineDataBaseService.svc" 
			binding="basicHttpBinding" 
			bindingConfiguration="JianKunKingServiceBinding" 
			contract="DataBaseService.ISearchEngineDataBaseService" />
		</client>
		<behaviors>
			<serviceBehaviors>
				<behavior>
					<!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false 并删除上面的元数据终结点 -->
					<serviceMetadata httpGetEnabled="true" />
					<!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 -->
					<serviceDebug includeExceptionDetailInFaults="true" />
				</behavior>
			</serviceBehaviors>
		</behaviors>
		<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
	</system.serviceModel>
	<system.webServer>
		<modules runAllManagedModulesForAllRequests="true" />
		<directoryBrowse enabled="true" />
	</system.webServer>
</configuration>


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值