.Net業務搭配實用技術棧

前言

昨天有篇文章在討論webform的設計思路,我已經四五年不用webform了,雖然它也提供了HttpModule和httphandle來處理請求,提供了一般處理程序ashx來簡化處理流程,但依然會想起它的form runat=server,想起註冊客戶端腳本,想起那堆服務器控件,還有著名的GridView72變。但即使不用服務器控件,它也能提供很強大的功能。

後來微軟提供了另一套解決方案asp.net mvc 。其實剛開始我並不習慣,一是因爲思路轉變,新知識需要學習。二是因爲當時做報表用rdlc,但mvc不支持。rdlc對於數據的處理很強大,但瀏覽器兼容性太差,用於winform客戶端效果還是很棒的。mvc用熟後,webform再也沒用過了。我沒再用過的東西多了,但不否認它們依舊強大,也足夠支撐你龐大的業務。

C/S端的話,winform和wpf依舊應該很流行。這塊我做的少,理念上大同小異。

無意浪費時間去爭論誰好誰壞,能爲你掙錢的都是好框架。閒話少說,書歸正傳。今天我根據以往接觸或未來想要進修學習的業務規模,來總結下對應的技術棧,來爲未來準備,面向未來思考。

第一種類型企業官網

性質:訪問量少,網頁功能相當簡單。一般爲首頁,公司介紹,產品介紹,聯繫我們等。

對應解決方案:

這類可推薦一些開源CMS,無需關心後臺,設計好頁面,只修改前端頁面就行。

如果打算自己開發,見幾個表存取下完事。不要想太複雜的架構。簡單來,快速交付。

數據庫:可採用access,SQLite或sqlserver,mysql都行。

.net需要儲備:瞭解ado.net,dapper,泛型,反射等。瞭解數據庫操作常用語句。

第二種類型流量內容網站

整個網站屬於新聞類型,有較多內容分類,日均訪問量一萬以下。每小時平均一千量。相對於iis每秒成百上千處理數,這點量絲毫不成壓力。能日均一萬訪問量,那說明這個站在小圈子內有很大名氣了。

對應解決方案:

仍然推薦開源或自研的cms,一般方案首頁和分類定時靜態化或啓用緩存,明細頁直讀數據庫或經過緩存。

數據庫:sqlserver,mysql,mongodb

.net儲備:

定時任務如hangfire,quartz.net

Cache系列(頁面緩存,httpruntime緩存等),

安裝windows服務topshelf

常用的設計模式等。

數據庫增量備份還原與全量備份還原。數據庫索引優化。

uv和pv等了解。

搜索引擎優化知識必要了解。

第三種類型小流量業務管理系統

小流量業務管理系統的特點是業務較複雜,但用的人數可能控制在幾人幾十人。但業務單據一天天下來也非常多。有很多公司每年底或年初會清數據,彙集到數據倉庫,新的一年新數據。我之前待過的一家集團超市公司有幾個分店,業務系統基於powerbuilder開發,用的是db2數據庫,每天營業額數據也挺大的。每天十點有日結,月底有月結。

對應解決方案:

這裏一般是購買商業軟件或者基於產品二次開發了,完全從頭開發需要投入很多時間和費用。

數據庫:sqlserver,mysql,postgresql

.net儲備:

數據庫存儲過程,函數,優化,關聯表等。

數據庫性能重中之重。

數據庫每幾分鐘增量備份,一週全備份。讀 寫分離也可以在這時介入。

Redis可以考慮引入。

設計模式有需要的場景。

在計算報表和一些情況下,多線程,並行處理數據也會考慮引入。

Dapper,EF開始了用武之地,幹起來!

依賴注入,aop 可以考慮引入。

可考慮引入前端vue,element。

以上考慮部分,根據業務規模和使用頻數來決定是否引入。業務量太小時,引入多餘架構反而有些笨重。

第四種類型百花齊放互聯網和大數據量項目

性質:面向c端或B端。訪問量大,業務多。雖然還有很多細分,但面向了互聯網,我們就時刻準備着未來它能爆發式迎接大批量數據,我們的應用要高可用,健壯!時刻準備着,爲未來!哪怕很多互聯網公司生存週期只有幾年!

數據庫:Mongodb,mysql,postgresql

.net儲備:

數據庫集羣。

Mongodb集羣,分片等。

必不可少,Redis緩存,緩解數據庫壓力。需要了解redis運行機制,緩存穿透和緩存雪崩等。

必不可少,消息隊列rabbitmq或Kafka,多業務系統之間消息傳遞,解藕。需要了解rabbitmq運行機制和amqp協議。

很重要 Elastic-search,Es可以通過mongo-connector實現同步mongodb數據,是一個數據極快的搜索引擎。另外可以用ELK搭建日誌分析系統,這塊我還需要練練手,需要了解Es如何應用,部署,問題排查等。

理論積累之微服務:微服務api網關,監控,服務發現,熔斷降級,限流等。可參考微軟olreans,Akka.net,ocelot,appllo,前些天過千的surging。有源碼的常分析借鑑,理解透。

理論積累之TDD:單元測試,集成測試,自動化測試。

理論積累之CI/CD:需要熟練掌握jenkins配置。熟悉docker生態工具用法。

理論積累之領域驅動:微服務怎麼拆?怎麼微?服務之間如何聯繫?領域驅動設計爲你提供了大量的建議,雖然不會都完美,但可以爲你提供思路。領域,子域和限界上下文,領域服務,事件驅動,CQRS責任分離,貧血富血模型。我現在正在抽時間看這個,期待能有所應用。

理論積累之.net

並行編程,異步編程。多線程安全等。

網絡編程socket,orleans的網關連接就是基於socket,在之上又包裝了一層gateway連接。socket和tcp/ip通信息息相關,熟練了這個,其他語言同樣思路都會了。很多RPC框架也是基於socket,是網絡連接的源泉。

.netcore mvc的通用主機,內置kestrel,中間件等,單元測試,docker運行等需要深入瞭解。

理論積累之Linux:

.netcore最重要特性是跨平臺,以前對linux不熟悉的部分,需要儘快熟練,要變成一個老手。

業務演練之單點登錄

業務演練之秒殺

業務演練之短信限發

業務演練之實現消息隊列模型

業務演練之實現分佈式通信模型

業務演練之搭建微服務框架模型。

後語

粗糙了列了一堆技術棧,好像都見過,深入一問總卡殼,我覺得還是寫的文章太少。不寫出來,印象就會不會太深刻。我最近已經開啓了兩日一更,不知道能堅持多久,而且太散。先繼續積累吧,以後能不能寫成系列性的文章再說。收拾心情再出發!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章