[Asp.Net Core]提高開發效率的方法_實用技巧

來源:腳本之家  責任編輯:小易  

不一樣ASP.NET Core 是一個用于net程序跨平臺的框架,在它的基礎上會重寫.NET Framework(windows)、Mono(Linux),以實現所有net程序、網站的跨平臺ASP.net 是一種e68a84e799bee5baa6e79fa5e9819331333361326364微軟推出的網站開發技術 目前一般分為 asp.net webform、asp.net mvc 兩種ASP.NET Core 1.0 是一個開源跨平臺的開發框架,用于構建基于云的現代 Web 應用。它是從底層開始重新構建來提供性能優良的Web應用開發框架,可以部署在云上或者本地服務器上。另外,它使得 ASP.NET 應用更加精簡和模塊化(可以根據你的應用需要向里面添加其他模塊),跨平臺(你可以很容易的在 Windows,Mac or Linux 上開發和部署你的應用),云優化(你可以在云上在云上部署和調試你的應用)。ASP.NET又稱為ASP+,不僅僅是ASP的簡單升級,而是微軟公司推出的新一代腳本語言。ASP.NET基于.NET Framework的Web開發平臺,不但吸收了ASP以前版本的最大優點并參照Java、VB語言的開發優勢加入了許多新的特色,同時也修正了以前的ASP版本的運行錯誤。[1-2]ASP.NET具備開發網站應用程序的一切解決方案,包括驗證、緩存、狀態管理、調試和部署等全部功能。在代碼撰寫方面特色是將頁面邏輯和業務邏輯分開,它分離程序代碼與顯示的內容,讓豐富多彩的網頁更容易撰寫。同時使程序代碼看起來更潔凈、更簡單www.anxorj.tw防采集請勿采集本網。

一、概述

在園子里面有很多關于各種技術細節的研究文章,都是比較牛逼的框架研究;但是一直沒有看到關于怎么樣提高開發效率的文章,大多提高開發效率的文章都是關于自動化等方面的輔助工具類型的,而不是開發中的一些小技巧;今天從編碼規范、編碼技巧、開發思想、設計模式等各方面的經驗來分享如何提高開發效率。

重要的是.NET Core和ASP.Net添加‘go live’協議,允許用戶在生產環境部署,可以反饋在生產環境是如何運作的。并且,現在.Net Core已經完全支持Mac,Linux和Windows三個平臺,特性都已完整。

二、實際場景

查了一下,可以用命令行生成相應的文件: Scaffold-DbContext\"Server=.\\SQLExpress;Database=SchoolDB;Trusted_Connection=True;Microsoft.EntityFrameworkCore.SqlServer-OutputDir Models

在這個前后端分離盛行的開發年代,分工比較明確,開發者分前端開發者和后端開發者,然而感到欣慰的是.net 開發者大多是擔任著全棧開發的職責,有經驗的開發者都是從前端走過來的,說白了前端業務代碼對后端開發者來說那都不是事。

重要的是.NET Core和ASP.Net添加‘go live’協議,允許用戶在生產環境部署,可以反饋在生產環境是如何運作的。并且,現在.Net Core已經完全支持Mac,Linux和Windows三個平臺,特性都已完整。

前后端分離前:幾年前前后端還未分離的時候,各種前端框架還未流行的時候,開發者的效率算是比較低下,后端干前端的活,甚至前端和后端夾雜工作,導致了工作開發容易亂,需要相互依賴,不能完全并行工作,這導致了開發效率底的一個極大的原因,同時開發出來的東西體驗也是很差。

在asp.net core 里非常建議使用entity framework,因為新的entity framework core定義了一套接口標準,就如同ado.net一樣,只要有廠家實現了這套接口就行,而且廠家的實現肯定會更好一些。在asp.

前后端分離:職責分明,后端專注后端的開發,前端專注前端的開發;相互依賴關系很弱,后端可以先定義開發接口,前端頁面及mock 接口對接,最后聯調測試時間前后端打通過;前后端完全可以并行開發,開發周期縮短一倍時間;不過這也就會導致了一個致命的問題,大多開發者只管自己的那一部分,不會以全局考慮,導致的一個問題就是聯調測試時間代價太大,遇到問題相互甩鍋。

服務器版本是多少

前后端都存在的問題,會再聯調測試時間全部暴漏出來,這也是為什么聯調測試時間會花費那么長時間,甚至晚上加班加點再處理問題的原因,總結如下: 開發過程中不夠謹慎,全是空異常問題 代碼不規范,代碼邏輯嵌套層次太深,牽一發而動全身,以至于修改這里,爆露出那邊的問題出來,不會適當的解耦 后端接口返回的字段含義不明確,不清晰,甚至完全跟字段含義違背,比如數據庫中有一個int 類型的Type字段,而前端需要類型的中文名稱,后端開發者偷懶直接用Type 字段返回字段中文名稱,后面前端需要int 類型的Type 有不知道加什么字段為好,導致修修改改,影響效率,下面我會具體分享細節。 眼觀不足,不會考慮后續的需求變更擴展 沒有設計模式思想,導致維護成本變大

