|
|
Titular: Introducción a .Net
Programación general Cuestiones generales sobre programación y códigos varios
Fecha de publicación: 2008-11-07 / 02:43:28
| articulo actualizado el 2008-11-07 04:36:51 por J35U5R. |
articulo con 737 visitas.
Contiene 8 comentarios.
El contenido ha sido aprobado por
Jesús Rubén
Premios que ha ganado el artículo:

|
|
 |
|
 |
Introducción a .Net
Aún hay mucha gente que se pregunta:
¿Qué es .Net?
La palabra clave es Administración.
Un poco de historia
Los inicios de la administración de recursos
Para que nos hagamos una idea, creo que todos recordamos Windows 95/98, aquel hermoso sistema operativo que nos daba pantallazos azules cada 2 por 3. Ahora aclaramos, ¿Por qué daba esos hermosos pantallazos que nos hacían la vida imposible? Muy sencillo, porque el sistema operativo no administraba la memoria de los programas en ejecución. Cuando un programa tenía un fallo, si el programa intentaba escribir en una área de memoria que no era la suya, no era el programa el que daba error, si no el sistema operativo nos recompensaba con un hermoso pantallazo azul en el que indicaba Error OE ... , la información que a algunos les sonaba a chino era las zonas de memoria donde el programa había intentado leer o escribir y había fallado, entre otros tipos de errores por otros recursos a parte de la memoria que tampoco eran administrados por el sistema, si no que el programa los administraba por si mismo.
La tecnología NT
¿Que pasó con nuestro amado Windows 2000? El primer sistema operativo para el usuario que utilizaba la tecnología NT (dedicada especialmente para las versiones de Windows para servidores llamadas Windows NT, de ahí el nombre) Esta tecnología NT tenía unos detalles que fueron perfeccionados en Windows 2000, pero atención, en un principio Microsoft no pensaba utilizar a Windows 2000 para el usuario, tenía una absurda confianza en la peor basura que Microsoft ha creado, el Windows ME. Cuando se dieron cuenta que Windows ME, era aún peor que Windows 98, ya que era la mima mierda no administrada con más cosas, por lo que fallaba incluso más que su antecesor Windows 98. Microsoft estaba trabajando hace tiempo en su proyecto Windows 2000 Server, no recuerdo bien si el codename era menphis o whitsler, bueno tampoco importa, la cuestión es que se dieron cuenta que los usuarios profesionales no podían seguir trabajando con la basura del Windows 98/ME, y sinceramente en aquellos tiempos completamente ofuscado y enfadado, intenté usar Windows NT, pero aquello no estaba preparado para que funcionase ninguna aplicación decente, era sólo para servidores y la versión de Windows NT Workstation era igual de incompatible con casi cualquier cosa. Por lo que Microsoft decidió que modificando un poco su proyecto Windows 2000, que sería el próximo producto para servidores, podría sacar uno llamado Windows 2000 Profesional, dedicado a que los profesionales lo pudiesen usar, sinceramente, creo que fue uno de los días más felices de mi vida como profesional de la informática cuando instalé la beta del Windows 2000 Profesional, era todo cierto, habían usado la tecnología NT para hacer un sistema en el que la memoria era administrada por el sistema operativo, y al menos cuando un programa fallaba, te aparecía el famoso mensaje de "La memoria no se puede read" o "La memoria no se puede write" que podrían pegarle un par de guantazos al que lo tradujo. Y el programa se cerraba pero el sistema operativo no mostraba ese hermoso pantallazo azul del cual rara vez se recuperaba el antiguo Windows 98 y lo más importante la compatiblidad era ya algo más decente que su antecesor Windows NT.
La adaptación de NT para todos los usuarios
Una vez hemos entendido los beneficios de las cosas administradas, ¿que pasó entonces?
Todos los usuarios de Windows 98 echaban pestes de Windows 2000 Profesional diciendo que los juegos iban lentos, que habían juegos que no iban etc etc Pero era el primer paso, el primer paso para la unión de las dos ramas, ahora no serían proyectos separados, Windows 2000 Professional y Windows 2000 Server, eran el mismo, pero con modificaciones para que cada uno tubiese los servicios y características de un servidor o de un entorno de usuario cotidiano.
La mayoría de la gente siguió con Windows 98 porque evidentemente lo administrado tiene un problema, es más lento que el nativo, por lo que si la memoria y recursos del sistema son administrados, el sistema va más lento ( +Seguridad = +Lento )
Al poco tiempo Microsoft anunció su Windows XP, ¿Qué era el XP?, pues era el Windows 2000, que lo habían mejorado para que soportase mucho mejor aplicaciones que requerían recursos administrados incluso emulando algunas características para compatibilidad con programas que funcionaban en Windows 98 pero no en Windows 2000.
Nuevamente la gente se tiró encima de Microsoft diciendo que era lentísimo, que el Windows 98 iba mucho más rápido bla bla bla, pro claro, al tener recursos y memoria administrada ya no fallaba, los pantallazos azules por problemas de memoria dejaron de verse, por el contrario a veces nos veíamos algunos pantallazos (que aún se siguen viendo) como el IRQ_NOT_LESS_OR_EQUAL, pero suelen ser por problemas de hardware o de algún driver mal hecho, lo que originó la avalancha de drivers firmados, pero bien esto es otra historia. Poco a poco la gente fue pasando a Windows XP, poco después apareció Windows 2003 Server, que simplemente era el Windows XP mejorado para servidores,
.Net
.Net, el siguiente paso lógico
Ahora que entendemos la importancia de las cosas administradas, vamos a .Net
.Net es simplemente código administrado, las aplicaciones nativas son aquellas que el código fuente es administrado por el usuario, en .Net el sistema administra todo lo que escribes, desde definir una variable, hasta llamar a una función. Por lo que el código es mucho más seguro, ya que el programador no tiene que estar preocupándose de liberar recursos. Digamos que el cambio que he contado antes en Windows 2000, donde el sistema administraba la memoria, ahora lo que hace con .Net es administrar también tu estructura de memoria y llamadas al sistema. Por lo que cualquier persona que programa usando .Net tendrá muchas menos posibilidades de que cometa un fallo y el programa se cierre inesperadamente.
Lo básico sobre .Net
Pero... ¿Net es un lenguaje de programación?
NO
.Net no es un lenguaje de programación.
Digamos que básicamente .Net es un sistema llamado MSIL, digamos que MSIL es el sistema de ensamblado de ,Net , pero este sistema no va integrado en el Kernel de Windows, por lo que obiamente es más lento de procesar en muchos aspectos, volvemos a lo mismo, es más lento, pero más seguro.
¿Que más cosas es .Net?
A parte de lo que hemos nombrado, .Net también lleva un sistema de Clases llamado Framework, este sistema es un intento de decirle al programador: no uses API, deja que yo llame al API por ti, no sea que te equivoques y de un error tu programa.
¿Realmente cuando llamas a una función del Framework que hace? , en su mayoría, todas las funciones del framework usan el mismo sistema, hacen unas 100 comprobaciones de handles, de memoria etc etc, y después de haber comprobado todo, te hace una llamada al api, ¿Va mas lento? Claro que va más lento, todas las comprobaciones que ha echo consumen recursos del sistema, pero si llamas al framework te aseguras de que eso no va a fallar. A veces se necesita velocidad y se puede también llamar al api directamente, pero claro, tu ten en cuenta que lo que vayas a mandar al api serán estructuras administradas y las api funcionan con estructuras nativas, por lo que sólo usaremos api directa en caso de necesitarlo de verdad.
El Lenguaje
después de todo este rollo, ¿Si no es un lenguaje de programación? ¿en que lenguaje escribo?
Pues puedes hacerlo en el que quieras, siempre que esté soportado, Java , C++ , Visual Basic, C# , son lenguajes en los que se puede programar con .Net.
Los conozco casi todos, pero ¿Que es c#?
Se podría decir que C# es el término medio entre C++ y Visual Basic, es un nuevo lenguaje de programación que Microsoft ha perfeccionado adrede para usar con .Net
Creo que con esto aclaramos que es .Net,
Sistemas operativos y .Net
Windows Vista y .Net
Windows Vista es especial, porque en Windows XP cuando abres una aplicación de .Net, tiene que cargar todo el FrameWork en memoria, y le cuesta lo suyo, claro está si otra aplicación de .Net está abierta, no lo carga dos veces, pero Windows Vista va con el Framework cargado y optimizado para interactuar con el sistema, eso hace de Windows Vista una herramienta necesaria, porque incluso el Visual Studio.Net va más rápido.
Windows Seven y .Net
Y ¿Windows Seven? ¿por qué es algo especial para .Net? Según Microsoft Windows Seven entenderá nativamente el código MSIL, que es el que genera cualquier programa de .Net , llevará un kernel especial con soporte para MSIL, Pero... ¿Qué pasa ahora con el código no administrado? Según dicen, será emulado, así es, emulado. Por lo que el código Administrado irá en teoría más rápido que el no administrado. Algunos diréis, ¿Pero que locura es esa?, Tienen intención de eliminar el código no administrado todo lo posible y que .Net sea la única alternativa razonable para los programadores profesionales (Excluyendo claro los drivers, que siguen funcionando en modo kernel en C nativo, pero al paso que van, hasta los drivers irán con CLR).
Fin
Creo que como introducción está bien, le he puesto un poco de historia para que no quede tan técnico y como si fuesen preguntas para simular interactividad, así al menos los que no saben programación, algo seguro que han aprendido.
Espero que os haya gustado y no haya sido mucho rollo patatero, si a la gente le gusta el tema ya haré una segunda parte explicando un poco más detalladamente otros aspectos a tener en cuenta de .Net , el tema de ASP.Net lo dejo para otro artículo.
Si tienes alguna duda de ,Net, pues comenta el artículo.
Firma:
Saludos, Jesus R.
El hombre que susurraba a los punteros.
|
|
 |
