混合式框架的結構介紹

2021-08-18 01:53:43 字數 4661 閱讀 1543

在我們常規的業務處理中,一般內部處理的介面多數都是以資料庫相關的,基於混合式開發的winform開發框架,雖然在客戶端呼叫的時候,一般選擇也是基於web api的呼叫,不過後端我們可能不僅僅是針對我們業務資料庫的處理,也可以能是呼叫其他外部介面,如物流、**商介面等介面,本隨筆就是主要介紹基於混合式開發框架如何整合外部api介面的呼叫。

1、混合式框架的結構介紹

我們知道,混合式的框架是可以在客戶端訪問web api服務、wcf服務或者直接連線資料庫幾種方式的綜合,而尤以web api為最廣泛的應用,它的整個框架的結構如下所示。

在客戶端中,通過統一的工廠類calle***ctory對相應的介面進行訪問,這裡主要就是伺服器端web api服務介面的處理,以及客戶端對web api介面的封裝,兩部分通過一些基類進行簡化處理,可以極大提高開發效率。

對於外部第三方的web api介面,我們也可以在自己的web api介面中進行包裝,使得客戶端通過相應的介面進行互動即可,不需要理會內部還是外部的介面,從而實現透明的介面呼叫。

2、rfid外部介面的整合處理

在乙個客戶的應用案例中,需要整合服務商rfid介面實現相應的資料互動,本篇隨筆也是基於這個案例進行整個過程的分析和操作,使得我們了解在混合框架中如何整合第三方web api介面為我們內部框架所用。

一般來說,web api介面,需要明確api的url、資料提交方式(post/get)、提交引數、返回集合,以及一些特殊的資料等,而一般介面的操作,也是需要乙個訪問令牌的,這些都是web api介面呼叫的關鍵。

基本上我們有了上面web api的1/2/3步驟的資訊就可以進行介面程式設計了,這些是web api開發非常重要的資訊。

我們需要特別主要到,步驟1中的資訊

這裡面的token是額外的介面資訊,是需要設定http request請求的頭部資訊裡面的,是使用者身份的重要資訊,所以我們一般需要先通過指定的授權介面獲取這個token資訊。

在這個外部的介面集合裡面,我們找到統一登入驗證的介面定義如下所示。

通過上面的分析,我們首先需要需要處理好登入驗證介面,然後通過介面傳遞令牌token給其他介面進行資料處理的。

結合我們的混合框架結構,這裡我以測試專案testproject專案為例進行介紹,我們調整whc.testproject.caller專案的對應類,如下所示。

其中facade層介面類irfidservice.cs**如下所示。

複製**

///

/// rfid服務外部介面

///

[servicecontract]

public inte***ce irfidservice 

複製**

這裡面的介面定義,我們是根據輸入引數、輸出引數進行定義的,另外token是額外增加的令牌引數,用於請求頭部寫入資訊的。

這個介面的定義其實和我們常規的web api介面定義沒有太多的不同,如下是乙個內部客戶資訊介面定義。

複製**

///

/// 客戶資訊的服務介面

///

[servicecontract]

public inte***ce icustomerservice : ibaseservice

複製**

差別就是它們介面繼承類有所不同,外部介面由於不需要和資料庫打交道,我們不需要繼承ibaseservice介面

根據這些介面的定義,我們還需要實現我們具體的web api 服務,邏輯上它是對外部web api介面的封裝,但是對於客戶端來說,並不需要知道是內部還是外部介面,客戶端只需要知道如果提交引數或者結果即可。

由於web api涉及多個引數的資料提交,一般來說這種情況都是以post方式處理的,資料引數則統一在web api端通過定義乙個jobject物件來傳遞即可,登入認證的web api介面定義如下所示。

複製**

///

/// 基於rfid的應用介面

///

public class rfidcontroller : baseapicontroller

return result;

}else

}複製**

其中輸入的引數這裡用了jobject param的引數,我們提交給外部web api介面的時候,我們把這個引數再次序列號為json格式的字串即可:

