小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

WCF客戶端動態(tài)設置WCF服務器主機的地址的方法參考,可以連接多個相同WCF主機的方法

 伊本經(jīng)閣 2012-04-13

 最近做一個項目,需要在客戶端靈活配置連接到哪個服務器的功能,例如客戶端是一個,現(xiàn)在想連接A服務器就連A服務器,想連接B服務器就連接B服務器,當然不需要手動修改配置文件,直接通過程序來實現(xiàn)WCF目標主機的配置功能。

   參考核心代碼如下:

//--------------------------------------------------------------------
// All Rights Reserved , Copyright (C) 2011 , Hairihan TECH, Ltd. 
//--------------------------------------------------------------------

using System.ServiceModel;

namespace DotNet.WCFClient
{
    
using DotNet.IService;
    
using DotNet.Utilities;

    
/// <summary>
    
/// ServiceFactory
    
/// 本地服務的具體實現(xiàn)接口
    
/// 
    
/// 修改紀錄
    
/// 
    
///        2011.07.03 版本:2.0 JiRiGaLa 可以動態(tài)指定服務器地址的調(diào)用方法。
    
///        2009.09.20 版本:1.0 JiRiGaLa 創(chuàng)建。
    
///        
    
/// 版本:2.0
    
///
    
/// <author>
    
///        <name>JiRiGaLa</name>
    
///        <date>2011.07.03</date>
    
/// </author> 
    
/// </summary>
    public class ServiceFactory : IServiceFactory
    {
        
private string host = string.Empty;
        
/// <summary>
        
/// 主機地址
        
/// Host = "192.168.0.122";
        
/// </summary>
        public string Host
        {
            
get
            {
                
return host;
            }
            
set
            {
                host 
= value;
            }
        }

        
private int port = 0;
        
/// <summary>
        
/// 端口號
        
/// </summary>
        public int Port
        {
            
get
            {
                
return port;
            }
            
set
            {
                port 
= value;
            }
        }

        
public ServiceFactory()
        {
        }

        
/// <summary>
        
/// 初始化服務
        
/// </summary>
        public void InitService()
        {
        }

        
/// <summary>
        
/// 動態(tài)設定WCF主機地址端口的方法
        
/// </summary>
        
/// <param name="address">主機地址</param>
        
/// <returns>主機地址</returns>
        public virtual EndpointAddress GetHotsUrl(EndpointAddress address)
        {
            
// 若當前配置都是空的,就不用生成新的URL了。
            if (string.IsNullOrEmpty(Host) && (Port == 0))
            {
                
return address;
            }
            
// 判斷當前配置的情況
            string endpointAddress = string.Empty;
            
if (string.IsNullOrEmpty(Host))
            {
                Host 
= address.Uri.Host;
            }
            
if (Port == 0)
            {
                Port 
= address.Uri.Port;
            }
            endpointAddress 
= address.Uri.Scheme + "://" + Host + ":" + Port.ToString() + address.Uri.LocalPath;
            address 
= new EndpointAddress(endpointAddress);
            
return address;
        }

        
public virtual ISequenceService CreateSequenceService()
        {
            ChannelFactory
<ISequenceService> channelFactory = new ChannelFactory<ISequenceService>("DotNet.Service.SequenceService");
            channelFactory.Endpoint.Address 
= GetHotsUrl(channelFactory.Endpoint.Address);
            
// 加強安全驗證防止未授權匿名調(diào)用
            channelFactory.Credentials.UserName.UserName = BaseSystemInfo.ServiceUserName;
            channelFactory.Credentials.UserName.Password 
= BaseSystemInfo.ServicePassword;
            ISequenceService proxy 
= channelFactory.CreateChannel();
            
return proxy;
        }

       }
    }
}

   配套的配置文件參考如下:

<?xml version="1.0"?>
<configuration>
  
<system.serviceModel>
    
<client>
      
<endpoint address="net.tcp://jirigala-PC:8888/DotNet.Service/ExceptionService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IExceptionService" name="DotNet.Service.ExceptionService"></endpoint>
      
<endpoint address="net.tcp://jirigala-PC:8888/DotNet.Service/FileService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IFileService" name="DotNet.Service.FileService"></endpoint>
      
<endpoint address="net.tcp://jirigala-PC:8888/DotNet.Service/FolderService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IFolderService" name="DotNet.Service.FolderService"></endpoint>
      