|
 |
|
 |
!!r0Nk0!!
( RoNcoNe )
   
Karma:
|
Mensajes: 9084
Noticias: 29
Artículos: 29
Juegos: 9
Películas: 20
|
Enlaces: 0
Comentarios: 157
Honor: 623
Popularidad:
516
Discos: 12 |
|
|
 |
|
Comentario de articulo 2008-11-07 / 11:40:13 |
|
 |
| Comentario de
!!r0Nk0!!: |
Aprobado por:
!!r0Nk0!! |
Una buena introducción, clara, sin ser excesivamente extensa. Podrías hacer una mini leyenda de los 4 terminos tecnicos que has puesto por ejemplo:
API: (Interfaz de Programación de Aplicaciones) es el conjunto de funciones y procedimientos (o métodos si se refiere a programación orientada a objetos) que ofrece cierta biblioteca para ser utilizado por otro software como una capa de abstracción. |
|
|
 |
Skeletron
( Noelkpo )
    
Karma:
|
Mensajes: 4107
Noticias: 176
Artículos: 176
Juegos: 1
Películas: 2
|
Enlaces: 14
Comentarios: 372
Honor: 208
Popularidad:
324
Discos: 17 |
|
|
 |
|
Comentario de articulo 2008-11-07 / 13:02:43 |
|
 |
