2011-08-01 31 views
1

我們正在評估的應用程序是一個使用spring和spring mvc與oracle數據庫構建的Web應用程序。這是一個三層架構嗎?

每次瀏覽器上的點擊都以數據庫調用結束。

大部分業務邏輯都在數據庫過程中。

  • 如何說服我的管理層認爲這不是三層應用程序?
  • 我該如何說服我的管理層,這不是面向服務的體系結構?

回答

3

好了,你有三個層次 -

  • 數據庫(甲骨文3G)
  • 中間件集成(春季)
  • UI(Spring MVC的)

因此從技術上講你的管理正確的,至少對於應用程序中的層數。你可以很容易地說他們沒有遵循最佳實踐,SQL是一種可怕的語言來做業務驗證。

關於你的第二點,它不可能告訴我們這是否是符合SOA的應用程序,儘管我敢打賭我的第一個出生不是。 SOA非常複雜,你問10個人你會得到15個答案。但是根據你的描述,我會說系統在發現性,可組合性,自主性,抽象和鬆散耦合等方面失敗了SOA測試。取決於你如何看待它,服務合同也是如此。

儘管如此,您的組織認爲它需要SOA來做什麼?

+0

是的,有彈簧和彈簧mvc允許三層。但是由於每次調用都會在數據庫調用中結束,因此我認爲中間層正在執行代理功能。有效地,我們看一下UI層 - >代理層[業務層,數據訪問] - >數據庫oracle11g。這仍然有資格申請3輪胎應用嗎?關於SOA我同意周圍有多個定義。 –

+0

您仍然有多個層級,但中間的集成層級只是*未充分利用。對於使用可有效支持中間件集成的UI架構的用戶而言,這是一條細線。在J2EE和Spring之前,我們將所有中間件邏輯嵌入到控制器servlet中。奇怪吧?但是,我認爲您可以向您的管理層說出您的中間件層實際上處於開銷狀態,因爲它的利用率非常低。 – Perception

2

從您提供的信息來看,它不遵循是三層還是面向服務。

3層通常意味着UI層/服務層/數據庫層。每個人都有自己的責任。面向服務的體系結構通常意味着您有單獨的可部署服務來執行系統中的不同功能。您的陳述本身並不確認或否定任何一種定義。

2

你似乎有更多的違反MVC模式比多層模式。在典型的MVC應用程序中,業務邏輯屬於控制器代碼而不是數據庫過程。但是,三層應用程序通常只需要三層,一個接口層,一個業務層和一個持久層。技術上他們有這個。所以我認爲也許你應該爭辯說他們沒有正確地遵循MVC,而且最好他們有一個執行不好的三層應用程序。

您還沒有提供足夠的細節來證明它沒有使用面向服務的體系結構(儘管如果它是,我會感到驚訝)。 SOA與構成業務邏輯的邏輯組件如何耦合有關。如果它們是鬆散耦合的東西,它們可以上下移動並換出不同的提供者實現,那麼它們將具有SOA。如果存在緊密的耦合,以致邏輯組件不能輕易地彼此分離而不造成重大破壞,則它們不會。

如果他們的大部分業務邏輯都駐留在數據庫過程中,那麼他們可能沒有SOA,但你永遠不知道。其他業務邏輯可能確實遵循這種模式。

+0

我對三層架構的評估過於苛刻。現在我糾正了。任何具有適合UI-BL-Persistance的持有者的申請都有資格申請三輪輪胎。如果數據庫調用太多,則表示執行不當。對於SOA我同意沒有足夠的信息可用。所有回覆都會得到我的投票,並且通常我只能選擇一個。 –