<endpoint address="net.tcp://jirigala-PC:8888/DotNet.Service/ItemDetailsService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IItemDetailsService" name="DotNet.Service.ItemDetailsService"></endpoint>
      
<endpoint address="net.tcp://jirigala-PC:8888/DotNet.Service/ItemsService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IItemsService" name="DotNet.Service.ItemsService"></endpoint>
      
<endpoint address="net.tcp://jirigala-PC:8888/DotNet.Service/LogOnService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.ILogOnService" name="DotNet.Service.LogOnService"></endpoint>
      
<endpoint address="net.tcp://jirigala-PC:8888/DotNet.Service/LogService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.ILogService" name="DotNet.Service.LogService"></endpoint>
      
<endpoint address="net.tcp://jirigala-PC:8888/DotNet.Service/MessageService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IMessageService" name="DotNet.Service.MessageService"></endpoint>
      
<endpoint address="net.tcp://jirigala-PC:8888/DotNet.Service/ModuleService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IModuleService" name="DotNet.Service.ModuleService"></endpoint>
      
<endpoint address="net.tcp://jirigala-PC:8888/DotNet.Service/OrganizeService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IOrganizeService" name="DotNet.Service.OrganizeService"></endpoint>
      
<endpoint address="net.tcp://jirigala-PC:8888/DotNet.Service/ParameterService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IParameterService" name="DotNet.Service.ParameterService"></endpoint>
      
<endpoint address="net.tcp://jirigala-PC:8888/DotNet.Service/PermissionItemService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IPermissionItemService" name="DotNet.Service.PermissionItemService"></endpoint>
      
<endpoint address="net.tcp://jirigala-PC:8888/DotNet.Service/PermissionService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IPermissionService" name="DotNet.Service.PermissionService"></endpoint>
      
<endpoint address="net.tcp://jirigala-PC:8888/DotNet.Service/RoleService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IRoleService" name="DotNet.Service.RoleService"></endpoint>
      
<endpoint address="net.tcp://jirigala-PC:8888/DotNet.Service/SequenceService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.ISequenceService" name="DotNet.Service.SequenceService"></endpoint>
      
<endpoint address="net.tcp://jirigala-PC:8888/DotNet.Service/StaffService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IStaffService" name="DotNet.Service.StaffService"></endpoint>
      
<endpoint address="net.tcp://jirigala-PC:8888/DotNet.Service/UserService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IUserService" name="DotNet.Service.UserService"></endpoint>
      
<endpoint address="net.tcp://jirigala-PC:8888/DotNet.Service/BusinessDbHelperService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IDbHelperService" name="DotNet.Service.BusinessDbHelperService"></endpoint>
      
<endpoint address="net.tcp://jirigala-PC:8888/DotNet.Service/UserCenterDbHelperService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IDbHelperService" name="DotNet.Service.UserCenterDbHelperService"></endpoint>
      
<endpoint address="net.tcp://jirigala-PC:8888/DotNet.Service/WorkFlowActivityAdminService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IWorkFlowActivityAdminService" name="DotNet.Service.WorkFlowActivityAdminService"></endpoint>
      
<endpoint address="net.tcp://jirigala-PC:8888/DotNet.Service/WorkFlowCurrentService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IWorkFlowCurrentService" name="DotNet.Service.WorkFlowCurrentService"></endpoint>
      
<endpoint address="net.tcp://jirigala-PC:8888/DotNet.Service/WorkFlowProcessAdminService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.IWorkFlowProcessAdminService" name="DotNet.Service.WorkFlowProcessAdminService"></endpoint>
      
<endpoint address="net.tcp://jirigala-PC:8888/DotNet.Service/TableColumnsService/" binding="netTcpBinding" bindingConfiguration="netTcpBindingSmiple" contract="DotNet.IService.ITableColumnsService" name="DotNet.Service.TableColumnsService"></endpoint>
    
</client>

    
<bindings>
      
<netTcpBinding>
        
<binding name="netTcpBindingSmiple" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" closeTimeout="00:00:05" openTimeout="00:00:02" receiveTimeout="10:10:10" sendTimeout="00:00:30">
          
<security mode="Message" >
            
<message clientCredentialType="UserName"    />
          
</security >
        
</binding>
      
</netTcpBinding>
    
</bindings>

  
</system.serviceModel>
</configuration>

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多