Agile.Net 組件式開發平臺 - 驅動開發示例

首先講一下概念,此驅動非彼驅動。在Agle.Net中咱們將組件規劃成兩種類型,一種是基於業務的窗體組件,一種是提供擴展功能的驅動組件。html

打個比方例如通常系統中須要提供身份證讀卡功能,然而市面上有不少種身份證讀卡器,咱們沒法約束客戶都是用同一種讀卡器,爲了擴展性咱們將身份證讀卡功能封裝爲驅動組件。git

那麼是用不一樣的身份證讀卡器設備,咱們提供相應的封裝實現就能夠了。下面我來演示一個簡單的驅動型組件開發例程。數據庫

 

Agile.Net開發管理平臺項目,已經託管在開源中國碼雲平臺(http://git.oschina.net框架

登錄碼雲平臺進入項目主頁(http://git.oschina.net/MuAgile/AgileDevelop)便可瀏覽下載源代碼。ide

 

1.開發環境搭建工具

   軟件安裝請參考文章《Agile.Net 組件式開發平臺 - 開發環境部署》學習

   下載項目【AgileDevelop】->【附件】中的數據庫備份文件,恢復數據庫到SqlServer,建議數據庫命名"Agile"。ui

 

2.獲取項目源代碼this

   1. 啓動 Microsoft Visual Studio,進入菜單項【工具】->【選項】->【源代碼管理】-> 設置選項【當前源代碼管理插件】下拉框中選擇【Microsoft Git 提供程序】。        spa

   2. VS切換到團隊資源管理器界面,進入菜單項【項目】->【鏈接到團隊項目】。

   3. 在本地Git存儲庫欄目中,輸入Git項目地址,克隆"AgileDevelop"項目。

   4. 關於Git的源代碼管理系統的使用方法,請參考相關文檔學習。

 

3.建立第一個驅動

   1. 新建一個類庫命名爲"Driver.IDCard",框架版本爲Net4.0,引用 Agile.Cord.dll , Agile.Entity.dll 等平臺SDK庫文件。

   2. 新增一個驅動類,繼承【Agile.Core.Addin.PluginDriverBase】驅動基類並重寫"OnOpen"、"OnClose" 方法。

   3. 添加【PluginAttribute】標籤,添加組件描述。

namespace Driver.IDCard
{
    [PluginAttribute("69715891-FBA5-428A-94B1-5C6D5C28926F", "身份證閱讀驅動", "華視二代身份證讀卡器閱讀驅動")]
    public class Driver : Agile.Core.Addin.PluginDriverBase
    {
        private bool _IsOpen;

        /// <summary>
        /// 調用驅動組件並執行方法
        /// </summary>
        /// <param name="args">參數</param>
        /// <returns></returns>
        protected override object OnOpen(object args)
        {
            try
            {
this.Init();
                frmCard frm = new frmCard();
                if (frm.ShowDialog() == DialogResult.OK)
                    return frm.IDCard.ToClone(); else
                    return null;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                this.OnClose();
            }
} /// <summary> /// 關閉(卸載)驅動組件 /// </summary> /// <returns></returns> protected override void OnClose() { try
{
SDK.CVR_CloseComm();
}
catch { } } /// <summary> /// 初始化設備鏈接 /// </summary> /// <returns></returns> private void Init() {
            if (_IsOpen == false)
            {
                int ret = -1;
                for (int port = 1001; port <= 1016; port++)
                {
                    ret = SDK.CVR_InitComm(port); if (ret == 1) break;
                }
                if (ret != 1)
                {
                    for (int port = 1; port <= 4; port++)
                    {
                        ret = SDK.CVR_InitComm(port);
                        if (ret == 1) break;
                    }
                }

                if (ret == 1)
                {
                    _IsOpen = true;
                    return;
                }
                else if (ret == 0)
                    throw new Exception("讀卡器鏈接失敗!動態庫加載異常。");
                else if (ret == 2)
                    throw new Exception("讀卡器鏈接失敗!端口開啓異常。");
                else
                    throw new Exception("讀卡器鏈接失敗!發生未知異常。");
            }
} } }

 

4.至此一個簡單的平臺驅動組件已經開發完成了,下面我們來調用試試看。

private void btn_NoneCard_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
    //經過如下四種方式調用驅動組件
    //方式一
    //var driver = Controller.GetIPlugin(Guid.Parse("69715891-FBA5-428A-94B1-5C6D5C28926F")) as IPluginDriver;
    //方式二
    //var driver = Controller.GetIPlugin("Driver.NoneCard.dll", "Driver.NoneCard.Driver", "Drivers") as IPluginDri
    //方式三
    //var driver = Agile.Library.Controller.GetIPlugin("Driver.NoneCard.Driver.Driver") as IPluginDriver;
    //方式四
    var driver = Agile.Library.Controller.GetIPlugin<Driver.IDCard.Driver>() as IPluginDriver;
    IDCard entity = driver.Open();
}

 

OK 運行成功,那麼我們第一個驅動組件【身份證閱讀驅動】已經開發好了,Agile.Net開發管理平臺中包含本案例完整源代碼。

相關文章
相關標籤/搜索