| Comentario de
Skeletron: |
Aprobado por:
!!r0Nk0!! |
|
Resumen de API: Codigo ya escrito listo para ser copiado y pegado |
|
|
 |
Jesús Rubén
( J35U5R )
Karma:
|
Mensajes: 1808
Noticias: 3
Artículos: 3
Juegos: 62
Películas: 4
|
Enlaces: 0
Comentarios: 26
Honor: 222
Popularidad:
166
Discos: 7 |
|
|
 |
|
Comentario de articulo 2008-11-07 / 15:46:38 |
|
 |
| Comentario de
Jesús Rubén: |
Aprobado por:
Jesús Rubén |
|
Es un tema extenso, si realmente os interesa, puedo escribir un artículo sobre el API. |
|
|
Mensajes: 397
Noticias: 0
Artículos: 0
Juegos: 0
Películas: 0
|
Enlaces: 2
Comentarios: 57
Honor: 165
Popularidad:
23
Discos: 0 |
|
|
 |
|
Comentario de articulo 2008-11-07 / 16:50:03 |
|
 |
| Comentario de
Toritaka: |
Aprobado por:
t0tii [*] |
|
El tema interesa, ademas de dar un poco un giro de tanto CS. Creo que habra algunos usurios muy interesados en el tema, y a aquellos que les entre de verdad el "gusanillo" investigaran y pediran mas y mas. |
|
|
Mensajes: 3632
Noticias: 49
Artículos: 49
Juegos: 13
Películas: 0
|
Enlaces: 1
Comentarios: 322
Honor: 405
Popularidad:
238
Discos: 5 |
|
|
 |
