So sánh các kiểu kiến trúc net framework khác nhau

Có hai triển khai được hỗ trợ để xây dựng các ứng dụng phía máy chủ với .NET là: .NET Framework và .NET Core. Cả hai chia sẻ nhiều thành phần giống nhau và bạn có thể chia sẻ code trên cả hai. Tuy nhiên, có sự khác biệt cơ bản giữa hai và sự lựa chọn của bạn phụ thuộc vào những gì bạn muốn thực hiện. Bài viết này cung cấp hướng dẫn về thời điểm sử dụng.

Sử dụng .NET Core cho ứng dụng máy chủ của bạn khi:

  • Bạn có nhu cầu đa chạy nền tảng.
  • Bạn đang muốn xây dựng ứng dụng cần chạy microservices.
  • Bạn đang sử dụng Docker.
  • Bạn cần hệ thống hiệu suất cao và khả năng mở rộng tốt.
  • Bạn cần các phiên bản .NET khác nhau nhau song song cho mỗi ứng dụng.

Sử dụng .NET Framework cho ứng dụng trên server của bạn khi:

  • Ứng dụng của bạn hiện đang sử dụng .NET Framework (muốn mở rộng thay vì thay đổi).
  • Ứng dụng của bạn sử dụng thư viện .NET của bên thứ ba hoặc gói NuGet không khả dụng cho .NET Core.
  • Ứng dụng của bạn sử dụng các công nghệ .NET không khả dụng cho .NET Core.
  • Ứng dụng của bạn sử dụng nền tảng không hỗ trợ .NET Core.
Khi nào chọn .NET Core

Các phần sau đây đưa ra một giải thích chi tiết hơn về các lý do đã nêu trước đây để chọn .NET Core.

Nhu cầu đa nền tảng

Nếu ứng dụng của bạn (web / dịch vụ) cần chạy trên nhiều nền tảng (Windows, Linux và macOS), hãy sử dụng .NET Core.

.NET Core hỗ trợ các hệ điều hành được đề cập trước đây như là phát triển workstation của bạn. Visual Studio cung cấp một môi trường phát triển tích hợp (IDE) cho Windows và MacOS. Bạn cũng có thể sử dụng Visual Studio Code, chạy trên macOS, Linux và Windows. Visual Studio Code hỗ trợ .NET Core, bao gồm cả IntelliSense và debug. Hầu hết các IDE bên thứ ba, chẳng hạn như Sublime, Emacs và VI, làm việc với .NET Core. Các IDE bên thứ ba này nhận được trình soạn thảo IntelliSense sử dụng Omnisharp.

Sử dụng kiến trúc Microservices

Kiến trúc microservices cho phép kết hợp các công nghệ trên một ranh giới dịch vụ. Hỗn hợp công nghệ này cho phép sử dụng .NET Core cho các dịch vụ microservices mới hoạt động với các service hoặc micro services khác. Ví dụ, bạn có thể kết hợp các service hoặc micro services được phát triển với .NET Framework, Java, Ruby hoặc các công nghệ độc lập khác.

Có rất nhiều nền tảng cơ sở hạ tầng có sẵn. Azure Service Fabric được thiết kế cho các hệ thống microservice lớn và phức tạp. Dịch vụ ứng dụng Azure là một lựa chọn tốt cho các dịch vụ microsoft đa quốc gia. Các lựa chọn thay thế Microservices dựa trên Docker phù hợp với bất kỳ phương pháp tiếp cận microservices nào, như được giải thích trong phần Containers. Tất cả các nền tảng này hỗ trợ .NET Core và làm cho chúng lý tưởng để lưu trữ các micro service của bạn.

Containers

Containers thường được sử dụng kết hợp với kiến trúc microservices. Các containers cũng có thể được sử dụng để chứa các ứng dụng hoặc dịch vụ web theo bất kỳ mẫu kiến trúc nào. .NET Framework có thể được sử dụng trên các containers trên Windows, nhưng tính mô đun và tính chất nhẹ của .NET Core làm cho nó trở thành một lựa chọn tốt hơn cho các containers. Khi tạo và triển khai một containers, kích thước image của nó nhỏ hơn nhiều so với .NET Core so với .NET Framework. Bởi vì nó là framework đa nền tảng, bạn có thể triển khai các ứng dụng máy chủ cho các container Linux Docker chẳng hạn.

Các container trên Docker có thể được lưu trữ trong cơ sở hạ tầng Linux hoặc Windows của riêng bạn hoặc trong một dịch vụ cloud như Azure Container Service. Azure Container Service có thể quản lý, dàn xếp và mở rộng các ứng dụng dựa trên container trong cloud.

Nhu cầu về các hệ thống có hiệu suất cao và khả năng mở rộng

Khi hệ thống của bạn cần hiệu suất và khả năng mở rộng tốt nhất, .NET Core và ASP.NET Core là những lựa chọn tốt nhất của bạn. Thời gian chạy máy chủ hiệu suất cao cho Windows Server và Linux làm cho .NET trở thành một framework xây dựng web hoạt động tốt nhất trên các tiêu chuẩn của .