var postdata = param.tojson();

其中checkinresult和rfidbasedata是根據輸入引數、輸出結果進行的實體類定義,目的是序列化為強型別的實體類,方便資料處理操作。

在客戶端,我們只需要對接好和web api服務端的介面,那麼呼叫起來就非常方便,其中對應的web api介面客戶端封裝類 rfidcaller 如下所示。

複製**

///

/// 對rfid控制的介面呼叫封裝

///

public class rfidcaller : normalapiservice, irfidservice

.tojson();

var result = jsonhelper.convertjson(url, postdata);

return result;

}複製**

有了這些,我們直接在客戶端的介面裡面,就可以通過呼叫calle***ctory進行處理操作了,如下是客戶端窗體獲取驗證身份令牌資料的**

複製**

private string token = null;//訪問rfid介面的token

///

/// 根據終端使用者統一登入驗證獲取相關訪問token

///

///

private string getrfidtoken()

return token;

}複製**

上面是認證身份的介面,其他型別的介面類似的處理方式,如增加了乙個

獲取標籤發貨通知單批量

操作後,對應的客戶端封裝類如下所示。

複製**

///

/// 對rfid控制的介面呼叫封裝

///

public class rfidcaller : normalapiservice, irfidservice

.tojson();

var result = jsonhelper.convertjson(url, postdata);

return result;

}public tagorderasnresult tagorderasn(int brand_id, string factcode, string start_time, string end_time, pager.entity.pagerinfo pagerinfo, string token)

", token);

var postdata = new

.tojson();

var result = jsonhelper.convertjson(url, postdata);

return result;

}複製**

獲取標籤發貨通知單批量

的web api介面如下**定義

複製**

///

/// 獲取標籤發貨通知單批量

複製**

其中表頭資訊,我們通過下面的**指定,設定特殊的token表頭資訊

而在客戶端的呼叫窗體裡面,我們呼叫對應的介面就可以獲取該介面的資料了。

複製**

private tagorderasnresult asnresult;

///

/// 根據引數獲取標籤生產訂單批量資訊

///

///

private tagorderasnresult getresult()

;//初始化乙個分頁條件

var brand_id = this.txtbrand_id.text.toint32();

var factcode = this.txtfactcode.text;

var start_time = this.txtstart_time.datetime.tostring("yyyy-mm-dd hh:mm:ss");

var end_time = this.txtend_time.datetime.tostring("yyyy-mm-dd hh:mm:ss");

asnresult = calle***ctory.instance.tagorderasn(brand_id, factcode, start_time, end_time, pagerinfo, token);

return asnresult;

}複製**

通過上面的**演示,我們了解了在混合框架基礎上增加外部web api介面的方法,通過增加facade層介面,增加web api介面,以及對應的客戶端封裝類,具體處理引數根據web api介面的輸入引數、輸出資料等資訊進行綜合處理即可。

混合式app開發框架

phonegap phonegap的官網位址是 phonegap apicloud apicloud是一款 雲端一體 的移動開發平台,信仰 雲端一體 的理念,重新定義了移動應用開發。apicloud為開發者從 雲 和 端 兩個方向提供api,簡化移動應用開發技術,讓移動應用的開發周期從乙個月縮短到7...

cordova vue混合式開發App

1.建立cordova專案並新增android平台 建立專案指令 cordova create hello com.example.hello helloworld 第乙個hello是cordova自動生成的專案資料夾名稱 第二個com.example.hello我一般填寫公司的名稱,比如 com....

Hybrid混合式開發 回顧

一 前言 1 新鮮的玩法,短期可以吸引大量使用者 2 讓使用者足不出戶就可以抓娃娃,滿足一些喜歡抓娃娃人群的訴求 3 使用者留存率低,一般使用者就是在獲取免費金幣進來玩一把,然後就不會再來了,所以還得通過各種手段吸引使用者來,提高付費率 4 需軟硬體結合,打通之後還需專門人員維護機器 5 需要倉儲 ...