注冊機(jī)制)
在 SAP Gateway Foundation 里開發(fā)一個 OData V4 服務(wù)時,最容易產(chǎn)生誤解的地方,往往不是 Entity Type 怎么定義,也不是READ_ENTITY_LIST怎么實(shí)現(xiàn),而是代碼已經(jīng)寫完、類也已經(jīng)激活之后,這個服務(wù)究竟怎樣真正進(jìn)入 SAP Gateway 的運(yùn)行時體系。不少 ABAP 開發(fā)人員第一次接觸 OData V4 時,會沿用 OData V2 的經(jīng)驗(yàn),腦子里自然形成一種很直接的映射關(guān)系,開發(fā)一個 Service,注冊一個 Service,激活之后通過 URL 調(diào)用。但到了 SAP Gateway Foundation 的 OData V4 Runtime,這套思路需要稍微調(diào)整一下。對于手工開發(fā),也就是 SAP 官方文檔中所說的 Hand-crafted OData V4 Service,真正參與注冊的不只是一個 Service ID。SAP Gateway 還需要知道這個服務(wù)對應(yīng)哪個 Model Provider Class,也就是 MPC,以及哪個 Data Provider Class,也就是 DPC。更關(guān)鍵的是,Service 注冊完成以后還不夠,它還必須成為某個 Service Group 的成員,而客戶端真正訪問服務(wù)時,也是在 Service Group 的上下文中訪問。SAP 官方對這一過程的描述非常清楚,OData V4 Provider Application 要經(jīng)歷模型定義、業(yè)務(wù)數(shù)據(jù)訪問實(shí)現(xiàn)、Service 注冊、Service Group 分配以及 Service Group 發(fā)布幾個階段。單獨(dú)完成 Service Registration 并不會自動讓服務(wù)對外可訪問。理解了這一點(diǎn),/IWBEP/