|
Comentario de articulo 2008-11-07 / 17:16:21 |
|
 |
| Comentario de
Uber Soldat: |
Aprobado por:
t0tii [*] |
|
Muy interesante. Si mi maquina fuese mas potene xD |
|
|
Invitado
Invitado
Método de contacto:
a@a.a
|
|
 |
|
Comentario de articulo 2009-11-04 / 18:57:36 |
|
 |
| Comentario de
Invitado: |
Aprobado por:
[NiCo] |
Me parece un tema muy interesante y muy bien introducido. Pero despues de leerlo detenidamente, me surgen un par de cuestiones, otras tecnologia que compiten con .NET como son J2EE, PHP, etc ¿no son tambien codigo administrado? ¿Cuales son las ventajas y desventajas principales de .NET sobre sus principales competidores? Podrias introducir una pequeña evolucion de las tecnologias de microsoft que han ido apareciendo hasta la llegada de .NET por ejemplo y por qué microsoft apuesta por .NET para el futuro. Por ultimo, ¿el hecho de que sea una tecnologia propietaria de Microsoft, significa que solo podria ser utilizada en servidores Windows?
Saludos. |
|
|
 |
Jesús Rubén
( J35U5R )
Karma:
|
Mensajes: 1808
Noticias: 3
Artículos: 3
Juegos: 62
Películas: 4
|
Enlaces: 0
Comentarios: 26
Honor: 222
Popularidad:
166
Discos: 7 |
|
|
 |
|
Comentario de articulo 2009-11-09 / 15:29:43 |
|
 |
