本系列我將主要通過圖片和少許文字講解通過個人自研的PowerDotNet進行快速開發平臺化軟體產品,
PowerDotNet不僅僅是包含像Newtonsoft.Json、Dapper、Quartz、Redis、ZooKeeper、ElasticSearch、ETCD、Autofac、JWT、MyBatis、EF、RabbitMQ、ObjectPool、Hessian、Thrift、gRPC、SuperSocket等流行的類別庫和組件,像ABP、SpringBoot之類的開發框架套件和工具,它還是一整套完善的前后端(支持傳統BS和CS結構,也支持H5和APP)快速開發和簡易運維解決方案,它的最大優勢是深刻理解了一線平臺開發和業務開發人員的核心訴求,在此基礎上進行提取和抽象,并且實作了公共組件核心功能開發,提供了良好的操作UI界面,對開發和運維人員非常友好,
PowerDotNet致力于系統應用開發服務化、平臺化、自動化和產品化,到目前為止已成功開發出服務治理、配置中心、任務調度、CRM、應用和系統管理、集群管理、服務器管理、域名管理、資料同步、日志管理、檔案管理、訊息管理、支付平臺等公共服務產品,開箱即用,整個代碼實作都朝著“簡單高效”、“高內聚”、“低耦合”、“兼具功能和性能”、“優雅漂亮有品位”的方向努力,所有核心邏輯都有單元測驗覆寫 ,不拘泥于語法糖和框架,務實不炫技,面向介面編程 ,可擴展性非常強,
PowerDotNet是我個人多年軟體開發實踐和架構設計經驗的匯總,很多都經過生產環境的考驗,我認為還是相當靠譜的,敝帚自珍,與同道中人分享,不亦樂乎,
第一篇從最簡單的基礎資料平臺開始說起,
一、需求來源
現代軟體基本離不開各種各樣的基礎資料,比如全域都可以使用的區域、證件型別、二字碼、三字碼、通用字典等資料;和業務有點關聯的公司、組織、級別等資料;和業務緊密關聯的業務基礎資料,如商品主資料等,
對這些資料的管理,是非常費力不討好的事情,因為很多人,主要就是各種高大上的管理人士,認為這些對提升業務沒啥價值,
但是,設計和管理不好,后期又會造成開發難題,很多公司基礎資料散布在各種子系統中,連保證資料的基本正確統一都做不到,所以必須重視這些基礎但是看上去沒啥技術含量的東西,
二、系統抽象
平臺,可以理解為一個完備的業務系統,而系統由單個或多個應用(獨立行程)構成,
本文不討論系統和應用的關系,只按照自己的正常理解來開發業務系統,
具體到基礎資料平臺的開發,業務功能看上去比較簡單,主要就是資料的CRUD而已,
按照正常需求理解,我們可以肯定至少需要開發兩個應用:
1、帶界面的管理后臺
2、不帶界面的對外開放的介面
不需要復雜冗余的架構設計,簡易分層架構如下(截圖只是冰山一角,實際專案比這復雜多了):

三、管理后臺
具體CRUD實作就不看了,本文技術選型為Asp.Net MVC,看幾個截圖就好,
1、區域管理
區域管理支持大洲、國家或地區、省、市、區縣、鄉鎮或街道、社區或居委會或村委會這幾級,滿足了大部分公司常見的區域功能需求,

2、IP地址

3、證件型別

4、通用字典

四、WebApi介面
介面也好說,簡單定義幾個查詢介面,集成流行的Swagger,

有人可能會說,你這個WebApi介面命名很不講究,不規范,應該多用名詞少用動詞,應該注意區分GET、POST、PUT、DELETE等方法,還要注意快取blablabla,
本文不講WebApi命名,后續文章將介紹服務治理,到時候你會發現WebApi起名真的不重要,服務治理平臺徹底解決REST API命名難題,開發人員只需要關心業務邏輯實作就好,
WebApi還可以開發成使用OWIN或者其他非IIS形式的宿主,截圖里WinService目錄使用的是Windows服務實作webapi宿主,下面示例截圖是WinForm宿主的WebApi:

注意,真正的基礎資料平臺功能比這個復雜太多太多了,單純一個業務主資料就夠喝一壺的,本文截圖只做講解用,
五、其他RPC協議介面
在.NET開發框架下,我們基本都會熟練寫出基于HTTP協議的WebApi、WebService、WCF甚至上古時期的.NET Remoting介面,以及個人實作的RPC專案Power.Apix,咩哈哈,
隨著.NET Core的大流行,很多其他RPC協議的介面被廣泛使用,如Hessian、Thrift、gRPC等,
PowerDotNet自動集成了Hessian、Thrift、gRPC協議的介面解決方案,實作起來幾個模板類就可以搞定,

PowerDotNet讓不同協議的介面開發變得無比簡單易用,配合后續要講到的服務治理,你就知道PowerDotNet的優秀設計與實作是多么的富有創新,咩哈哈哈,有點過分自信了,
本文重點不是講這些協議如何集成,后續有時間再說,
六、.NET Core實作
.Net Core已經越來越成為.Net開發者的首選開發平臺,作為資深開發人員,當然更要積極擁抱.Net Core,雖然PowerDotNet積累的歷史比較久遠,但是在.Net Core1.0時代就有一個.NET Core實作計劃PowerDotNetCore,目前主要實作是基于.NET Core2.0,正在開發完善當中,

實作WebApi介面或者管理后臺頁面非常輕松,

后續有機會再介紹PowerDotNetCore,
七、提取可復用功能
除了WebApi,我們還可以開發其他形式的API服務,比如WCF、WebService、.Net Remoting、Thrift、gRPC等,
開發不同形式的應用時,我們發現,還可以抽象出應用(行程)上公共的可復用的部分,比如,這些應用都需要連接資料庫,都需要讀取組態檔,都需要部署至測驗、生產等環境,以及無處不在的日志記錄等,
那么這些應用上公共可復用的部分是否能夠抽象出來,供更多的應用開發復用?答案是顯而易見的,
PowerDotNet在復用公共功能、可維護性、可擴展性上有更高級別的抽象,
下面幾篇文章將介紹PowerDotNet實作的應用可高度復用的模塊和組件,這些模塊和組件將獨立設計成為公共服務系統,
作者:Jeff Wong
出處:http://jeffwongishandsome.cnblogs.com/
本文著作權歸作者和博客園共有,歡迎圍觀轉載,轉載時請您務必在文章明顯位置給出原文鏈接,謝謝您的合作,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/297039.html
標籤:架構設計
