2014-02-15 46 views
0

应用场景: asp mvc application:WebSite。 WCF服务:使用DoSmth()方法的服务。我从WebSite调用服务。从ASP MVC应用程序调用WCF服务

什么是正确的方式来调用Service.DoSmth()? 我可以创建它所有的时间,我需要使用它,像这样:

using (var service = new ServiceClient()) { 
     service.DoSmth();  
    } 

或者,我可以服务字段添加到控制器类和创建控制器的构造函数的服务。

private Service service; 
    public MyController() { 
     service = new ServiceClient(); 
    } 

我想知道,关于会话有什么区别,因为如果我们在构造函数中创建Service,我们将创建一个长会话。那么会话超时或类似的事情呢?其他观点有什么好处?

另一个问题是,在哪里调用service.DoSmth()?我已经读过mvc模式,我认为,模式的正确方法是从模型中调用它,因为模型应该完成工作,而控制器只是一个“管理者”,但我看到很多例子,其中人们只使用容器等模型,将数据从控制器传递到视图。所以有人可以为我澄清。 。

回答

0

在许多情况下,您希望重复使用相同的WCF客户端代理,因为此连接方法可获得最佳性能。如果您使用具有较高初始安全协商成本的安全功能,则重新使用相同的代理可能会特别有益。注意:您在使用前一定需要检查客户端代理的状态。

如果重复使用相同的客户端代理不是一个选项,那么请考虑使用使用缓存的ChannelFactory代理。

以下链接提供关于最佳实践良好的信息和一些指导:http://blogs.msdn.com/b/wenlong/archive/2007/10/27/performance-improvement-of-wcf-client-proxy-creation-and-best-practices.aspx
http://msdn.microsoft.com/en-us/library/aa738757.aspx