在任務關鍵型數據庫驅動的 Web 應用程序中,用於異常處理的最佳範例或設計模式是什麼?
我想設計一個防彈、容錯、數據庫驅動的 Web 應用程序,並且想知道如何建構它。
該系統將有一個asp.net UI、Web 服務中間層和SQL2005 後端。UI 和服務將使用 JSON 呼叫進行通信。
我想知道如何確保事務被送出,如果沒有任何錯誤冒泡並被記錄。理想情況下,每隔 5 分鐘重試幾次操作,就像電子郵件應用程序一樣。
我計劃在 SQL 中使用 try catch 塊,並且想知道 SQL 儲存過程和呼叫它們的服務之間的介面(或契約,如果你願意的話)會是什麼樣子。該介面將扮演 2 個角色,一個是傳遞參數以使 proc 執行並返回預期結果。接下來是 proc 返回錯誤資訊。可能是錯誤號和錯誤消息之類的。
我的困境是如何智能地建構它,以便服務期望並相應地響應從 procs 返回的數據和錯誤資訊並相應地處理每個?
有沒有一個框架,因為它看起來很樣板?
當然!就像任務關鍵型應用程序中最有趣的問題一樣,這實際上是由 IBM 在 1970 年代解決的,但 IT 行業一直在追逐最閃亮的新事物,並且不尊重過去的偉大工程師。我指的當然是面向消息的中間件,或者如當時所知的那樣,TPF。其原理實際上非常簡單,並且已被銀行、航空公司、電信公司一次又一次地證明,應有盡有。
基本操作是,將消息放入隊列,並從隊列中取出消息。因此,當您的應用程序需要做一些工作時,它會將其打包為一條消息並將其放入隊列中以供下一個服務使用。然後,TPM 將該消息出列並嘗試對其進行處理。如果這失敗了,消息會簡單地回到隊列中再次嘗試,如果它繼續失敗,則被分流到處理失敗的隊列中。消息匯流排還處理路由、負載平衡和所有這些好東西。您可以購買現成的這些功能:MQSeries和Tibco Rendezvous是“嚴肅”的功能,但周圍還有很多其他功能,其中許多與JMS兼容所以你不會被綁定到一個供應商(當然,如果你使用 JMS,那麼你也必須遵守最低公分母)。您將消息匯流排指定為超可靠和容錯,然後您只需將服務掛在它的後面,然後將您的應用程序放在前面。SOA 是另一個被新流行語重新加熱的舊想法的例子……