2014-02-15 70 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