| Comentario modificado el 2009-12-15 10:01:23 por J35U5R. |
| Comentario de
Jesús Rubén: |
Aprobado por:
Jesús Rubén |
Antes de nada, estás intentando comparar PHP con .Net, PHP es simplemente un lenguaje de script para webs, ni siquiera se compila. Tu lo que quieres hablar es de Asp.Net, no de .Net, Asp.Net es la plataforma para poder utilizar código .Net orientado a una Web. La diferencia entre Asp.Net y PHP, es que Asp.Net compila el código en un ejecutable de .Net, el cual puedes haber programado en C++, Visual Basic, o C#, incluso DLL hechas en otos lenguajes como F#. PHP es un lenguaje de script muy sencillo como el antiguo ASP, por eso va tan sumamente lento comparado con un ensamblado de .Net, es un lenguaje ideado sólo para web e intentar comparar PHP con .Net, es como intentar comparar un martillo con una caja llena de herramientas, la cual incluye un martillo. Una de las funcionalidades que Microsoft le ha dado a .Net, es la de poder crear páginas web mediante la plataforma ASP.Net, si te fijas el IIS7 va todo orientado a Asp.Net.
En J2EE de Sun puedes acceder algunos objetos administrados, supongo que lo nombras porque alguien te ha enseñado java y ahora no sabes que hacer con esos conocimientos a no ser que vayas a trabajar a una gran empresa que lleva toda su vida trabajando con Java y lo tiene todo montado con servidores unix y sus programas java de hace siglos y necesitan gente que mantenga esos programas arcaicos. Es muy triste, pero así es, si te enseñan java en centros de educación, es simplemente por la salida laboral que supone saber java para estas grandes empresas con programas antiguos hechos en java, al igual que hace poco se seguía enseñando cobol. Aún siendo un lenguaje antiguo y obsoleto, hoy en día aún buscan programadores de cobol empresas que tienen sistemas muy antiguos hechos en cobol. Aprender este tipo de lenguajes, es como si aprendieses hoy en día a arreglar monitores CRT (De tubo catódico) por el simple hecho de que hay muchas empresas que tienen monitores de tubo y van a necesitar mucha gente que repare y mantenga esos monitores antiguos. Algunos centros de educación empiezan a enseñar .Net porque hay que pensar en el ámbito laboral a largo plazo y no sólo cerrarse a estas empresas, casi todas las PIMEs de hoy en día usan Windows.
El único competidor real que tuvo hace tiempo el Visual Studio de Microsoft, fue Borland, cuando apareció .Net, Borland se echó las manos a la cabeza y dijo: ¿Ahora que hacemos?, e hizo que sus lenguajes funcionasen también con .Net Framework, sólo algunos antiguos programadores de Delphi, se pasaron a Delphi.Net. La mayoría de los que usaban Borland C++, se pasaron a Visual C++.Net.
Sobre lo que comentas de usar .Net en Linux, existe el Mono, que es un intento linuxero de copiar el Framework de Microsoft. Nada viable a mi punto de vista. Si hablas de Web, olvídate, Asp.Net es para Windows y necesitas el IIS 6 o 7, nada de sistemas operativos gratuitos. Antes de que apareciese Windows 2000 Server, yo estuve año y medio trabajando con Servidores Linux, sinceramente lo único que consigues es perder una gran cantidad de tiempo configurandolo, parcheandolo y arreglando problemas. Cuando apareció Windows 2000 Server, fue como quitarse un enorme peso de encima.
Hoy en día si hablamos de programación para Windows no hay competidores reales, .Net es la herramienta por excelencia, en .Net puedes escribir funciones no administradas en C++ o C#, o llamar a librerías antiguas hechas en C no administrado de tus versiones antiguas de programas con el api de toda la vida.
ASP.Net y PHP, son muy distintos, PHP sólo puede ser programado en un lenguaje de script para preprocesar html. ASP.Net puede ser programado en cualquier lenguaje de .Net y compila el ensamblado de .Net como cualquier programa hecho en .Net.
Las ventajas que tiene ASP.Net con respecto a PHP. Digamos que tu puedes compilar una dll en el lenguaje que te de la gana y llamar a las funciones desde una web hecha en ASP.Net, puedes crear elementos estáticos como variables, colecciones, funciones etc, compartidas. Otra ventaja muy importante es la velocidad, PHP al ser un lenguaje de script tiene que leer todo el archivo PHP e ir procesándolo cada vez. En ASP.Net el sistema compila la web la primera vez y utiliza el compilado de .Net ejecutando directamente el código MSIL, lo cual lo hace increíblemente más rápido a la hora de lanzar una página. La ventaja más importante es que tienes .Net Framework para trabajar, un sistema de clases donde encontrarás cualquier tipo de función. Y la ventaja más enorme con respecto a cualquier plataforma de programación, es que el IDE (Interfaz de usuario) es el mejor que existe, con corrección de errores en tiempo real y un sistema de intelisense muy avanzado y como te interesa el tema de la web, te diré que puedes conectarlo directamente el sistema de depuración al IIS y depurarlo paso a paso en tiempo real etc etc...
Te voy a ser sincero si buscas algo sencillo para hacer webs multiplataforma, lo que buscas es PHP, si buscas algo realmente potente, profesional y rápido para Windows, la respuesta es ASP.Net. Pero recuerda que .Net no es sólo ASP.Net.
|
|
 |
|
 |
|
 |
Broco
( brocolih )
Karma:
|
Mensajes: 3410
Noticias: 11
Artículos: 11
Juegos: 22
Películas: 238
|
Enlaces: 8
Comentarios: 161
Honor: 505
Popularidad:
464
Discos: 20 |
|
|
 |
|
Comentario de articulo 2009-11-10 / 23:00:32 |
|
 |
| Comentario de
Broco: |
Aprobado por:
Sistema
|
|
Buen articulo y buena respuesta :) |
|
|
|