从ASP MVC应用程序调用WCF服务

时间:2014-02-15 00:18:23

标签: asp.net-mvc wcf

方案: asp mvc应用程序:WebSite。 WCF服务:服务,使用DoSmth()方法。我从网站上呼叫服务。

调用Service.DoSmth()的正确方法是什么? 我可以在我需要使用它时创建它,如下所示:

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

或者我可以将Service字段添加到控制器类并在控制器的构造函数中创建服务。

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

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

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

1 个答案:

答案 0 :(得分: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