主頁 > 軟體設計 > Ligg.EasyWinApp-000: 一款Windows應用編程框架介紹

Ligg.EasyWinApp-000: 一款Windows應用編程框架介紹

2020-09-15 00:19:01 軟體設計

    本框架(解決方案)是一個Windows應用編程框架和UI庫,通過該框架,不需任何代碼,通過XML組態檔,搭建任意復雜的Windows應用界面,以類似Execel公式的方式實作基本的程序控制(賦值、條件判斷、回圈、跳轉)和功能(字符/檔案處理、Windows腳本執行、邏輯運算、數學運算、資料輸入輸出及輸入驗證、資料格式轉換、加密解密、表單欄位驗證等);動態加載“即插即用“的.Net組件或COM組件實作特定的業務處理功能;支持多執行緒、多語言,

 

  •  Ligg.EasyWinForm是一個Winform應用編程框架和UI庫,通過該框架,不需任何代碼,通過組態檔,搭建任意復雜的Windows應用界面,以類似Execel公式的方式實作基本的程序控制和功能;動態加載不同的“即插即用“的核心業務處理元件(CBLP Dll)實作特定的業務處理功能,
  •  Ligg.EasyWinConsole是一個Windows控制臺應用編程框架,與Ligg.EasyWinform相似,配合引數傳入及鍵盤輸入;通過組態檔,以類似Execel公式的方式實作基本的程序控制和功能,動態加載不同的“即插即用“的核心業務處理元件實作特定的業務處理功能,
  • Ligg.EasyWinService是一個Windows服務的應用編程框架,通過一個組態檔, 定義啟動/關閉、即時/定時/回圈運行的作業,動態加載不同的“即插即用“的核心業務處理元件實作特定的業務處理功能,實作“一個Windows服務、一個組態檔”,實作不同的業務場景下的不同的功能,可以用作運維自動化的主控臺實作嵌入式設備或電腦的無人值守的、遠程監控和運維,
  • Ligg.EasyWinSignalR是一個基于Windows的SignalR客戶端應用編程框架,一個單用戶對多臺機器的即時通訊工具,內建基本功能如聊天、傳送接收檔案、截屏等,通過用戶對機器的指令,動態加載不同的“即插即用“的核心業務處理元件實作特定的業務處理功能,可以用作運維自動化的代理實作嵌入式設備或電腦的實時、遠程監控和運維,

 

專案參考關系結構圖

 

 

 

專案程式運行結構圖

 

