2009-07-29 72 views
1

我的WinFroms應用程序使用表適配器& datareaders從SQL服務器獲取數據。Web服務增加安全性並降低性能?

出於安全原因,我正在考慮用Web服務替換數據採集器。 我猜其中一個缺點是執行速度。

這是真的嗎?或者...

回答

3

Web服務在執行速度方面肯定會有更高的開銷 - 純粹是因爲在一個典型的SOAP實現中,您帶回的數據將被包裝在XML中。所以你會拉更多的原始信息,然後讓你的應用程序解析它到正確的類型。

我不確定您計劃如何使用Web服務來有利於您的安全狀況。請記住,您需要某個地方讓這些服務生存下來,並且您的客戶端應用程序需要能夠訪問該位置。

+0

他不需要使用SOAP。 WCF通過TCP/IP或命名管道支持二進制。 – 2009-07-29 12:07:53

+0

對於在大環境下投資的保護很好。只有真正的Web服務或JMS提供插補性。不要使用專有的二進制連接。 – 2009-07-29 12:23:37

+0

他的客戶是Windows窗體應用程序。互操作性似乎不成問題。如果它成爲一個問題,添加一個SOAP端點是微不足道的。 – 2009-07-29 12:35:56

0

使用netTcpBindingnetNamedPipesBinding,性能不會有太大差異。這些綁定分別使用TCP/IP或命名管道的二進制編碼。

是的,你會得到更好的安全性,因爲你不會直接從每個客戶端連接到SQL Server。

您甚至可能有機會提高性能。如果您碰巧正在對數據庫進行一些小型調用,那麼將它們整合到更大的WCF調用中實際上可以提高性能。

0

當然,您的應用程序的安全性現在取決於您如何連接到MS SQL數據庫。您是否在使用應用程序時對您的客戶進行身份驗證?我已經看到很多實例,其中用戶登錄實際上是SQL登錄,這就提供了安全性,並且可以允許基於這些登錄的數據在數據分段中非常普遍地進行分段。

如果您只有一個登錄名(我希望不是SA)連接到您的應用程序的所有用戶,那麼擁有單獨的數據訪問層聽起來是明智的設計選擇。您顯然正在考慮這一層的Web服務,但您也可以考慮其他選項。也許這些SO問題可能會有幫助;

Best design practices for .NET architecture with LINQ to SQL (DAL necessary? Can we truly use POCOs? Design pattern to adopt?)

Business Object DAL design

1

是的,你會得到更好的安全性 - 添加圖層總是有好處的,特別是如果你再採取措施來保護每一個。例如,如果您只允許訪問Web服務並允許從Web服務器訪問SQL Server,那麼您已經減少了黑客可用於訪問您的SQL Server的目標區域。

當然,現在你處於他們需要破解你的web服務器以便能夠訪問sql服務器的位置。如果您通過將Web服務代碼放入服務並僅允許訪問您的sql服務器來進一步縮小該區域,那麼您會做得更好 - Web服務代碼僅用作中間層服務的包裝;現在他們需要破解只允許他們訪問服務的Web服務器,並且這將包含您應該更難破解的專有接口(假設黑客利用已知的安全漏洞攻擊您的Web和SQL服務器,例如0天攻擊)。

我知道幾個地方是安全偏執(財務主要)在這裏,網絡服務器被認爲是一種安全風險,所以很少在那裏運行 - 它作爲表示層的一部分,僅用於將數據傳遞到安全的服務,進而管理到數據層的安全連接。

查看Roger Session的article on Software Fortresses的介紹。

至於速度..好吧,現在的服務器速度如此之快,您可以接受一個對象,將其轉換爲SOAP,通過HTTP進行發佈,解析它,將它解開爲一個對象,然後調用所需的方法太明顯的延遲。當然速度較慢,但​​如果你可以縮放它,那麼足夠快,,那麼現在誰在乎呢?