2009-07-23 18 views
8

Siempre tuve la idea de que el espacio de nombres raíz en .NET, "System", era principalmente para cosas que no dependían demasiado de una plataforma en particular.¿Por qué Windows.Forms está en System y no en Microsoft?

Me preguntaba si alguien tenía alguna idea o penetración en cuanto a por qué el Windows.Forms espacio de nombres está en System y no Microsoft ya que parece estar bastante arraigada en una sola plataforma.

(No hay guerras de la llama o MS innecesaria golpear si es posible por favor! :))

+5

Actualmente Windows.Forms también se puede usar en Mono y, por lo tanto, también compilado para Mac OS X y $ your_linux_distribution. – Residuum

+0

No te preocupes por las guerras de llamas. Eso es bastante raro aquí. Esas clases de respuestas serían downvoted y perderían interés bastante rápido. –

+1

Pregunta interesante: también me gustaría saber cómo la MS decide qué entra en el sistema y qué incluye Microsoft.Demasiadas cosas en el sistema parecen estar vinculadas a Windows y demasiadas cosas en Microsoft podrían funcionar en plataformas alternativas. – Keith

Respuesta

13

leí en alguna parte que los System.* espacios de nombres son cosas que forman parte del marco básico .Net, mientras que el Microsoft.* los espacios de nombres son para extras adicionales de "valor agregado" o cosas que están en desarrollo.

EDIT:

Brad Abrams tiene una discusión sobre ello en su blog What Does that .NET Namespace Mean: System.* and Microsoft.*

Además, una cita de Visual Basic 2005 con .NET 3.0 referencia del programador:

El espacio de nombres raíz de Microsoft contiene elementos específicos de Microsoft. En teoría, cualquier proveedor puede implementar lenguajes .Net que se traducen en código de Lenguaje Intermedio (IL). Si tuviera que compilar ese tipo de lenguaje, los elementos en el espacio de nombres de Microsoft generalmente no se aplicarían a su idioma. Los elementos en el espacio de nombres del sistema ... serían tan útiles para los usuarios de su idioma como para los programadores que usan los idiomas de Microsoft, pero los elementos en el espacio de nombres de Microsoft probablemente no sean tan útiles.

Esto implicaría que si tuviera que hacer un nuevo lenguaje .Net, yo sería capaz de hacer uso de la System.Windows.Forms espacio de nombres para hacer interfaces de usuario, pero probablemente no tendría mucha utilidad para las clases en Microsoft.* espacios de nombres.

+0

¡Muy buen punto! Nunca lo pensé de esa manera, pero tiene mucho sentido. – mcjabberz

1

Mi conjetura sería:

Microsoft prevé el marco .NET como tener la capacidad de ser multi-plataforma, sino que sólo se va a proporcionar un entorno de ejecución para la plataforma Windows. Probablemente asumieron que cualquiera que proporcionara un entorno de tiempo de ejecución para otra plataforma lo implementaría de tal manera que System.Forms podría ser utilizado. El tiempo de ejecución manejaría las diferencias entre las implementaciones nativas.

+0

No es particularmente creíble, teniendo en cuenta qué tan vinculado System.Forms es User32. – EFraim

+1

Muy cierto. Sigo esperando que tal vez el espacio de nombres fue concebido antes de la implementación ... y la implementación no fue lo que ellos imaginaron. Dudoso, lo sé. –

+0

@EFraim No realmente. Claro, la implementación no se abstrae demasiado, pero eso no es necesario cuando está implementando su propio tiempo de ejecución; de todos modos, reemplaza todo. Pero mientras que la información básica de la interfaz de usuario está influenciada por Windows, no está realmente * atado * a Windows (a menos que * usted * use elementos dependientes de la plataforma, como anulando 'WndProc'). Mono implementa Windows.Forms muy bien con cualquier administrador de escritorio que tenga en su sistema. – Luaan

0

El hecho de que "Microsoft Windows" haya sido abreviado como "Windows" en no significa que el concepto de "ventana" no sea más amplio que Microsoft. Todas las implementaciones de GUI desde la interfaz original de IBM PARC a través de Microsoft Windows, X11, etc. se refieren a los controles de Windows y Formulario, es solo que Microsoft ha llamado a su implementación particular "Windows". Por lo tanto System.Windows.Forms parece correcto, ya que no es necesario que una ventana forme parte de "Windows". Probablemente deberían ser solo ventanas con una minúscula w. Pero eso rompería las convenciones de nombres de los espacios de nombres.

+0

Actualmente Windows.Forms está especializado para el aspecto y tacto de Windows de Microsoft (R), a diferencia de GTK # y Cocoa # – Residuum

+0

En realidad, creo que la razón por la que obtienes el aspecto de Microsoft (R) Windows es porque estás usando Microsoft (R) Windows. Vea la respuesta por @adrianbanks. –

+0

Cuando compilo Windows.Forms con mono en Debian Sid, todavía tengo la apariencia de Microsoft Windows, similar a la ejecución de aplicaciones de Microsoft Windows con vino. – Residuum

Cuestiones relacionadas