下面從幾個方面點來具體分析

三、空異常

1.1 不可信原則

作為開發者,你都可以把自己作為方法調用者的第三方,不需要去關注方法的實現,只需要關注調用方法我應該得到什么結果;然而作為調用者第三方,你都需要認為實現者的方法都是不可信狀態,只需要秉承該原則,基本上你就跟空異常沒有緣分了.

1.2 ?. (null條件運算符)

先來看一下以下代碼:

[HttpGet] public async Task<DataResponse<bool>> GetTest() { var list = GetList();//獲取List 列表 if (list?.Count <= 0) { return DataResponse<bool>.AsError("沒有獲取到數據"); } //TODO 更新操作 return DataResponse<bool>.AsSuccess(true); }

上面代碼很多人可能會這么寫,實際上是存在問題的list?.Count <=0 實際上在list 為空的時候就成了null<=0 判斷了,則也是false,不符合預期結果,正確的代碼如下:

[HttpGet] public async Task<DataResponse<bool>> GetTest() { var list = GetList();//獲取List 列表 if ((list?.Count??0) <= 0) { return DataResponse<bool>.AsError("沒有獲取到數據"); } //TODO 更新操作 return DataResponse<bool>.AsSuccess(true); }

這里就引用了?? 運算符(空合并運算符)

1.3 ?? (空合并運算符)

MSDN上面的解釋:?? 運算符稱為 null 合并運算符,用于定義可以為 null 值的類型和引用類型的默認值。如果左操作數不為 null,則此返回左操作數;否則當左操作數為 null,返回右操作數。

1.4 如何遠離空異常?

秉承原則:不可信原則,什么是不可信原則呢?你調用方法都任務改方法是不可信的,包括自己寫的方法;這在敏捷快速開發中更明顯,特別是調用團隊中別人開發的微服務api ,你不需要關注方法的實現,只需要關注方法的結果即可,但是也不能太過于相信它;所有的返回結果你都需要判斷是否是null 的結果數據,多結合?. 和?? 運算符進行合理的邏輯處理,可以讓你的項目從此遠離空異常。

四.If else 解套

先來看一看比較有趣的網絡上的圖片

取反原則

對于上面的if else 嵌套業務大家是不是經常遇到,看到這種代碼會非常的頭疼,難于維護,影響開發效率,同時也容易出現bug。有經驗的開發者必定會對上面這段代碼進行優化,我的經驗是取反原則。

什么是取反原則呢?把不符合的條件先 return 下去,到最后留下符合條件的邏輯,這就是取反原則,一眼看下來就只有一層嵌套,不會存在多層嵌套。

我們來看下我遇到的實際場景代碼,源代碼大體如下:

if (condition){ if (condition1) { if(condition2) { if (condition3) { if (condition4) { // do something } else { // do something } } else { // do something } } else { // do something } } else { // do something }}else{ // do something}

取反原則優化后的代碼如下:

if (!condition) { // do someting return; } if (!condition1) { // do someting return; } if (!condition2) { // do someting return; } if(!condition3) { // do someting return; } if(!condition4) { // do someting return; } // do someting

五、必要的設計模式

開發過程中不要一個鏈路寫到底,需要把某塊業務先想好,定位明確,該業務是應該屬于哪一塊,哪一類業務,后續可能會出現哪些方面的業務變動,適當的引入設計模式,那么多的設計模式,總有一個適合你當時開發的場景;

設計模式的選取需要對該模塊的作用及定義清晰,多思考,多歸類,自然而然心中就有了合適的設計模式的考量。

六、必要的單元測試

做到每個方法單元測試,最好是全路徑覆蓋到每一條分支的單元測試,先從小的方法單元測試,底層的方法單元測試通過后,再通過postman或者其他工具來進行對外API接口層面的測試,做到全路徑覆蓋的測試,往往開發人員有一個思維就是測試正常的業務流程,異常流程往往一概不考慮測試;然而出問題的都是那些異常的流程,單元測試需要遵守的原則如下: 盡可能的全路徑覆蓋測試 拋棄自己寫的代碼思維,當一個小白進行單元測試 關注異常路徑的單元測試 摒棄依賴思想,不要依賴聯調測試時間來進行測試,往往你開發只管開發,不管正確率,到后續測試聯調時間那就的瘋狂加班加點去趕進度了,還不能保證最佳的產品質量。

以上就是[Asp.Net Core]提高開發效率的方法的詳細內容,更多關于Asp.Net Core提高開發效率的資料請關注真格學網其它相關文章!

asp.net mvc5只能運行在Windows,一般通過IIS發布;asp.net core開源,可跨平臺,能夠發布到Linux等系統上。asp.net core做了很多的整合工作,目前來說完成了最基本的一部分類庫的遷移。從前景上來說,asp.net core肯定是以后的一種潮流,隨著docker等技術的普及,跨平臺的重要性凸顯,必須要使用asp.net core編寫的接口才能發布到linux中,也就是asp.net core編寫的接口可以做成docker的鏡像發布,而asp.net mvc5不能。所以最終肯定是會慢慢都轉移到asp.net core上來。但是這需要一個比較久的過程。因為從asp.net mvc5轉移到asp.net core需要一定時間的學習,即使在國外也需要一定過程。而國內由于語言環境、開發工具(需要VS2015才能進行asp.net core的開發)等的原因,肯定需要更久。國內的技術一直以來也比較保守。如果單純的以在國內找個開發的工作的話,建議先熟悉下asp.net mvc5。如果確實有跨平臺的需求,或者團隊成員都對新技術有很高的熱情,從事的也是全新的項目的話,就使用asp.net core吧內容來自www.anxorj.tw請勿采集。


  • 本文相關:
  • .net core3 用windows 桌面應用開發asp.net core網站
  • asp.net core應用錯誤處理之developerexceptionpagemiddleware中間件呈現“開發者異常頁面”
  • asp.net core利用文件監視進行快速測試開發詳解
  • asp.net core開發教程之logging利用nlog寫日志文件
  • asp.net core優雅的在開發環境保存機密(user secrets)
  • visual studio 2017 asp.net core開發
  • vs2015 搭建asp.net core開發環境的方法
  • wcf中使用nettcp協議進行通訊的方法
  • asp.net 動態寫入服務器端控件
  • asp.net記錄錯誤日志的實現方法
  • 詳解開源免費且穩定實用的.net pdf打印組件itextsharp(.net組件
  • asp.net程序目錄下文件夾或文件操作導致session失效的解決方案
  • .net core中objectpool的使用與源碼解析
  • asp.net 窗體間傳值的方法
  • 點擊圖片,ajax刪除后臺圖片文件的實現代碼(asp.net)
  • asp.net導出excel類庫代碼分享
  • 看到本質而不是現象--解決asp.net cs0016的問題
  • 請問:ASP.net mvc5和asp.net.core有什么區別呢?在今后的發展中這個前景怎么樣?
  • ASP.net core是什么,和ASP.net一樣嗎?
  • 如何在ASP NET Core中實現CORS跨域
  • asp.net core mvc 是不是未包含使用UA 動態選擇displayModel
  • 如何評價asp.net core
  • 請問asp.net core mvc怎么使用ef連接現有數據庫?
  • vs2017 asp.net core 啟動異常
  • asp.net core里面,EF和NH哪個對Oracle的支持更好?
  • iis掛載上asp.net core 之后成功了,但是每天都會出問題
  • ASP.NET Core win2003上可以用嗎
  • 網站首頁網頁制作腳本下載服務器操作系統網站運營平面設計媒體動畫電腦基礎硬件教程網絡安全基礎應用實用技巧自學過程首頁asp.net.net core3 用windows 桌面應用開發asp.net core網站asp.net core應用錯誤處理之developerexceptionpagemiddleware中間件呈現“開發者異常頁面”asp.net core利用文件監視進行快速測試開發詳解asp.net core開發教程之logging利用nlog寫日志文件asp.net core優雅的在開發環境保存機密(user secrets)visual studio 2017 asp.net core開發vs2015 搭建asp.net core開發環境的方法wcf中使用nettcp協議進行通訊的方法asp.net 動態寫入服務器端控件asp.net記錄錯誤日志的實現方法詳解開源免費且穩定實用的.net pdf打印組件itextsharp(.net組件asp.net程序目錄下文件夾或文件操作導致session失效的解決方案.net core中objectpool的使用與源碼解析asp.net 窗體間傳值的方法點擊圖片,ajax刪除后臺圖片文件的實現代碼(asp.net)asp.net導出excel類庫代碼分享看到本質而不是現象--解決asp.net cs0016的問題java正則表達式 pattern和matche未將對象引用設置到對象的實例 (asp.net(c#)網頁跳轉七種方法小結未能加載文件或程序集“xxx”或它asp.net“服務器應用程序不可用”asp.net中的幾種彈出框提示基本實asp.net gridview 72般絕技asp.net生成excel并導出下載五種asp.net對路徑"xxxxx"asp.net漢字轉拼音和獲取漢字首字asp.netweb服務器驗證控件如何使用asp.net 5中使用azuread實現單點登錄asp.net 頁面中動態增加的控件、添加事件asp.net中的無刷新驗證碼的開發(完整代碼asp.net 通用萬級數據分頁代碼[修正下載地asp.net core實現自定義webapi模型驗證詳asp.net使用npoi讀取excel模板并導出下載高效的.net udp異步編程實現分析.net中的屬性用法分析wpf制作一個簡單的倒計時器實例附源碼
    免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
    Copyright © 2017 www.anxorj.tw All Rights Reserved
    陕西快乐10分下载