Có nhiều "hương vị" của .NET Framework :
- Đầy đủ ("bình thường")
- Tập hợp hồ sơ khách hàng
- Silverlight trong trình duyệt web
- "Silverlight" trên Windows Phone
- Khung nhỏ gọn
- WinRT
Khi cần mã C # trên nền tảng mới, có vẻ như microsot thích lấy CLR đầy đủ và tách nó thành một tập hợp nhỏ, tạo ra các cụm mới và các kiểu di chuyển xung quanh, thay vì chỉ sử dụng các hội đồng hiện có như BCL . Ví dụ, Silverlight có các lớp / phương thức khác nhau đối với WPF (thậm chí xuống một số phương thức có chữ ký hơi khác nhau hoặc cách triển khai rất khác nhau), thay vì chỉ tham khảo cùng cách thực hiện List<T>
như WPF.
Đây có phải là kiến trúc lý tưởng, hay là một dấu hiệu của di sản? BCL không nên chạy trên tất cả các nền tảng, chỉ với các thư viện trình bày / IO khác nhau trên mỗi nền tảng? Hoặc là BCL và các thư viện khác quá phình to, và việc tách chúng ra sẽ tạo ra quá nhiều vấn đề tương thích ngược, có thể chấp nhận được không?
Nếu chúng tôi bắt đầu từ một khung vẽ trống và không lo lắng về khả năng tương thích ngược, liệu tình huống hiện tại có thực sự là cách tốt nhất để xử lý nhiều nền tảng?