2009-07-23 48 views
8

Tôi luôn có ý tưởng rằng không gian tên gốc trong .NET, "System", chủ yếu cho những thứ không phụ thuộc quá nhiều vào một nền tảng cụ thể.Tại sao Windows.Forms trong Hệ thống chứ không phải Microsoft?

Tôi đã tự hỏi liệu có ai có bất kỳ ý tưởng hay thông tin chi tiết nào về lý do không gian tên Windows.Forms nằm trong số System và không phải Microsoft vì dường như nó được cố định khá trong một nền tảng.

(Không ngọn lửa chiến tranh hoặc không cần thiết MS bashing nếu có thể xin vui lòng! :))

+5

Thực tế Windows.Forms cũng có thể được sử dụng trong Mono, và do đó cũng được biên dịch cho Mac OS X và $ your_linux_distribution. – Residuum

+0

Đừng lo lắng về cuộc chiến tranh lửa. Điều đó khá hiếm ở đây. Những loại câu trả lời đó sẽ được giảm giá và mất lãi khá nhanh. –

+1

Câu hỏi thú vị - Tôi cũng muốn biết cách MS quyết định những gì diễn ra trong Hệ thống và những gì diễn ra trong Microsoft.Quá nhiều thứ trong hệ thống dường như được gắn vào Windows và quá nhiều thứ trong Microsoft có thể hoạt động trên các nền tảng thay thế. – Keith

Trả lời

13

Tôi đọc ở đâu đó rằng System.* namespace là cho những thứ mà là một phần của lõi .Net framework, trong khi Microsoft.* không gian tên dành cho các phần bổ sung tùy chọn "giá trị gia tăng" bổ sung hoặc những thứ đang được phát triển.

EDIT:

Brad Abrams có một cuộc thảo luận về nó trong bài viết trên blog của ông What Does that .NET Namespace Mean: System.* and Microsoft.*

Bên cạnh đó, một trích dẫn từ Visual Basic 2005 với .NET 3.0 Lập trình viên của Reference:

Không gian tên gốc của Microsoft chứa các mục cụ thể của Microsoft. Về lý thuyết, bất kỳ nhà cung cấp nào cũng có thể triển khai .Net ngôn ngữ dịch sang mã Ngôn ngữ trung gian (IL). Nếu bạn xây dựng một ngôn ngữ như vậy, các mục trong không gian tên Microsoft nói chung sẽ không áp dụng cho ngôn ngữ của bạn. Các mục trong không gian tên Hệ thống ... sẽ hữu ích đối với người dùng ngôn ngữ của bạn khi họ sử dụng các ngôn ngữ của Microsoft, nhưng các mục trong không gian tên Microsoft có thể sẽ không hữu ích.

Điều này có nghĩa rằng nếu tôi là làm cho một ngôn ngữ Net mới, tôi sẽ có thể tận dụng các không gian tên System.Windows.Forms để làm cho UIS, nhưng tôi có lẽ sẽ không có nhiều sử dụng cho các lớp trong không gian tên Microsoft.*.

+0

Điểm rất tốt! Không bao giờ nghĩ về nó theo cách đó, nhưng nó gây ra rất nhiều ý nghĩa. – mcjabberz

1

tôi đoán sẽ là:

Microsoft mường tượng .NET framework có khả năng là đa nền tảng, nhưng họ chỉ được sẽ cung cấp một môi trường runtime cho nền tảng Windows. Họ có thể giả định rằng bất kỳ ai cung cấp một môi trường thời gian chạy cho một nền tảng khác sẽ thực hiện nó theo cách mà System.Forms có thể được sử dụng. Thời gian chạy sẽ xử lý sự khác biệt giữa các cài đặt gốc.

+0

Không đặc biệt đáng tin cậy, xem xét làm thế nào gắn System.Forms là để User32. – EFraim

+1

Rất đúng. Tôi tiếp tục hy vọng rằng có lẽ không gian tên đã được hình thành trước khi thực hiện ... và việc thực hiện không phải là những gì họ hình dung. Nghi ngờ, tôi biết. –

+0

@EFraim Không thực sự. Chắc chắn, việc triển khai không trừu tượng nhiều, nhưng điều đó không cần thiết khi bạn đang triển khai thời gian chạy của riêng mình - bạn vẫn thay thế toàn bộ mọi thứ. Nhưng trong khi các công cụ giao diện người dùng cơ bản bị ảnh hưởng bởi Windows, nó không thực sự * gắn * với Windows (trừ khi * bạn * sử dụng công cụ phụ thuộc vào nền tảng, như ghi đè 'WndProc'). Mono thực hiện Windows.Forms tốt với bất kỳ trình quản lý desktop nào bạn có trên hệ thống của mình. – Luaan

0

Chỉ vì "Microsoft Windows" đã được giảm bớt thành "Windows" không có nghĩa là khái niệm "cửa sổ" không rộng hơn Microsoft. Tất cả việc triển khai GUI từ giao diện IBM PARC gốc thông qua Microsoft Windows, X11 vv đều đề cập đến các điều khiển Windows và Form, chỉ là Microsoft đã gọi là "Windows" cụ thể của chúng. Vì vậy System.Windows.Forms có vẻ đúng vì nó không cần thiết cho một cửa sổ là một phần của "Windows". Có lẽ nó nên được chỉ là cửa sổ với một trường hợp thấp hơn w. Nhưng điều đó sẽ phá vỡ các quy ước đặt tên của các không gian tên.

+0

Trên thực tế Windows.Forms chuyên về giao diện của Microsoft (R) Windows, trái ngược với GTK # và Cocoa # – Residuum

+0

Thực ra tôi nghĩ lý do bạn có giao diện và cảm nhận của Microsoft (R) là vì bạn đang sử dụng Microsoft (R) Windows. Xem câu trả lời của @adrianbanks. –

+0

Khi tôi biên dịch Windows.Forms với mono trong Debian Sid, tôi vẫn có giao diện Microsoft Windows, tương tự như chạy các ứng dụng Microsoft Windows với rượu vang. – Residuum

Các vấn đề liên quan