Hiệu suất và khả năng mở rộng đặc biệt phù hợp với kiến ​​trúc microservices, nơi hàng trăm microservices có thể chạy. Với ASP.NET Core, các hệ thống chạy với số lượng máy chủ / Máy ảo (VM) thấp hơn nhiều. Các máy chủ / VM giảm tiết kiệm chi phí trong cơ sở hạ tầng và lưu trữ.

Một nhu cầu cho các bên của các phiên bản .NET cho mỗi cấp ứng dụng

Để cài đặt các ứng dụng có phụ thuộc vào các phiên bản .NET khác nhau, chúng tôi khuyến nghị .NET Core. .NET Core cung cấp cài đặt song song các phiên bản khác nhau của thời gian chạy .NET Core trên cùng một máy. Việc cài đặt song song này cho phép nhiều dịch vụ trên cùng một máy chủ, mỗi máy chủ trên phiên bản .NET Core của riêng nó. Nó cũng làm giảm rủi ro và tiết kiệm tiền trong việc nâng cấp ứng dụng và CNTT

Khi nào chọn .NET Framework

.NET Core cung cấp các lợi ích đáng kể cho các ứng dụng và mẫu ứng dụng mới. Tuy nhiên, .NET Framework tiếp tục là sự lựa chọn tự nhiên cho nhiều kịch bản hiện có và như vậy .NET Framework không được thay thế bởi .NET Core cho tất cả các ứng dụng máy chủ.

Các ứng dụng .NET Framework hiện tại

Trong hầu hết các trường hợp, bạn không cần di chuyển các ứng dụng hiện có của mình sang .NET Core. Thay vào đó, một cách tiếp cận được khuyến nghị là sử dụng .NET Core khi bạn mở rộng một ứng dụng hiện có, chẳng hạn như viết một dịch vụ web mới trong ASP.NET Core.

Cần sử dụng thư viện .NET của bên thứ ba hoặc gói NuGet không có sẵn cho .NET Core

Thư viện nhanh chóng chấp nhận tiêu chuẩn .NET. .NET Standard cho phép chia sẻ mã trên tất cả các triển khai .NET bao gồm .NET Core. Với .NET Standard 2.0, điều này thậm chí còn dễ dàng hơn:

  • API trở nên lớn hơn nhiều.
  • Giới thiệu một chế độ tương thích với .NET Framework. Chế độ tương thích này cho phép các dự án .NET Standard / .NET Core tham chiếu đến các thư viện .NET Framework. Để tìm hiểu thêm về chế độ tương thích. Vì vậy, chỉ trong trường hợp thư viện hoặc gói NuGet sử dụng các công nghệ không có sẵn trong .NET Standard / .NET Core, bạn cần sử dụng .NET Framework.

Cần sử dụng các công nghệ .NET không có sẵn cho .NET Core

Một số công nghệ .NET Framework không có sẵn trong .NET Core. Một số trong số đó có thể có sẵn trong các phiên bản .NET Core sau này. Những người khác không áp dụng cho các mẫu ứng dụng mới được nhắm mục tiêu bởi .NET Core và có thể không bao giờ có sẵn. Danh sách sau đây cho thấy các công nghệ phổ biến nhất không được tìm thấy trong .NET Core:

  • Ứng dụng ASP.NET Web Forms: ASP.NET Web Forms chỉ có sẵn trong .NET Framework. ASP.NET Core không thể được sử dụng cho ASP.NET Web Forms. Không có kế hoạch đưa ASP.NET Web Forms lên .NET Core.
  • Các ứng dụng ASP.NET Web Pages: ASP.NET Web Pages không có trong ASP.NET Core.
  • Thực hiện các dịch vụ WCF. Ngay cả khi có thư viện WCF-Client để chạy các dịch vụ WCF từ .NET Core, việc triển khai máy chủ WCF hiện chỉ khả dụng trong .NET Framework. Kịch bản này không phải là một phần của kế hoạch hiện tại cho .NET Core nhưng nó đang được xem xét cho tương lai.
  • Các dịch vụ liên quan đến quy trình làm việc: Windows Workflow Foundation (WF), Dịch vụ luồng công việc (WCF + WF trong một dịch vụ) và WCF Data Services (trước đây gọi là “ADO.NET Data Services”) chỉ có sẵn trong .NET Framework. Không có kế hoạch đưa WF / WCF + WF / WCF Dịch vụ dữ liệu lên .NET Core.
  • Hỗ trợ ngôn ngữ: Visual Basic và F # hiện được hỗ trợ trong .NET Core, nhưng không hỗ trợ tất cả các loại dự án. Để biết danh sách các mẫu dự án được hỗ trợ.

Ngoài lộ trình chính thức, còn có các framework khác được chuyển sang .NET Core. Để biết danh sách đầy đủ, hãy xem các vấn đề CoreFX được đánh dấu là cổng-tới-lõi. Danh sách này không đại diện cho cam kết của Microsoft để đưa các thành phần đó lên .NET Core. Họ chỉ đơn giản là nắm bắt được mong muốn từ cộng đồng để làm như vậy. Nếu bạn quan tâm đến bất kỳ thành phần nào được đánh dấu là port-to-core, hãy tham gia vào các cuộc thảo luận trên GitHub. Và nếu bạn nghĩ rằng một cái gì đó bị thiếu, hãy gửi một vấn đề mới trong kho lưu trữ CoreFX.