首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ChannelFactory的重构

使用ChannelFactory的重构
EN

Code Review用户
提问于 2011-04-13 09:22:56
回答 1查看 573关注 0票数 4

我使用VS 2008和.NET 3.5

我使用CustomChannelFactory和代理ServiceReference编写了这段代码。我想用兰巴斯重构,行动,.

有什么建议吗?

代码语言:javascript
复制
ServiceDependencias.IDependencias svcDependencias = null;

public void Dependencias(List<MfaFicheroForm> listaFicherosFormXML, string entorno)
{
    CustomChannelFactory<ServiceDependencias.IDependencias> customChannelFactory = null;

    if (!string.IsNullOrEmpty(FicheroConfiguracionWCFService)
        && !string.IsNullOrEmpty(EndpointNameWCFService))
    {
        if (!File.Exists(FicheroConfiguracionWCFService)) 
            throw new FileNotFoundException("Fichero de configuración WCF no encontrado", FicheroConfiguracionWCFService);

        customChannelFactory = new CustomChannelFactory<ServiceDependencias.IDependencias>(EndpointNameWCFService, FicheroConfiguracionWCFService);

        var iDependencias = customChannelFactory.CreateChannel();          
        svcDependencias = iDependencias;
    }

    if (svcDependencias == null)
    {
        var depClient = new DependenciasClient();
        svcDependencias = depClient;
    }

    GenerarDependenciasDeFormulariosFmb(listaFicherosFormXML, entorno);

    if (svcDependencias is DependenciasClient)
    {
        ((DependenciasClient)svcDependencias).Close();
        return;
    }

    customChannelFactory.Close();
}
EN

回答 1

Code Review用户

回答已采纳

发布于 2011-04-16 06:28:47

我不懂西班牙语,所以很难准确理解到底发生了什么(我建议你下次提供非英语类名和字符串文字的英文翻译/描述作为注释)。

  • 为什么要创建一个临时变量,只用于在下一行中设置另一个变量,而不是直接设置它?(iDependencias & depClient)。
  • 如果是DependenciasClient,则关闭通道,但不要清除对它的引用。svcDependencias在此方法之外是可见的,让它保持对关闭连接的引用可能是一个问题。
  • 在将svcDependencias设置为新连接之前,不要检查是否已经设置了它。我不知道你是否可以重复使用这个连接,但是在你失去对它的引用之前,你至少应该关闭现有的连接。
  • 我注意到只有当通道不是DependanciasClient时才关闭通道工厂。虽然如果通道工厂从未返回DependanciasClient,这可能会正常工作,但我认为空检查将是一个更清晰的解决方案。if(customChanelFactory != null) { customChanelFactory.Close();}
  • 您应该使用'as‘操作符并检查null,而不是使用'is’运算符后面跟着强制转换。DependenciasClient client = svcDependencias作为DependenciasClient;if (client != null) { client.Close();}
  • 如果svcDependencias只是为了GenerarDependenciasDeFormulariosFmb的利益而存在于类级别,那么我个人更愿意将它作为参数传递,而不是使用类字段。
票数 4
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/1854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档