1. 程式人生 > >介面封裝及呼叫

介面封裝及呼叫

               

為了更好地讓應用系統進行呼叫,有的時候需要對介面進行封裝,把複雜的東西包起來,讓應用系統介面開發者感覺越簡單越好。這樣你的系統才更容易被推廣或應用。比如,現在的很多線上支付介面都提供了軟體開發包。我們也可以通過封裝來實現介面開發包,讓開發人員簡單開發,輕鬆呼叫。

1.介面封裝

我們新增一個SSOLib類庫專案,提供對應用系統介面程式碼的封裝,從而使其他應用系統通過呼叫該類庫,即可實現接入認證服務中心。SSOLib類庫專案如圖18-17所示,詳細程式碼請參考本書配套光碟。

18-17  SSOClass類庫專案

l   Assistant類:輔助工具類。

l  DESEncrypt類:加密/解密處理類。

l

  SynPageBase類:(接收認證中心)狀態同步頁面的基類,在應用系統中建立一個空白頁面繼承該類,即可實現同步功能。

l  ValidatePageBase類:當前應用系統驗證頁面的基類。應用系統中的任一頁面通過繼承該類,都可實現對使用者狀態的驗證功能。

2.應用系統呼叫介面開發步驟

下面看一下如何通過呼叫上面封裝過的類庫,來實現接入認證服務中心實現單點登入功能。

1)在Web.config裡設定環境引數:

<appSettings>

    <!--認證伺服器驗證請求地址-->

    <add key="ServiceValidate" value="http://localhost:2999/Validate.aspx"/>

    <!--認證伺服器域名地址-->

    <add key="ServiceUrl" value="http://localhost:2999"/>

    <!--分配給應用系統的API程式碼-->

    <add key="apikey" value="642386db7bf249018117e643522d6a05"/>

    <!--是否加密傳遞 -->

    <add key="IsEncrypt" value="false"/>

    <!--加密金鑰-->

    <add key="EncryptKey" value="litianping"/>

</appSettings>

2)在Global.asax.csSession_Start新增:

protected void Session_Start(object sender, EventArgs e)

{

    this.Session.Add("UserID", 0);

    this.Session.Add("Pass", false);

    this.Session.Add("Security", "");

    this.Session.Add("Url", "");

}

3)引用元件SSOLib.DLL,如圖18-18所示。

18-18  引用元件SSOLib.DLL

4)使用者身份認證,驗證當前狀態。

將要進行驗證的頁面(AnyPage)基類由System.Web.UI.Page改為 SSOLib.ValidatePage

5)接收認證伺服器的返回資訊進行狀態同步。

在專案中增加一個空白頁面Synchronous.aspx,將頁面基類繼承自SSOLib.SynPageBase

6)更新認證伺服器,保持Service認證伺服器Session狀態。

新增一個使用者控制元件SynServerIFrame.ascx實現如下程式碼,並拖到所有的頁面上。

<iframe width=0 height=0 src='<%= ServiceUrl%>/SessionState.aspx'></iframe>

SynServerIFrame.ascx.cs程式碼如下:

public partial class SynServerIFrame : System.Web.UI.UserControl

{

    public string ServiceUrl = ConfigurationSettings.AppSettings["ServiceUrl"];

}

7)登出當前應用系統的登入。

Session.Clear();

Session.Abandon();

8)登出所有應用系統的登入。

直接轉向伺服器登出頁面即可:

Response.Redirect(ConfigurationSettings.AppSettings["ServiceUrl"] +

  "/logout.aspx");

通過上面方式的呼叫,應用系統的開發工作量大大減少,幾分鐘就可以實現了。當然,這裡不僅僅是教給大家幾行程式碼,更重要的是一種思想,一種為客戶著想的思想。

本文節選自《專案中的.NET》一書

李天平編著

電子工業出版社出版