Tại sao chúng ta có nhiều hương vị của .NET? Nó có phải là một điều tốt? [đóng cửa]


9

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?


7
Những gì với tất cả các phiếu bầu gần? Đây là một câu hỏi hoàn toàn chính đáng.
Mason Wheeler

2
Điều này có vẻ như có thể bị đóng cửa, có lẽ bởi vì nó được nói một chút phán đoán (có vẻ như bạn đã quyết định rằng nó "được kiến ​​trúc xấu"). Bạn có thể muốn viết lại nó là " tại sao có quá nhiều hương vị của .NET?"
Thất vọngWithFormsDesigner

1
@FrustratedWithFormsDesigner đã đúng. Câu hỏi bắt đầu với một thiên vị so với .NET. Nếu giọng điệu trung tính hơn, tôi nghi ngờ sẽ không có phiếu bầu nào được bỏ.
Oded

2
Tôi cảm thấy như bạn đang cố bắt đầu một cuộc tranh luận, không tìm kiếm câu trả lời mang tính xây dựng cho câu hỏi của bạn. Tôi đoán đó là lý do tại sao bạn đang nhận được phiếu bầu gần.
Tyanna

2
@Oded và những người khác - Tôi đã sắp xếp lại tiêu đề và cơ thể, hy vọng điều đó sẽ được sự chấp thuận của bạn :)
Paul Stovell

Câu trả lời:


5

Những gì Microsoft đang làm, chia các thói quen thành nhiều gói, là phổ biến. Có một phiên bản .NET chạy trên các máy tính bảng đơn (.Net Micro Framework) với bộ nhớ hạn chế. Chẳng có nghĩa gì khi đưa vào phiên bản đó mọi thứ cần thiết để chạy giao diện người dùng đồ họa đầy đủ chẳng hạn.

Nếu bạn nhìn vào Apple, iPhone không chứa tất cả các thói quen mà người ta sẽ tìm thấy trên máy Mac.


Nhưng thay vì nhà phát triển sao chép / dán mã để List<T>tạo Micro Framework List<T>, BCL không nên được phân tách đúng cách để các nhị phân chạy trên tất cả các nền tảng?
Paul Stovell

2
Nói cách khác, không nên làm cho mã chạy trên nền tảng khác chỉ là trường hợp chọn tập hợp nào để hỗ trợ?
Paul Stovell

1
Java cũng làm điều này. Chẳng hạn, Thẻ Java là tập con của Java.
Bernard

2
@PaulStovell: Tôi không chắc MS làm thế nào ... nhưng tôi sẽ không ngạc nhiên nếu MS có một đường dẫn / tập lệnh xây dựng riêng (để nói một cách nhẹ nhàng) lấy mã và xây dựng nó cho nền tảng đích - vì vậy nó không phải là một bản sao / dán List<T>nhưng nó có thể cắt một số thứ từ mã hoặc hợp nhất với một số thứ cụ thể của nền tảng và tạo ra một mục triển khai.
Steven Evers

1

Tôi không nghĩ .NET là vấn đề. Mặc dù có nhiều thời gian chạy khác nhau, chúng vẫn tương thích, đó là lý do tại sao các công nghệ như Thư viện lớp di động hoạt động (đối với phần lớn thời gian chạy mà bạn đã liệt kê).

Ví dụ: không nên mỗi hương vị tham chiếu một tập hợp chung, được gọi là "System.Collections.dll", thay vì mỗi bộ thực thi có bản sao System.dll / mscorlib.dll với các bản sao khác nhau của các bộ sưu tập?

Tại sao điều này là cần thiết? Miễn là tất cả chúng đều tương thích (một lần nữa, hãy xem Thư viện lớp di động), điều này không thành vấn đề, vì BCL là một phần của chính thời gian chạy và được phân phối song song.


Tôi có nên viết một lớp chỉ sử dụng List<T>và chạy nó trên bất kỳ nền tảng nào mà không tạo thư viện di động không? Hay List<T>chính nó không nên ở trong một thư viện di động? Thư viện di động cảm thấy với tôi như một cách giải quyết hơn là một phần của một thiết kế thanh lịch.
Paul Stovell

1

.NET về cơ bản là thay thế và mở rộng các đối tượng com trong môi trường windows. Nó cũng được sử dụng để xác định rất nhiều công nghệ khác nhau, hãy tưởng tượng nếu Adobe đổi tên tất cả các sản phẩm của họ thành một từ chung trong tên của họ, đó là những gì đang xảy ra với .NET

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.