也許這個問題是一個小白癡,因爲一切都可以在業務層保證,但我不知道我是否應該努力把這種保證帶到業務邏輯層。如何處理只能在UI中實現的業務邏輯?
例:
我有用戶,如果他已經被記錄只能夠訪問一個產品列表的第二頁的ASP.NET應用程序的業務邏輯在ASP.NET應用程序的WebSecurity關心用戶登錄,所以我不能在業務層調用WebSecurity方法。我該如何處理?只有在UI層中保留這些法則?在你的業務邏輯
也許這個問題是一個小白癡,因爲一切都可以在業務層保證,但我不知道我是否應該努力把這種保證帶到業務邏輯層。如何處理只能在UI中實現的業務邏輯?
例:
我有用戶,如果他已經被記錄只能夠訪問一個產品列表的第二頁的ASP.NET應用程序的業務邏輯在ASP.NET應用程序的WebSecurity關心用戶登錄,所以我不能在業務層調用WebSecurity方法。我該如何處理?只有在UI層中保留這些法則?在你的業務邏輯
業務邏輯是一個廣義的術語,很容易混淆開發人員,他們說的是什麼樣的邏輯。人們認爲「如果它的客戶需求,那麼它必須是一個業務邏輯」。
應用邏輯 - 這些是爲應用專門製作的種類邏輯。他們確保應用程序順利運行,例如過濾掉垃圾輸入。
業務邏輯 - 這些類型的邏輯來自問題域。這些是真實世界業務規則。
例
下面是一個簡單的練習:下面的項目是用戶的年齡驗證。找出哪一個屬於應用程序邏輯或業務邏輯。
提示:如果客戶試圖購買啤酒時,收銀員將永遠不會問顧客的年齡是一個數字,或者如果它是1〜100
的範圍內,在現實世界中,收銀員是業務的一部分,並執行規則。它假設客戶的年齡是正常的,而不是1000.
如果您通過身份驗證,業務不關心。您是 那裏做生意,這就是它
回答我的小運動:
年齡應該始終是數字,以及100在1 - 這驗證了應用邏輯。應用程序的工作是確保用戶輸入的質量。沒有垃圾輸入。
用戶年齡必須爲18歲或以上。這個驗證是一個商業邏輯。企業假設輸入的格式或範圍始終是正確的,只需檢查您是否被允許購買啤酒。
把WebSecurity接聽的話會有錯的,正確的。然而,沒有什麼問題是在你的控制器中使用WebSecurity調用。
在與呼叫你的產品列表交易的操作,可以檢查用戶是否已登錄並重定向到一個登錄頁面,如果他們試圖查看比產品的第一頁的任何其他。
這個問題很可能被關閉是開放的意見,因爲有做你想做什麼方法不止一種。例如,使用一個自定義的AuthorizeAttribute。
這只是一個例子。我想知道如何將只能在UI層實現的業務邏輯持久化到業務層。或者我應該擔心這種業務邏輯只保留在UI層上? – GoldShip
我認爲你會將業務邏輯與UI/UX混淆。真的,這不是一個業務規則。 –
聽起來像你可能需要在業務層返回基於一些額外的參數信息,如
public List<Products> GetProductList(bool isAuthenticated = false)
{
}
更多的業務邏輯,那麼你可以在正確的值傳遞從UI基於用戶是否已經登錄或不
你明白我問的是什麼。這個例子到了我懷疑的地步。我看到數字1就像應用程序驗證一樣,但我的理解是,您的提示中說,像UI這樣看到的收銀員並不關心數字1的要求。我看到數字2是我必須保證的東西,因爲如果我的生意是酒吧,我不能爲18歲以下的人賣啤酒,或者我會入獄,而且很難理解像這樣的東西,只是保證在應用程序邏輯。我是對還是不對?如果你不告訴我,我可以理解,但我需要改變我的觀點。 – GoldShip
@GoldShip我已更新我的回答 – Yorro
謝謝!現在我對如何在項目中組織這些東西有了更好的瞭解。 – GoldShip