2012-05-02 18 views
0

我有一個很大的vb6/sql數據庫應用程序(數百個表,類和表單),我想遷移到c#,同時具有web,phonegap和winform客戶。有很多的數據庫和商業邏輯的,我想集中,因爲我喜歡ASP.Net MVC作爲我的web用戶界面平臺,我正在考慮以下幾點:這個架構有什麼問題(MVC,Webservices和Winform)

MVC Web項目包括:

  • MVC的Web控制器和視圖的Web UI
  • MVC控制器服務JSON對象PhoneGap的應用和豐富的HTML頁面
  • 服務類,以MVC控制器提供BLL服務
  • DAL類提供持久性和POCO對象服務使用/ BLL cla s
  • 將服務類暴露給Winform應用程序的Web服務。他們會接受並返回POCO對象

Winform應用程序將嚴重依賴所有數據的Web服務。由於我有數百個數據庫表,Web服務將把這些數據作爲POCO對象(一些嵌套的POCO對象列表)返回給客戶端。我擔心1)WSDL會很大,隨着應用程序的增長和暴露的類的數量增加,它會變得不守規矩(VS VS choke?),2)通過web服務返回POCO對象可能不會很好。我習慣直接從我的winform UI調用SQL服務器,所以通過web服務的前景似乎可能成爲瓶頸,因爲所有事情都被序列化並通過IIS。

順便說一下,我知道服務層與MVC UI層在邏輯上是分開的,但我已經將它們組合起來使部署更簡單。如果它解決了任何問題,我也會考慮WCF,但據我所知,它增加了不必要的複雜性。

這些有效的擔憂?你有其他建議嗎?

回答

0

你是如何構建WinForms所使用的服務的?根據設置的方式,您可能需要重新考慮WCF。您可以將BLL放入WCF服務中。然後,您的MVC應用程序,WinForms和PhoneGap應用程序都可以使用WCF服務,這意味着您的所有業務邏輯都有一個位置。只要您不處理龐大的POCO,並且您正在進行異步調用,則不會對使用服務的WinForms應用程序有任何重大性能問題。

由於能夠根據您將要連接的客戶端輕鬆公開不同端點,因此WCF可能會非常好。例如,您的MVC和WinForms應用可以使用二進制接口,而PhoneGap應用可以利用REST端點。

如果您擔心服務變得太大,您也可以考慮將其分解爲多個服務,每個服務都在數據庫的某些部分上運行,或者其他邏輯分離可能已經存在於BLL中。

我也想知道爲什麼WinForms應用程序在這一點上是必要的。有什麼你不能在網站上做的?你看過WPF或Silverlight嗎?兩者都很自然地與服務合作。