3-tier設計中,中間層與介面層的狀態通訊應採用何種方式呢?這裡所指的狀態是方法或服務執行的結果,它可能是乙個成功標誌
,乙個錯誤資訊,乙個警告提示或乙個不符合業務要求的說明等等。這類資訊對於介面層來說是非常重要的,它決定了互動介面的
轉向和使用者提示等操作。
目前,比較流行(採用wcf作為通訊架構)的狀態返回方式有兩種:
一種是以狀態位為標誌的返回值方式,這種方式可以採用乙個int型資料或enum型別來表示業務狀態,只要業務層和介面層遵循統一
的狀態協議即可。
另一種是把所有導致業務不能完成的因素作為exception返回給介面,並終止業務層的繼續執行。
well,說一下這兩種方式的優缺點,第一種方式的優點在於它可以自由決定是否終止程式的執行,並且具有明確的狀態指示。缺點就
是需要占用業務方法的返回值或多增加乙個輸出引數,並且在異構系統中要做到統一狀態也比較麻煩。
第二種方法的優點在於可以把詳細的問題描述提供給前端,前端也可以通過對exception的派生型別或自定義型別進行進一步的業務
處理。缺點就是業務層丟擲異常後會自動終止程式執行(除非處理了該異常)並使連線失效,異常的描述也不利於本地化。
也許有人會說,融合這兩種方式,在需要所有元素都有效的地方使用exception,在部分完成但狀態有變的地方使用enum或int返回
。這樣確實是可以互補的解決各自的部分問題,但對於整體來說卻也引入了更多的問題。你可以這樣理解,我如果只用exception也
許不存在異構系統狀態統一的問題,但如果為了解決狀態返回的缺陷而引入int或enum,不是又把異構狀態統一的問題也帶來了嗎?
也許在wcf的層間通訊上還有更好的解決方案……我也在不斷的改善自己的架構方案……
ndis中間層 發包
這個問題,大部分學習ndis中間層的人都會去思考,算是乙個比較經典的問題了。到論壇上問,別人只會告訴你大概的方法和步驟,這裡貼出具體的 希望對研究ndis中間層的哥們有些幫助 ndis status mysendpacket ndis handle ndisbindinghandle,ndis ha...
Keras 中間層 輸出
如何獲取中間層的輸出?一種簡單的方法是建立乙個新的model,使得它的輸出是你想要的那個輸出 from keras.models import model model create the original model layer name my layer intermediate layer m...
連線中間層加密服務失敗,請確認中間層加密服務已啟動
主要原因 在金蝶k3中間層計算機同時安裝金蝶k3客戶端,如果成功連線金蝶k3中間層並登入金蝶k3,則基本排除中間層本身故障 1 另一計算機連線至金蝶k3中間層計算機所連同一路由器,並安裝金蝶k3客戶端。如果連線中間層成功,排除中間層系統環境設定問題。2 否則,中間層計算機可能存在環境設定問題,可參照...