2012-10-23 17 views
3

因此,請耐心等待,我是MVC和WCF的新成員。我已經有一組服務(WCF)公開了我的BLL,並且我試圖從我的MVC.net Web應用程序中使用這些服務,但我不確定如何在此執行安全操作。WCF作爲BLL(中間層)和安全技術

這是我的應用程序的要求:

  • 能消耗使用不同的憑據WCF服務的Web應用程序的每個用戶
  • 我BLL(WCF)需要知道消費者調用它(右現在我只有MVC應用程序,但我打算將iOS和Andriod調用添加到該應用程序中,所以稍後我會將REST服務添加到WCF端點)是否有任何設計模式? (或者我應該只使用肥皂頭來包含來電顯示?我應該使用某種呼叫者的祕密或什麼東西?)
  • 我需要一個像令牌或其他東西的安全機制,所以我不必通過用戶名和密碼(WCF)服務方法的每次調用

是我到目前爲止有:

  • WCF使用證書,並和一個自定義的用戶名驗證。
  • 我使用合約界面而不是生成的代理手動編碼代理:但我討厭每次調用WCF服務時都必須驗證用戶名和密碼的事實。我在天堂怎麼可以在這裏使用令牌?想知道在肥皂頭上發送的給定令牌是否有效或尚未過期?我已經搜索了很多,沒有教程/代碼/例子足夠清晰,我實際上開始編碼;(
  • 我想緩存ChannelFactory,但我應該嗎?我的意思是,我將需要緩存一個channer工廠登錄每份合約用戶;?!?(是好的我能在這裏做

在此先感謝

+1

也許這個博客文章可以幫助:http://webservices20.blogspot.ca/2009/01/stateful-security-context-tokens-in-wcf.html –

+0

,謝謝! – rzumbado

回答

0

你應該緩存每位用戶合同的ChannelFactory

這取決於有。實例化一個通道工廠可能需要70ms,如果你反覆這樣做,你會看到如果您沒有緩存ChannelFactory並在用戶每次向您的MVC應用程序發出http請求時實例化一個(或多個)導致調用Web服務的控制器操作,則會導致明顯的性能下降。這表明緩存channelFactory對速度有利。另一方面,根據你擁有的用戶數量,如果你正在緩存很多渠道工廠(例如在一個靜態字典中),你將開始使用不平凡的內存量 - 這可能會成爲你的問題。

您必須決定是否動態實例化通道工廠(以及正確關閉/中止它們及其包含的通道)的成本是否與提高託管您的MVC應用程序的應用程序池中的內存利用率過高有關。

無論哪種方式,我強烈建議在部署到生產之前對應用進行配置。