Một cách khác để giải thích sự khác biệt có thể là với các ví dụ trong thế giới thực, vì hầu hết mọi người trong chúng ta sẽ sử dụng các công cụ và khung hiện có (Xamarin, Unity, v.v.) để thực hiện công việc.
Vì vậy, với .NET Framework bạn có tất cả các công cụ .NET để làm việc nhưng bạn chỉ có thể nhắm mục tiêu các ứng dụng Windows (UWP, Winforms, ASP.NET, v.v.). Vì .NET Framework là nguồn đóng nên không có nhiều việc phải làm.
Với .NET Core, bạn có ít công cụ hơn nhưng bạn có thể nhắm mục tiêu Nền tảng máy tính để bàn chính (Windows, Linux, Mac). Điều này đặc biệt hữu ích trong các ứng dụng ASP.NET Core, vì giờ đây bạn có thể lưu trữ Asp.net trong Linux (giá lưu trữ rẻ hơn). Bây giờ, vì .NET Core đã được mở nguồn, về mặt kỹ thuật có thể phát triển các thư viện cho các nền tảng khác. Nhưng vì không có khung hỗ trợ nào, tôi không nghĩ đó là một ý tưởng hay.
Với .NET Standard, bạn thậm chí còn có ít công cụ hơn nhưng bạn có thể nhắm mục tiêu tất cả / hầu hết các nền tảng. Bạn có thể nhắm mục tiêu Di động nhờ Xamarin và thậm chí bạn có thể nhắm mục tiêu Bảng điều khiển trò chơi nhờ vào Mono / Unity. Cập nhật: Cũng có thể nhắm mục tiêu khách hàng web với nền tảng UNO và Blazor (mặc dù cả hai đều là thử nghiệm ngay bây giờ).
Trong một ứng dụng thế giới thực, bạn có thể cần phải sử dụng tất cả chúng. Ví dụ, tôi đã phát triển một ứng dụng điểm bán hàng có kiến trúc như sau:
Được chia sẻ cả Máy chủ và Máy khách:
- Một thư viện .NET Standard xử lý các Mô hình ứng dụng của tôi.
- Một thư viện .NET Standard xử lý việc xác thực dữ liệu được gửi bởi các máy khách.
Vì nó là thư viện .NET Standard, nên nó có thể được sử dụng trong bất kỳ dự án nào khác (máy khách và máy chủ).
Ngoài ra một lợi thế tốt của việc xác thực trên thư viện chuẩn .NET vì tôi có thể chắc chắn rằng việc xác thực tương tự được áp dụng trên máy chủ và máy khách. Máy chủ là bắt buộc, trong khi máy khách là tùy chọn và hữu ích để giảm lưu lượng.
Phía máy chủ (API Web):
Vì điều này được phát triển trong .NET Core, tôi có thể lưu trữ ứng dụng trên máy chủ Linux.
Phía máy khách (MVVM với WPF + Xamarin.Forms Android / IOS):
Thư viện .NET Standard xử lý kết nối API máy khách.
Một thư viện .NET Standard xử lý Logic ViewModels. Được sử dụng trong tất cả các quan điểm.
Một ứng dụng .NET Framework WPF xử lý các khung nhìn WPF cho một ứng dụng Windows. Cập nhật: Hiện tại các ứng dụng WPF có thể là lõi .NET, mặc dù hiện tại chúng chỉ hoạt động trên windows. AvaloniaUI là một lựa chọn tốt để tạo các ứng dụng GUI cho máy tính để bàn cho các nền tảng máy tính để bàn khác.
Một thư viện .NET Standard xử lý các khung nhìn Xamarin Forms.
Một dự án Xamarin Android và Xamarin IOS.
Vì vậy, bạn có thể thấy rằng có một lợi thế lớn ở phía máy khách của ứng dụng, vì tôi có thể sử dụng lại cả thư viện .NET Standard (API khách và ViewModels) và chỉ tạo các chế độ xem không có logic cho các ứng dụng WPF, Xamarin và IOS.