**說明SeqExec.exe是一個C撰寫的.net程式的啟動程式,用于檢測.net版本并安裝指定的版本,然后運行主執行程式并傳遞引數,(代碼和示例詳見:https://www.github.com/liggin2019/Ligg.SeqExec)

 

本框架的來源

      先來說說本框架的來源:

      還是VC1.5時代,本人被“國家分配”至某研究所,擔任“軟體工程師”,有幸加入某“鐵道用制票檢票機專案”,開始了程式狗的生涯,當時為了配合硬體工程師除錯樣機,需要用C寫大量的測驗用例(界面)呼叫inport()、outport()來做測驗,剛開始任勞任怨第每天Copy/Paste,后來一想不對,于是偷懶,按不同測驗型別用不同的.ini檔案做了一個界面生成器,有新的測驗,就只需要Copy一下.ini檔案,改一下引數就行了,最后這個任務就交給硬體工程師自己做了,這算是這個框架的萌芽吧,

      后來在.net2.0時代,在某電子公司任職時,恰逢公司引進某先進的“視覺檢測設備”,但是公司的需求與設備有一些不一致的地方(簽合同時并沒有搞清楚),要求供應商修改主程式(其實就是界面和某些運行引數),被告知一個天價;于是從總部請來了軟體工程師和硬體工程師決定對該設備進行改造,在與軟體工程師進行本專業的友好交流時,被強行拉入這個“視覺檢測設備”的引進和改造專案,供應商也許出于內疚,破天荒提供了基于OPC協議的COM介面程式, 于是總部軟體工程師負責介面程式的撰寫,本人負責界面程式---通過組態檔實作一系列測驗界面進行設備除錯和校勘;最后做了一個外置的界面實作非常規的專案檢測;這算是這個框架的出生元年吧,

      轉眼到了.net4.0時代,本人在某包裝公司任職,集團決策層崇歐尚美,一直走在實踐國際化企業管理理論的前列,躬逢其盛,在本人入職的第二年公司同時落地ISMS和ITIL專案,政策和流程檔案多達幾百頁,但是,所有流程在服務器和用戶端電腦上的操作如監控/巡檢/配置/部署等是需要手工或半手工(寫點腳本)進行的,而且其中2個異地工廠(也有幾臺服務器和幾十臺用戶端電腦)是沒有專職IT人員的,分別由一位財務大姐和一位電工兄弟兼職!!多次提議上一個HP/DELL/MS的運維自動化系統,管理層置之不理,眼看運維組的兄弟要一個個辭職了,某天晚上突然醍醐灌頂,意識到所有的這些手工或半手工的操作不就是對檔案、注冊表、主策略、用戶用戶組的處理還有軟體安裝/卸載、網路/資料庫/電腦性能檢測這些操作嗎?這些都可以程式實作,繁瑣的事只不過是要移步到每臺電腦,做大量的手指重復的敲鍵盤的動作而已,何不利用以前的程式框架做一個運維自動化系統,讓運維兄弟們足不出戶,通過預先設定、一次敲滑鼠,批量完成這些重復動作,甚至可以從一鍵完成到通過Windows服務自動完成,通過SignalR編程實時遠程完成?說干就干,當天凌晨畫了需求框架,然后請假一周,一周后初步完成就拿去救火,這算是這個框架的1.0版本吧,

      后來再把這套框架拿來做了公司的HR系統、MES系統,算是這個框架的2.0版本,

      后來有一個軟體公司做開發總監的朋友,看了這個東西后,覺得特別適合他們做軟體測驗,于是就拿給他們試用,參考他們的反饋和建議,反復迭代、修改----抽象、解耦、提純,就演變成了今天的共享給大家的這個東西,算是這個框架的3.0版本,

      另外我會把上面提到的運維自動化系統匹配到最新版本的框架,寫成另外一個專題“Windows運維自動化編程實戰”,也會陸續分享給大家,

 

本框架的特點

1. 界面和基本的程序控制和基礎功能通過配置實作,把程式員從繁瑣重復的勞動中解放出來,提高開發效率,縮短開發周期,適用于所有.net開發人員和組織,

    EasyWinForm完全可以高仿 SAP GUI、SEP客戶端、360安全衛士客戶端的界面,并且是完全通過組態檔實作,.net的Winform的拖拉控制元件上手很快,但是要實作一些復雜的東西還是需要一些奇巧淫技的,比如實作界面統一風格和樣式、以單表單模仿多表單效果、象360的所有Windows客戶端產品點關閉按鈕只是最小化(配合Tray)、彈出一個非視窗的對話框、隱藏/顯示(切換)一側的區域等等,即使對于一個Winform的熟手,在修改或拷貝一個多層繼承帶有Resource的的表單時,一不小心就會弄出各種莫名其妙的錯誤,這個對Winform的開發人員來說應該是深有體會的,如果使用EasyWinForm,所有的界面元素完全是通過XML檔案實作,這個作業交給一個IT文員來做是完全可以勝任的,核心工程師只需要把精力放到實作核心業務邏輯的代碼上去就行了;并且EasyWinForm自帶了類似Excel公式的基本的程序控制和基礎運算/處理函式,業務邏輯的代碼可以寫的非常簡潔(函式式),可以說核心工程師只需要寫“核心”業務代碼就行了,

2. 前端和后端完全分離,真正實作松耦合、后系結輕松應對需求多變的場景,特別適合軟體測驗、嵌入式設備開發除錯、需求階段的原型設計等應用,

    不管系統架構是怎樣的(連接嵌入式設備、直連資料庫或服務器+客戶端形式),由于界面和基本的程序控制完全靠配置來實作,框架后端采用動態加載“即插即用“的核心業務邏輯處理元件(CBLP DLL形式),前后端就完全實作了解耦,

    比如一個ERP系統,MRP運算、復式記賬法這種公式定理一樣的東西,把它寫在CBLP組件里,做到千年不變;變的只是流程、場景、可視化的一些東西,這些可以把它放到前端、通過傳參+配置實作,

    再比如我們即將介紹的運維自動化系統,把對檔案、注冊表、主策略、用戶用戶組的處理還有軟體安裝/卸載、網路/資料庫/電腦性能檢測監控寫在CBLP組件里,變的部分如:今天管理員密碼修改為abcd,明天修改為1234、注冊表里WSUS服務器地址要緊急改動、明天ISMS政策又增加了對屏保的管理、由于專線中斷臨時修改所有電腦的host檔案、需要臨時清查盜版軟體等等,這些在EasyWinForm里通過配置增加一個表單,或在EasyWinService里增加一個Procedure就可以搞定了,對于這些變更,根本不需程式員出手,

    所以總而言之:CBLP組件的代碼是以不變應萬變;傳遞引數+配置的組合是以萬變應萬變,對需求多變、需求不明確、需求選項比較多的場景特別適用,

3. 支持多文化、多語言,適合跨國公司管理系統作為開發框架使用,

    在.\applications\App-n\Cultures\ Cultures.xml做一個設定和不同級別的Annexes.xml里按語言增加條目,所有與用戶互動的元素都會按Culture顯示相應文字,.

 

致謝

    首先感謝這個時代和互聯網;

    感謝博客園以及CSDN、github、stackoverflow、sourceforge、gitee、codeproject、codeplex 等開源共享平臺,使我們只需一條網線、一臺電腦就可以操習并精進一門技藝,籍以安身立命、養家糊口;

    感謝 張善友、Jeffrey Su、廖雪峰、梁桐銘、依樂祝、伍華聰、小坦克、黃燈橋、蔣金楠、周金根、軟體教書匠金旭亮、老趙、靈感之源、程式員鄒欣、周金橋、瀚海潛游、玩家云風、tinyfool、ruanyf; 你們開放真誠的分享就像陽光雨露,滋養著這顆禾苗,讓我們懷著感恩的心生根發芽,開花結果,

    感謝使用本框架的同事、朋友、用戶,對你們寶貴的建議我大部分在最新版本里做了修訂,

    特別感謝csharpwin,雖然你的站點已經停止運營,但是你曾經分享的關于Winform方面的知識和經驗對本框架形成起了很大作用,在此向你表示衷心的感謝,并致以崇高敬意和美好祝福!

    感恩前人慷慨的分享,回饋先賢智慧的引領;本人將把本框架以“一絲不掛”的姿勢赤裸呈現給大家,

    開源精神永遠不死!!                                                                       

 

結語

    本人雖然是一個老程式員,但是由于大部分時間是在企業從事管理系統和基礎設施的規劃、應用、實施等作業,專職開發編碼的時間并不長,所以謬誤之處在所難免,懇請大家在評論區多反饋并出提寶貴意見,

(如果在試用的程序中出現報錯界面,請如下圖點擊“發送錯誤資訊給開發者”按鈕,將會自動彈出本地郵件發送報錯資訊給本人)

 

 

 

 

 

 

 

以下將分幾個章節來介紹設計思路和分析原始碼:

Ligg.EasyWinApp-100-Ligg.EasyWinForm:一款Winform應用編程框架和UI庫介紹

LiggEasyWinApp-200-Ligg.EasyWinConsole:一款Windows控制臺應用編程框架介紹

LiggEasyWinApp-300-Ligg.EasyWinService:一款Windows服務應用編程框架介紹

LiggEasyWinApp-400-Ligg.EasyWinSignalR:一款基于WindowsSignalR客戶端應用編程框架介紹

 

 

 

 

原始碼和測驗用例請至https://www.github.com/liggin2019/Ligg.EasyWinApp訪問,

目前本框架只有Ligg.EasyWinForm的原始碼和demo,其他專案將陸續完善并上傳,

基于本框架的一些應用如Windows運維自動化系統(Ligg.WinOa)、企業網盤(Ligg.EntNetDrive)、電腦工具箱(Ligg.CmptTk),也將會陸續上傳,敬請留意,

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/39830.html

標籤:架構設計

上一篇:資料結構導論(第三章堆疊)

下一篇:如何讓多個不同型別的后端網站用一個nginx進行反向代理實際場景分析

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more