操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    .NET 6 運行時的幾乎所有功能都是通過大量托管類型公開的。這些類型組織到分層命名空間中,并打包到一組程序集中。

    某些 .NET 類型由 CLR 直接使用,對于托管宿主環境至關重要。這些類型駐留在名為 的程序集中.dll包括 C# 的內置類型以及基本集合類,以及用于流處理、序列化、反射、線程處理和本機互操作性的類型。

    注意

    .dll取代了.NET Framework的。官方文檔中的許多地方仍然提到mscorlib。

    在此級別之上是“充實”CLR 級別功能的其他類型,提供 XML、JSON、網絡和語言集成查詢等功能。它們構成了基類庫 (BCL)。位于此之上的是應用程序,它們提供用于開發特定類型的應用程序(如 Web 或富客戶端)的 API。

    在本章中,我們提供以下內容:

    • BCL的概述(我們將在本書的其余部分介紹)
    • 應用程序層的高級摘要

    .NET 6 中的新增功能

    在 .NET 6 中,基類庫具有許多新功能。特別:

    • 新的 DateOnly / TimeOnly 結構清晰地捕獲日期或時間,用于記錄生日或鬧鐘時間等場景的日期或時間(請參閱中的“DateOnly 和 TimeOnly”)。
    • 新的 BitOperations 靜態類提供對低級 base-2 數字運算的訪問(請參閱中的)。
    • 添加了以下新的 LINQ 方法:Chunk、DistinctBy 、UnionBy 、IntersectBy 、ExceptBy 、MinBy 和 MaxBy(參見)。Take 現在也接受 Range 變量。
    • 新的 JsonNode API 提供了一個流暢的可寫 DOM,其類型不需要處置(參見中的)。Utf8JsonWriter現在也有一個WriteRawValue方法。
    • 新的 RandomAccess 類提供高性能的線程安全文件 I/O 操作。
    • System.Reflection中新的NullabilityInfoContext類查詢可空性注釋(參見中的“NullabilityContextInfo”)。
    • System.Security.Cryptography 中的 RandomNumberGenerator 類現在有一個靜態的 GetBytes(int) 方法,該方法在一個操作中返回一個隨機字節數組。還有一些新的方法來簡化加密和解密(參見中的)。
    • 并行類上的新 ForEachAsync 方法限制了異步并發性(參見中的)。任務現在還有一個 WaitAsync 方法,該方法將超時應用于任何異步操作,并且有一個新的計時器設計用于使用 await(參見中的)。
    • 新的 NativeMemory 類圍繞低級內存分配操作(如 malloc)提供了一個輕量級包裝器。

    .NET 6 還對運行時進行了大量性能改進,并增強了對 Windows ARM64 和 Apple M1/M2 處理器的支持。

    在應用層,最大的變化是引入了 MAUI(多平臺應用 UI,2022 年初),它取代了 Xamarin 進行跨平臺移動開發。MAUI 還支持 macOS 和 Windows 的跨平臺桌面應用程序開發,并面向統一的 .NET 6 CLR/BCL。UWP還有一個繼任者,Windows App SDK(以WinUI 3作為其表示層),并且出現了一種稱為Blazor Desktop的新技術,用于編寫基于HTML的桌面和移動應用程序。

    .NET 標準

    如果 NuGet 上提供的大量公共庫僅支持 .NET 6,則它們的價值就不那么高了。編寫庫時,通常需要支持各種平臺和運行時版本。若要在不為每個運行時創建單獨的生成的情況下實現該目標,必須以最低公分母為目標。如果您只希望支持 .NET 6 的直接前身,這相對容易:例如,如果您面向 .NET Core 3.0,您的庫將在 .NET Core 3.0、.NET Core 3.1 和 .NET 5+ 上運行。

    如果您還想支持.NET Framework或Xamarin,情況會變得更加混亂。這是因為這些運行時中的每一個都有一個具有重疊功能的 CLR 和 BCL — 沒有一個運行時是其他運行時的純子集。

    通過定義跨整個舊運行時范圍的人工子集來解決此問題。通過面向 .NET Standard,您可以輕松編寫具有廣泛影響力的庫。

    注意

    .NET 標準不是運行時;它只是一個描述功能(類型和成員)的最小基線的規范,以保證與一組特定的運行時兼容。該概念類似于 C# 接口:.NET Standard 類似于具體類型(運行時)可以實現的接口。

    .NET 標準 2.0

    最有用的版本是。面向 .NET Standard 2.0 而不是特定運行時的庫將在目前仍在使用的大多數新式和舊版運行時上運行,而無需修改,包括:

    • .NET Core 2.0+(包括 .NET 5 和 .NET 6)
    • UWP 10.0.16299+
    • Mono 5.4+(舊版本的 Xamarin 使用的 CLR/BCL)
    • .NET Framework 4.6.1+

    若要面向 .NET 標準 2.0,請將以下內容添加到 文件中:

      <PropertyGroup>
        <TargetFramework>netstandard2.0</TargetFramework>
      <PropertyGroup>

    本書中描述的大多數 API 都受 .NET Standard 2.0 支持。

    .NET 標準 2.1

    NET Standard 2.1 是 .NET Standard 2.0 的超集,它(僅)支持以下平臺:

    • .NET Core 3+
    • 單聲道 6.4+

    任何版本的.NET Framework(甚至UWP都不支持.NET Standard 2.1),因此它比.NET Standard 2.0有用得多。

    特別是以下 API 在 .NET Standard 2.1(但不是 .NET Standard 2.0)中可用:

    • 跨度<T>()
    • 反射.發射()
    • ValueTask<T>()

    較舊的 .NET 標準

    還有較舊的.NET標準,最值得注意的是1.1,1.2,1.3和1.6。編號較高的標準始終是編號較低的標準的嚴格超集。例如,如果您編寫一個面向 .NET Standard 1.6 的庫,則不僅支持最新版本的主要運行時,還支持 .NET Core 1.0。如果您的目標是 .NET Standard 1.3,則支持我們已經提到的所有內容以及 .NET Framework 4.6.0。下表詳細說明了。

    如果您定位...

    你也支持...

    標準 1.6

    .NET Core 1.0

    標準 1.3

    以上加上 .NET 4.6.0

    標準 1.2

    以上加上.NET 4.5.1,Windows Phone 8.1,WinRT for Windows 8.1

    標準 1.1

    以上加上.NET 4.5.0,Windows Phone 8.0,WinRT for Windows 8.0

    警告

    1.x標準缺少2.0中存在的數千個API,包括我們在本書中描述的大部分內容。這可能會使面向 1.x 標準更具挑戰性,尤其是在需要集成現有代碼或庫時。

    您還可以將 .NET Standard 視為最低公分母。對于 .NET Standard 2.0,實現它的運行時具有類似的 BCL,因此最低公分母很大且有用。但是,如果您還希望與 .NET Core 1.0(BCL 大幅減少)兼容,則最低公分母 .NET Standard 1.x 將變得更小且不太有用。

    .NET Framework 和 .NET 6 兼容性

    由于 .NET Framework 已經存在了很長時間,因此遇到 .NET Framework 的庫(沒有 .NET Standard、.NET Core 或 .NET 6 等效項)的情況并不少見。為了幫助緩解這種情況,允許 .NET 5+ 和 .NET Core 項目引用 .NET Framework 程序集,但附帶條件如下:

    • 如果 .NET Framework 程序集調用不受支持的 API,則會引發異常。
    • 重要的依賴項可能(并且經常)無法解析。

    實際上,它最有可能在簡單情況下工作,例如包裝非托管 DLL 的程序集。

    運行時和 C# 語言版本

    默認情況下,項目的運行時版本確定使用的 C# 語言版本:

    • 對于 .NET 6,它是 。
    • 對于 .NET 5,它是 。
    • 對于.NET Core 3.x,Xamarin和.NET Standard 2.1,它是。
    • 對于 .NET Core 2.x、.NET Framework 和 .NET Standard 2.0 及更低版本,它是 。

    這是因為更高版本的 C# 依賴于僅在更高運行時中可用的類型。

    您可以使用 <LangVersion> 元素覆蓋項目文件中的語言版本。將較舊的運行時(如 .NET 5)與較新的語言版本(如 C# 10)一起使用意味著依賴于較新的 .NET 類型的語言功能將不起作用(盡管在某些情況下,你可以自己定義這些類型)。

    引用程序集

    以 .NET Standard 為目標時,項目會隱式引用名為 的程序集,該程序集包含所選版本的 .NET Standard 允許的所有類型和成員。這稱為,因為它的存在只是為了編譯器的利益,并且不包含已編譯的代碼。在運行時,“真正的”程序集通過程序集重定向屬性進行標識(程序集的選擇將取決于程序集最終在哪個運行時和平臺上運行)。

    有趣的是,當您面向 .NET 6 時,也會發生類似的事情。項目隱式引用一組引用程序集,這些程序集的類型反映所選 .NET 版本的運行時程序集中的內容。這有助于實現版本控制和跨平臺兼容性,還允許你將目標定位為與計算機上安裝的版本不同的 .NET 版本。

    CLR 和 BCL

    系統類型

    最基本的類型直接位于 System 命名空間中。其中包括 C# 的內置類型、異常基類、枚舉、數組和委托基類,以及可為空、類型、日期時間、時間跨度和 Guid。系統命名空間還包括用于執行數學函數(數學)、生成隨機數(隨機)以及在各種類型之間轉換(轉換和位轉換器)的類型。

    介紹了這些類型以及定義跨.NET用于格式化(IFormattable)和順序比較(IComparable)等任務的標準協議的接口。

    System 命名空間還定義了用于與垃圾回收器交互的 IDisposable 接口和 GC 類,我們將在第 中介紹。

    文本處理

    命名空間包含 StringBuilder 類(字符串的可編輯或表親)和用于處理文本編碼的類型,如 UTF-8(編碼及其子類型)。我們將在第中介紹這一點。

    命名空間包含執行基于模式的高級搜索和替換操作的類型;我們將在第中描述這些。

    收集

    .NET 提供了各種用于管理項集合的類。其中包括基于列表和字典的結構;它們與一組統一其共同特征的標準接口協同工作。所有集合類型都在以下命名空間中定義,如所述:

    System.Collections                 // Nongeneric collections
    System.Collections.Generic         // Generic collections
    System.Collections.Specialized     // Strongly typed collections
    System.Collections.ObjectModel     // Bases for your own collections
    System.Collections.Concurrent      // Thread-safe collection (Chapter 22)

    查詢

    語言集成查詢 (LINQ) 允許您對本地和遠程集合(例如 SQL Server 表)執行類型安全查詢,如第 章到 章所述。LINQ 的一大優點是,它跨各種域提供一致的查詢 API。基本類型駐留在以下命名空間中:

    System.Linq                  // LINQ to Objects and PLINQ
    System.Linq.Expressions      // For building expressions manually
    System.Xml.Linq              // LINQ to XML

    XML 和 JSON

    XML和JSON在.NET中得到廣泛支持。完全關注 LINQ to XML,這是一種可以通過 LINQ 構造和查詢的輕量級 XML 文檔對象模型 (DOM)。介紹了高性能的低級XML讀取器/編寫器類,XML模式和樣式表,以及使用JSON的類型:

    System.Xml                // XmlReader, XmlWriter
    System.Xml.Linq           // The LINQ to XML DOM
    System.Xml.Schema         // Support for XSD
    System.Xml.Serialization  // Declarative XML serialization for .NET types
    System.Xml.XPath          // XPath query language
    System.Xml.Xsl            // Stylesheet support
    
    System.Text.Json          // JSON reader/writer and DOM

    在 的在線補充中,我們將介紹 JSON 序列化程序。

    診斷

    在第 中,我們將介紹日志記錄和斷言,并描述如何與其他進程交互、寫入 Windows 事件日志以及處理性能監視。此類型在“系統診斷”中和“系統診斷”下定義。

    并發和異步

    許多現代應用程序需要同時處理多件事情。從 C# 5.0 開始,通過異步函數和高級構造(如任務和任務組合器)這變得更加容易。在從多線程的基礎知識開始之后詳細解釋了所有這些。用于處理線程和異步操作的類型位于 System.Threading 和 System.Threading.Tasks 命名空間中。

    流和輸入/輸出

    .NET 為低級別輸入/輸出 (I/O) 提供基于流的模型。流通常用于直接讀取和寫入文件和網絡連接,并且可以鏈接或包裝在裝飾器流中以添加壓縮或加密功能。描述了流體系結構以及對處理文件和目錄、壓縮、管道和內存映射文件的特定支持。流和 I/O 類型在 System.IO 命名空間中和之下定義,文件 I/O 的 Windows 運行時 (WinRT) 類型位于 Windows.Storage 中和下。

    聯網

    您可以通過 System.Net 中的類型直接訪問大多數標準網絡協議,例如 HTTP、TCP/IP 和 SMTP。在第 中,我們將演示如何使用這些協議中的每一種進行通信,從簡單的任務開始,例如從網頁下載,最后直接使用 TCP/IP 檢索 POP3 電子郵件。以下是我們介紹的命名空間:

    System.Net
    System.Net.Http          // HttpClient
    System.Net.Mail          // For sending mail via SMTP
    System.Net.Sockets       // TCP, UDP, and IP

    程序集、反射和屬性

    C# 程序編譯到的程序集包括可執行指令(存儲為 IL)和元數據,后者描述程序的類型、成員和屬性。通過反射,可以在運行時檢查此元數據,并執行動態調用方法等操作。使用 Reflection.Emit ,您可以動態構建新代碼。

    在第中,我們描述了程序集的構成以及如何動態加載和隔離它們。在第 中,我們將介紹反射和屬性 — 描述如何檢查元數據、動態調用函數、編寫自定義屬性、發出新類型以及解析原始 IL。用于使用反射和使用程序集的類型駐留在以下命名空間中:

    System
    System.Reflection
    System.Reflection.Emit

    動態規劃

    在第中,我們將介紹動態編程和利用動態語言運行時(DLR)的一些模式。我們描述了如何實現模式,編寫自定義動態對象以及與IronPython進行互操作。動態規劃的類型位于 System.Dynamic 中。

    密碼學

    .NET 為流行的哈希和加密協議提供了廣泛的支持。在第 中,我們將介紹哈希、對稱和公鑰加密以及 Windows 數據保護 API。此類型在以下位置定義:

    System.Security
    System.Security.Cryptography

    高級線程

    C# 的異步函數使并發編程變得更加容易,因為它們減少了對較低級別技術的需求。但是,有時仍然需要信令構造、線程本地存儲、讀取器/寫入器鎖定等。對此進行了深入的解釋。線程類型位于 System.Threading 命名空間中。

    并行編程

    在第 中,我們將詳細介紹利用多核處理器的庫和類型,包括用于任務并行性、命令式數據并行性和功能并行性 (PLINQ) 的 API。

    跨度<T>和內存<T>

    為了幫助微優化性能熱點,CLR 提供了多種類型來幫助您以減少內存管理器負載的方式進行編程。其中兩種關鍵類型是 Span<T> 和 Memory<T> ,我們將在第 中描述。

    本機和 COM 互操作性

    可以與本機代碼和組件對象模型 (COM) 代碼進行互操作。本機互操作性允許您調用非托管 DLL 中的函數、寄存回調、映射數據結構以及與本機數據類型進行互操作。COM 互操作性允許您調用 COM 類型(在 Windows 計算機上),并向 COM 公開 .NET 類型。支持這些功能的類型在 System.Runtime.InteropServices 中,我們將在第 中介紹它們。

    正則表達式

    在第 中,我們將介紹如何使用正則表達式來匹配字符串中的字符模式。

    序列化

    .NET 提供了多個系統,用于將對象保存和還原為二進制或文本表示形式。此類系統可用于通信以及將對象保存和還原到文件中。在 的聯機補充中,我們介紹了所有四個序列化引擎:二進制序列化程序、(新更新的)JSON 序列化程序、XML 序列化程序和數據協定序列化程序。

    羅斯林編譯器

    C# 編譯器本身是用 C# 編寫的,該項目稱為“Roslyn”,庫以 NuGet 包的形式提供。使用這些庫,除了將源代碼編譯到程序集之外,還可以以多種方式利用編譯器的功能,例如編寫代碼分析和重構工具。我們在 的在線增刊中介紹了羅斯林。

    應用層

    基于用戶界面 (UI) 的應用程序可分為兩類:客戶端(相當于網站)和(最終用戶必須在計算機或移動設備上下載并安裝的程序)。

    對于用C#編寫瘦客戶端應用程序,有 ASP.NET Core,它可以在Windows,Linux和macOS上運行。ASP.NET Core也是為編寫Web API而設計的。

    對于富客戶端應用程序,可以選擇 API:

    • Windows 桌面層包括 WPF 和 Windows Forms API,并在 Windows 7/8/10/11 桌面上運行。
    • UWP 允許你編寫在 Windows 10+ 桌面和設備上運行的 Windows 應用商店應用。
    • WinUI 3(Windows App SDK)是UWP的最新繼任者,可在Windows 10 +桌面上運行。
    • MAUI(以前稱為 Xamarin)在 iOS 和 Android 移動設備上運行。MAUI 還允許面向 macOS 和 Windows 的跨平臺桌面應用程序。

    還有第三方庫,例如Avalonia,它提供跨平臺的UI支持。

    ASP.NET 核心

    ASP.NET Core 是 ASP.NET 的輕量級模塊化繼承者,適用于創建網站、基于 REST 的 Web API 和微服務。它還可以與兩個流行的單頁應用程序框架一起運行:React和Angular。

    ASP.NET 支持流行的 (MVC) 模式,以及稱為 Blazor 的新技術,其中客戶端代碼是用 C# 而不是 JavaScript 編寫的。

    ASP.NET Core 在 Windows、Linux 和 macOS 上運行,并且可以在自定義進程中自托管。與其前身.NET Framework(ASP.NET)不同,ASP.NET Core不依賴于System.Web和Web表單的歷史包袱。

    與任何瘦客戶端體系結構一樣,ASP.NET Core 與富客戶端相比具有以下一般優勢:

    • 客戶端的部署為零。
    • 客戶端可以在支持 Web 瀏覽器的任何平臺上運行。
    • 更新易于部署。

    視窗桌面

    Windows 桌面應用程序層提供了兩種用于編寫胖客戶端應用程序的 UI API 選擇:WPF 和 Windows 窗體。這兩個 API 都在 Windows Desktop/Server 7 到 11 上運行。

    可濕性工作基金會

    WPF 于 2006 年推出,此后得到了增強。與其前身 Windows 窗體不同,WPF 使用 DirectX 顯式呈現控件,具有以下優點:

    • 它支持復雜的圖形,例如任意轉換、3D 渲染、多媒體和真正的透明度。通過樣式和模板支持外觀。
    • 其主要測量單位不是基于像素的,因此應用程序在任何 DPI 設置下都能正確顯示。
    • 它具有廣泛而靈活的布局支持,這意味著您可以本地化應用程序而不會有元素重疊的危險。
    • 它使用 DirectX 可以加快渲染速度,并能夠利用圖形硬件加速。
    • 它提供可靠的數據綁定。
    • 可以在 XAML 文件中以聲明方式描述 UI,這些文件可以獨立于“代碼隱藏”文件進行維護,這有助于將外觀與功能分開。

    WPF 由于其大小和復雜性,需要一些時間來學習。用于編寫 WPF 應用程序的類型位于 System.Windows 命名空間和除 System.Windows.Forms 之外的所有子命名空間中。

    窗口窗體

    Windows 窗體是一個富客戶端 API,在 2000 年隨 .NET Framework 的第一個版本一起提供。與 WPF 相比,Windows 窗體是一種相對簡單的技術,它提供了編寫典型 Windows 應用程序所需的大多數功能。它在維護舊版應用程序方面也具有重要意義。但與 WPF 相比,它有許多缺點,其中大部分源于它是 GDI+ 和 Win32 控件庫的包裝器:

    • 盡管它提供了 DPI 感知機制,但編寫在 DPI 設置與開發人員不同的客戶端上中斷的應用程序仍然太容易了。
    • 用于繪制非標準控件的 API 是 GDI+,盡管它相當靈活,但在呈現大區域時速度很慢(如果沒有雙重緩沖,可能會閃爍)。
    • 控制缺乏真正的透明度。
    • 大多數控件是非組合的。例如,不能將圖像控件放在選項卡控件標頭中。在 Windows 窗體中,以使用 WPF 時微不足道的方式自定義列表視圖、組合框和選項卡控件既耗時又痛苦。
    • 動態布局很難可靠地正確實現。

    最后一點是偏愛 WPF 而不是 Windows 窗體的一個很好的理由,即使您編寫的業務應用程序只需要 UI 而不是“用戶體驗”。WPF 中的布局元素(如 Grid)使組合標簽和文本框變得容易,以便它們始終對齊(即使在語言更改本地化之后),而不會產生混亂的邏輯和閃爍。此外,您不需要屈服于屏幕分辨率的最低公分母 - WPF 布局元素從一開始就設計為能夠正確適應調整大小。

    從積極的方面來看,Windows 窗體相對容易學習,并且仍然具有大量的第三方控件。

    Windows 窗體類型位于 System.Windows.Forms(在 .dll 中)和 System.Drawing(在 中)命名空間中。后者還包含用于繪制自定義控件的 GDI+ 類型。

    UWP 和 WinUI 3

    UWP 是一個富客戶端 API,用于編寫面向 Windows 10+ 桌面和設備的觸摸優先 UI。“通用”一詞是指它在一系列Windows 10設備上運行的能力,包括Xbox,Surface Hub和HoloLens。但是,它與早期版本的Windows不兼容,包括Windows 7和Windows 8 / 8.1。

    UWP API 使用 XAML,有點類似于 WPF。以下是它的主要區別:

    • UWP 應用的主要分發模式是 Windows 應用商店。
    • UWP 應用在沙盒中運行以減少惡意軟件的威脅,這意味著它們無法執行讀取或寫入任意文件等任務,并且無法使用管理提升運行。
    • UWP 依賴于屬于操作系統 (Windows) 的 WinRT 類型,而不是托管運行時。這意味著在編寫應用時,必須指定 Windows 版本范圍(例如 Windows 10 內部版本 17763 到 Windows 10 內部 18362)。這意味著你要么需要以舊 API 為目標,要么要求你的客戶安裝最新的 Windows 更新。

    由于這些差異造成的限制,UWP 從未成功地匹配 WPF 和 Windows 窗體的流行程度。為了解決這個問題,Microsoft引入了一項新技術來取代UWP,稱為Windows App SDK(具有一個名為WinUI 3的UI層)。

    Windows 應用 SDK 將 WinRT API 從操作系統傳輸到運行時,從而公開完全托管的界面,并且無需以特定操作系統版本范圍為目標。它還:

    • 更好地與 Windows 桌面 API(Windows 窗體和 WPF)集成
    • 允許您編寫在 Windows 應用商店沙盒之外運行的應用程序
    • 在最新的 .NET 上運行(而不是像 UWP 那樣綁定到 .NET Core 2.2)

    但是,在撰寫本文時,Windows App SDK不支持Xbox或HoloLens。

    MAUI

    MAUI(2022 年初)是 Xamarin 的新化身,可讓您使用 C# 開發面向 iOS 和 Android 的移動應用程序(以及面向 macOS 和 Windows 的跨平臺桌面應用程序)。

    在iOS和Android上運行的CLR / BCL稱為Mono(開源Mono運行時的派生版本)。從歷史上看,Mono 并不完全兼容 .NET,在 Mono 和 .NET 上運行的庫將面向 .NET Standard。在MAUI中,Mono的公共接口與.NET 6合并,使Mono實際上成為.NET 6的。

    MAUI 新增功能包括統一的項目界面、熱重載、對 Blazor 桌面和混合應用的支持,以及改進的性能和啟動時間。有關詳細信息,請參閱 。

    在WIN10系統中,有時安裝AUTOCAD 3DMAX等一些設計軟件時,會提示缺少NET3.5組件,沒法安裝,在win10中安裝.NET Framework 3.5不成功,大部分都是因為錯誤87

    解決辦法:

    1.下載 NET Framework 3.5的安裝包:百度下載或者原版WIN10安裝包里提取文件NetFx3.cab,將下載下來的.cab 放進 C:\Windows 目錄下

    2.打開控制面板->程序->啟動或關閉Windows功能->關閉其他.NET Framework服務,之后 右擊開始 -> 點擊命令提示符(管理員)

    3.輸入 dism /online /Enable-Feature /all /FeatureName:NetFx3 /Source:"%windir%" /LimitAccess回車

    4.稍等幾分后,進度百度比變成100%時,就是安裝成功了!之后再開啟其他.NET Framework服務

    5.啟動電腦后,再安裝CAD 3DMAX等軟件,看看是不是沒有錯誤提示了,一下就安裝成功了呢.

    如果本經驗方法對你們有幫忙的話,請收藏并關注我下哦:原創之家零零柒

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有