目錄
1 引言
2 設計
2.1 inte***ce
2.2 business service
2.3 object transaction data
3 實現
3.1 webservice.asmx
3.2 ibusinessservice
3.3 common (submitresult)
4 使用說明
4.1 編寫業務**
4.2 介面服務配置
4.3 呼叫測試
本文設計並實現乙個系統介面框架,使用webservice和framework類庫實現。純粹抽象的框架沒有什麼意義,本文框架設計用於camstar對外系統介面。讀者如果只想使用並不關心設計實現,可以直接從第四節開始看。
該框架設計目的有以下4點:
(1)輕量級,擴充套件簡單,開發人員只需要編寫業務**。
(2)普遍性,改介面要能和大部分系統對接。
(3)規範性,介面呼叫方根據指定的服務編碼呼叫特定的業務介面,介面發布方可以通過配置方式管理介面。
(4)安全性,資料傳輸加密,介面呼叫需要驗證呼叫者。
對外暴露乙個穩定的,不修改的介面。
設計具體的業務服務都有乙個唯一的編碼,介面呼叫方可以通過編碼呼叫指定的業務服務。介面發布方也可以通過管理編碼的方式,通過配置管理介面服務。
對內設計common,對外使用json。介面呼叫方使用json字串呼叫介面,框架獲取到json後轉化為object。開發人員在編寫業務**的時候再轉化成需要的資料物件。介面呼叫結束返回時又轉換成json返回給呼叫方。保持系統之間使用json傳輸資料。
根據設計實際實現該介面框架,資料加密可以呼叫第三方加密服務,也可在json回傳資料的過程中自己編寫加密演算法。本文略過不實現。另外配置檔案統一用了web.config。這個也可以新增新的配置檔案做更明確的細分。整體**如下圖所示:
該類對外只暴露乙個callinte***ce方法,通過工廠類建立指定的業務服務,返回抽象業務介面ibusinessservice,該方法呼叫ibusinessservice.executeservce()介面呼叫具體業務服務。**如下:
using mesbusiness.inte***ce;
using system;
using system.collections.generic;
using system.linq;
using system.web;
using system.web.services;
namespace meswebservice}}
ibusinessservice介面**如下
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
namespace mesbusiness.inte***ce
}
實際通過工廠類businessservicefactory注入,businessservicefactory類提供倆個建立業務服務介面的方法,無參方法產生預設業務服務介面。**如下:
using system;
using system.collections.generic;
using system.configuration;
using system.linq;
using system.text;
using system.threading.tasks;
namespace mesbusiness.inte***ce
public static ibusinessservice createbusinessservice(string id)}}
該project中設計各種資料結構,方便**編寫。其中常用的submitresult為所有業務方法的指定返回資料型別。該類**如下:
using camstar.wcf.objectstack;
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
namespace mescommon.default
public submitresult(resultstatus rs)
public bool issuccess
public string message
public object data }}
假設有乙個開發人員使用該框架新增新的業務**,只需要編寫業務**,然後再將新編寫的業務**配置到配置檔案即可。
測試**寫在defaultbusinessservice中,在該類中新增乙個方法helloworld,新增後的defaultbusinessservice類如下:
using camstar.wcf.objectstack;
using camstar.wcf.services;
using mescommon.default;
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
namespace mesbusiness.inte***ceimpl}}
在配置檔案中加入一行配置,key為呼叫方需要呼叫的服務id,value為業務方法的方法名。如下所示:
呼叫成功如下:
Buff系統框架設計
buff的配置檔案 buftype 1 精神類buf 2 物理類buf 3.元素類buf 4.其他類buf 5.被動類buf bufsubtype 1000 1999 精神子類 2000 2999.物理子類 3000 3999.元素子類 4000 4999.其他子類 5000 5999.被動子類。所...
再議成就系統框架設計
根據的設計,其實還有幾點可以優化 1.group組的buff是靠嚴格的配置的偏移量計算出來的,這個太不可控了。buff可能出在無法檢查的策劃小錯誤上 2.如果已經有n種型別的成就,而有乙個新的需求,其事件是已有的幾種成就組事件的組合,則需要 產生一種新的成就組,使用新的成就buff。儲存空間浪費,冗...
MegEngine 框架設計
megengine框架設計 megengine 技術負責人許欣然將帶了解乙個深度學習框架是如何把網路的定義逐步優化並最終執行的,從框架開發者的視角來看待深度學習。背景 ai 浪潮一波又一波,彷彿不會演算法就落後於時代。深度學習框架處理了各種裝置的計算細節 求導 計算優化序列的工作,而在動態 靜態兩套...