菜鳥之旅——初識.NET

来源:https://www.cnblogs.com/nbclw/archive/2018/01/06/8214377.html
-Advertisement-
Play Games

入坑.Net 也已經兩年多了,既然在微軟.Net 體系下混,對.Net 體系也需要瞭解一下,當然這些知識也都是查閱資料都能夠查到的,這裡主要是對自己所學的整理,況且最近的學習有些閉門造車的味道,現在想寫出來和大家分享一下,如果理解有偏差,歡迎園友指正! .Net Framework經歷了很多版本的變 ...


  入坑.Net 也已經兩年多了,既然在微軟.Net 體系下混,對.Net 體系也需要瞭解一下,當然這些知識也都是查閱資料都能夠查到的,這裡主要是對自己所學的整理,況且最近的學習有些閉門造車的味道,現在想寫出來和大家分享一下,如果理解有偏差,歡迎園友指正!

  .Net Framework經歷了很多版本的變更,但是它的框架沒有太大的變化,包括了公共語言運行時(CLR)、基類庫和.Net Framework類庫、公共語言規範和支持的語言;

        

  公共語言運行時(CLR

  CLR是.Net Framework的基礎內容,也是.Net程式的運行環境,可以將其看作一個在執行時管理代碼的代理,它提供了記憶體管理、線程管理、代碼執行、垃圾收集(GC)和遠程處理等核心服務,並且還強制實施嚴格的類型安全以及可提高安全性和可靠性的其他形式的代碼準確性。

  C#或者其它各種語言編寫的源代碼通過編譯器生成IL代碼托管(IL也稱托管代碼),最後得到一個托管模塊,一個或多個托管模塊組成程式集(assembly)交給CLR運行,但是CLR還是不能直接和操作系統(OS)直接交互,還需要JIT引擎來進行“翻譯”,變成電腦可以識別的二進位代碼交給操作系統執行。

  對了這裡提到了CLR就不得不提到托管代碼非托管代碼:

  托管代碼 (managed code)是由CLR(而不是直接由操作系統)執行的代碼。托管代碼應用程式可以獲得公共語言運行庫服務,例如自動垃圾回收、運行庫類型檢查和安全支持等。這些服務幫助提供獨立於平臺和語言的、統一的托管代碼應用程式行為。在托管執行環境中使用托管代碼及其編譯,可以避免許多典型的導致安全黑洞和不穩定程式的編程錯誤。同樣,許多不可靠的設計也自動的被增強了安全 性,例如 類型安全檢查,記憶體管理和釋放無效對象。程式員可以花更多的精力關註程式的應用邏輯設計並可以減少代碼的編寫量。這就意味著更短的開發時間和更健壯的程式。

  非托管代碼 (unmanaged code)是指在公共語言運行庫環境的外部,由操作系統直接執行的代碼。非托管代碼必須提供自己的垃圾回收、類型檢查、安全支持等服務;它與托管代碼不同,後者從公共語言運行庫中獲得這些服務。

  基類庫和.Net Framework

  基類庫(NET Standard Library)包含支持底層操作的一系列通用功能,覆蓋了集合操作、線程支持、代碼生成、輸入輸出(IO)、映射和安全等領域的內容。另外,.Net Core也是基類庫的實現,當然也有自己獨特的實現,並且與.Net Framework不同,它是支持跨平臺的,詳細學習會在後續的博客中分享。

  .Net Framework是基類庫在windows操作系統下的實現,包含類庫:資料庫訪問(ADO .NET等)、XML支持、目錄服務(LDAP等)、正則表達式和消息支持;並且還實現很多我們開發人員平常使用的應用程式開發技術:ASP .NET技術、WinFroms技術和WPF技術等高級編程技術。

  公共語言規範

  很遺憾,我對這公共語言規範(CLS)也不瞭解,也只能說說大概。

  .Net支持很多語言,有C#、VB等,每種語言必定帶著自己的特性但是大家都能夠通過編譯在CLR上面跑,並且都可以與其他語言進行互操作,這都是因為所有語言都遵守了CLS;.NET Framework將CLS定義為一組規則,所有.NET語言都應該遵循此規則才能創建與其他語言可互操作的應用程式,但要註意的是為了使各語言可以互操作,只能使用CLS所列出的功能對象,這些功能統稱為與CLS相容的功能。再往下的細節實現就不知道了,把這個也列在今後的學習計劃當中吧。

  總結

  本篇博客就寫到這吧,內容也大都是園子里內容,也希望能夠幫助到想入坑.Net的朋友們。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一. 虛擬環境搭建 在開發中安裝模塊的方法: pip install 模塊名稱 之前我們安裝模塊都是直接在物理環境下安裝,這種安裝方法,後面一次安裝的會覆蓋掉前面一次安裝的。那如果一臺機器上面開發多個項目使用到不同版本的模塊呢?怎麼樣做才能不受版本影響!那麼需要用到虛擬環境,每個虛擬環境互相隔離,在 ...
  • 1、概念 1.0 線程的和進程的關係以及優缺點 windows系統是一個多線程的操作系統。一個程式至少有一個進程,一個進程至少有一個線程。進程是線程的容器,一個C#客戶端程式開始於一個單獨的線程,CLR(公共語言運行庫)為該進程創建了一個線程,該線程稱為主線程。例如當我們創建一個C#控制台程式,程式 ...
  • 相對之前發的日誌記錄來說,此類將程式記錄處理與寫磁碟操作分離,用戶代碼部分,將日誌放到隊列,並通知線程將日誌寫到文件: 1.公共類: using System;using System.IO;using System.Collections.Generic;using static System.C ...
  • 一.C#關鍵字擴充解釋: 1. new : 1)開闢空間 2)調用構造 3)實例化對象 2. this: 當前類的實例,用來區分入參和成員變數 3. void void修飾的方法表示返回值類型為空,並不代表沒有返回值 二.構造方法: 1.構造函數 特點: 方法名與類名相同 沒有返回值類型 主要完成對 ...
  • 這裡用的是SWT/JFace開發application中SWT自帶的org.eclipse.swt.ole.win32 包可以支持內嵌OLE和ActiveX。 具體用法如下: //創建一個OleFrame做為OLE(或ActiveX)的框架 OleFrame oleFrame = new OleFr ...
  • huanent.printer2.0是一個專註消費小票列印的類庫。擁有許多先進的特性例如居中列印、自動換行等特性,可以通過簡潔的代碼來列印出複雜的消費小票。huanent.printer通過MIT方式授權,可隨意用於商業用途,只要註明作者即可。 你可以通過github獲取源碼與提交bug:https ...
  • 效果如圖: 如果報錯: managementobjectsearcher 缺少using 為什麼已經引用了using System.Management 使用ManagementObjectSearcher時為什麼提示未引用空間 解決辦法: ...
  • ASP.NET MVC是微軟公司的一款WEB開發框架,整合了“模型-視圖-控制器”架構的高效與整潔,是敏捷開發最現代的思想與技術。它是傳統ASP.NET WebForm的一個完善的替代品。 1、當今的Web開發 1)REST(Representational State Transfer)已經成為應 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...