2009-07-23 16 views
8

Ho sempre avuto l'idea che lo spazio dei nomi di root in .NET, "System", fosse principalmente per cose che non dipendevano troppo da una particolare piattaforma.Perché Windows.Forms in System e non Microsoft?

Mi chiedevo se qualcuno avesse qualche idea o intuizione del perché lo spazio dei nomi Windows.Forms è in System e non Microsoft dal momento che sembra essere piuttosto radicata in un'unica piattaforma.

(No guerre di fiamma o inutili MS colpire, se possibile per favore! :))

+5

In realtà Windows.Forms può essere utilizzato anche in Mono, e quindi anche compilato per Mac OS X e $ your_linux_distribution. – Residuum

+0

Non preoccuparti delle guerre di fiamma. Questo è piuttosto raro qui. Quel tipo di risposte verrebbe svalutato e perderebbe rapidamente interesse. –

+1

Interessante domanda - Mi piacerebbe anche sapere come MS decida cosa va in System e cosa succede in Microsoft.Troppe cose in System sembrano essere legate a Windows e troppe cose in Microsoft potrebbero funzionare su piattaforme alternative. – Keith

risposta

13

Ho letto da qualche parte che i System.* spazi dei nomi sono per le cose che sono parte del quadro nucleo .Net, mentre il Microsoft.* Gli spazi dei nomi sono per ulteriori extra "a valore aggiunto" opzionali o per quelli in fase di sviluppo.

EDIT:

Brad Abrams ha una discussione su di esso nel suo blog What Does that .NET Namespace Mean: System.* and Microsoft.*

Inoltre, una citazione da Visual Basic 2005 con .NET 3.0 di riferimento del programmatore:

Lo spazio dei nomi radice Microsoft contiene elementi specifici di Microsoft. In teoria, qualsiasi fornitore può implementare linguaggi .Net che si traducono in codice Intermediate Language (IL). Se si dovesse creare un linguaggio del genere, gli elementi nello spazio dei nomi Microsoft in genere non si applicano alla propria lingua. Gli elementi nel namespace System ... sarebbero utili tanto agli utenti della tua lingua quanto ai programmatori che usano i linguaggi Microsoft, ma gli elementi nello spazio dei nomi Microsoft probabilmente non sarebbero così utili.

Ciò implicherebbe che, se ero a fare un nuovo linguaggio .Net, sarei in grado di fare uso del System.Windows.Forms spazio dei nomi per fare interfacce utente, ma non sarebbe probabilmente molto uso per le classi in Microsoft.* namespace.

+0

Ottimo punto! Non ci ho mai pensato in questo modo, ma in effetti ha molto senso. – mcjabberz

1

La mia ipotesi è:

Microsoft .NET framework previsto ad avere la capacità di essere multi-piattaforma, ma erano solo andare a fornire un ambiente di runtime per la piattaforma Windows. Probabilmente presumevano che chiunque fornisse un ambiente di runtime per un'altra piattaforma lo implementasse in modo tale da poter utilizzare System.Forms. Il runtime gestirà le differenze tra le implementazioni native.

+0

Non particolarmente credibile, considerando il modo in cui System.Forms è collegato a User32. – EFraim

+1

Molto vero. Continuo a sperare che forse lo spazio dei nomi è stato concepito prima dell'implementazione ... e l'implementazione non era ciò che immaginavano. Dubbi, lo so. –

+0

@EFraim Non proprio. Certo, l'implementazione non è molto astratta, ma ciò non è necessario quando si implementa il proprio runtime - si sostituisce comunque l'intera cosa. Ma mentre il materiale di base dell'interfaccia utente è influenzato da Windows, non è in realtà * legato * a Windows (a meno che * tu * non usi la piattaforma, come la sovrascrittura di 'WndProc'). Mono implementa Windows.Forms bene con qualsiasi gestore desktop che hai sul tuo sistema. – Luaan

0

Solo perché "Microsoft Windows" è stato abbreviato in "Windows" in non significa che il concetto di "finestra" non sia più ampio di Microsoft. Tutte le implementazioni di GUI poiché l'interfaccia originale di IBM PARC tramite Microsoft Windows, X11 ecc. Si riferiscono tutti ai controlli di Windows e Form, è solo che Microsoft ha definito la loro particolare "Windows" di impiantazione. Pertanto System.Windows.Forms sembra corretto in quanto non è necessario che una finestra faccia parte di "Windows". Probabilmente dovrebbe essere solo Windows con una minuscola w. Ma ciò spezzerebbe le convenzioni di denominazione degli spazi dei nomi.

+0

In realtà Windows.Forms è specializzato per l'aspetto di Microsoft (R) Windows, al contrario di GTK # e Cocoa # – Residuum

+0

In realtà penso che il motivo per cui si ottiene l'aspetto di Microsoft (R) Windows sia perché si utilizza Microsoft (R) Windows. Guarda la risposta di @adrianbanks. –

+0

Quando compilo Windows.Forms con mono in Debian Sid, ho ancora l'aspetto di Microsoft Windows, simile all'utilizzo delle applicazioni Microsoft Windows con wine. – Residuum

Problemi correlati