升级WCF后端通信架构,开发更简单高效!CSFrameworkV5.1旗舰版
作者:C/S框架网|www.csframewo  发布日期:2021/12/29 13:35:34
  升级WCF后端通信架构,开发更简单高效!CSFrameworkV5.1旗舰版


升级WCF后端通信架构,开发更简单高效!CSFrameworkV5.1旗舰版

CSFrameworkV5.1旗舰版(2021最新修改):
客户端WCF核心库全面升级,技术架构更清晰、简洁、高效!


WCF客户端核心库


贴图图片-WCF客户端



WCF_Base.cs

C# Code:

/// <summary>
/// WCF客户端代理层-基类
/// </summary>
/// <typeparam name="T"></typeparam>
public class WCF_Base<T> where T : class
{
  
/// <summary>
  
/// 执行WCF方法
  
/// </summary>
  
/// <param name="action">调用WCF接口核心逻辑</param>
  
protected void Excute(Action<T> action)
  {
    T svc
= null;
    
    
try
    {
      svc
= WCFFactory.Create<T>();
      action(svc);
      
this.CloseService(svc as ICommunicationObject);//关闭WCF服务
      
}
      
catch (Exception ex)
      {
        
if (svc != null) this.CloseService(svc as ICommunicationObject);
        
throw ex;
      }
    }
    
    
/// <summary>
    
/// 执行WCF方法
    
/// </summary>
    
/// <typeparam name="R">数据类型</typeparam>
    
/// <param name="action">调用WCF接口核心逻辑</param>
    
/// <returns></returns>
    
protected R Excute<R>(Func<T, R> action)
    {
      T svc
= null;
      
      
try
      {
        svc
= WCFFactory.Create<T>();//创建WCF接口实例
        
R result = action(svc);//调用接口逻辑
        
this.CloseService(svc as ICommunicationObject);//关闭WCF服务
        
return result;
      }
      
catch (Exception ex)
      {
        
if (svc != null) this.CloseService(svc as ICommunicationObject);
        
throw ex;
      }
    }
    
    
/// <summary>
    
/// 执行指定WCF接口的方法
    
/// </summary>
    
/// <typeparam name="M">WCF接口</typeparam>
    
/// <typeparam name="R">数据类型</typeparam>
    
/// <param name="action">调用WCF接口核心逻辑</param>
    
/// <returns></returns>
    
protected R Excute<R, M>(Func<M, R> action) where M : class
    {
      M svc
= null;
      
      
try
      {
        svc
= WCFFactory.Create<M>();//创建WCF接口实例
        
R result = action(svc);//调用接口逻辑
        
this.CloseService(svc as ICommunicationObject);//关闭WCF服务
        
return result;
      }
      
catch (Exception ex)
      {
        
if (svc != null) this.CloseService(svc as ICommunicationObject);
        
        
throw ex;
      }
    }
    
    
private void CloseService(ICommunicationObject svc)
    {
      
try
      {
        
//查看连接状态,关闭WCF
        
CommunicationState state = svc.State;//创建WCF通道,默认State=Opened;
        

        svc.Close();
        
        
//svc.Close();//测试关闭状态下,调用Close
        
}
        
catch
        {
          
        }
      }
      
    }
    
    
//来源:C/S框架网 | www.csframework.com | QQ:23404761



客户端WCF类


C# Code:

public class WCF_AdvancedFilter : WCF_Base<ICommonService>, IBridge_AdvancedFilter

//来源:C/S框架网 | www.csframework.com | QQ:23404761




客户端调用接口


C# Code:


public List<MyConfigData> GetConfig(string account)
{
  
return this.Excute(client =>
  {
    
byte[] loginTicket = WebServiceSecurity.EncryptLoginer(Loginer.CurrentUser);
    
return client.AdvancedFilter_GetConfig(loginTicket, account);
    });
  }
  
  
//来源:C/S框架网 | www.csframework.com | QQ:23404761






C/S框架网|原创精神.创造价值.打造精品


扫一扫加作者微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务
上一篇 下一篇