{"id":293,"date":"2026-03-05T03:41:01","date_gmt":"2026-03-05T03:41:01","guid":{"rendered":"https:\/\/hackcuba.net\/?p=293"},"modified":"2026-03-05T03:42:22","modified_gmt":"2026-03-05T03:42:22","slug":"introduccion-a-net","status":"publish","type":"post","link":"https:\/\/hackcuba.net\/?p=293","title":{"rendered":"Introducci\u00f3n a .NET"},"content":{"rendered":"\n<p>.NET es un proyecto de Microsoft para crear una nueva plataforma de desarrollo de software. Microsoft intenta desarrollar una estrategia horizontal que integre todos sus productos, desde el sistema operativo hasta las herramientas de mercado. Esta tecnolog\u00eda es una respuesta a la tecnolog\u00eda Java de Sun Microsystems, para acaparar el creciente mercado de los negocios en el mundo Web. Microsoft anunci\u00f3 la iniciativa de .NET en Julio del 2000. Ya en Abril del 2003, la versi\u00f3n 1.1 de .NET Framework estaba en nuestras vidas, y para siempre.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Bases<\/h2>\n\n\n\n<p>Para aprovechar al m\u00e1ximo las ventajas de .NET, es imprescindible conocer c\u00f3mo funciona y qu\u00e9 brinda.<br>El Framework es la base de toda la plataforma, es la infraestructura que re\u00fane un conjunto de lenguajes, herramientas y servicios que simplifican el desarrollo de aplicaciones. Algunas biograf\u00edas incluyen el ASP.NET.<\/p>\n\n\n\n<p>1. <strong>El conjunto de lenguajes de programaci\u00f3n<\/strong>: C# (naci\u00f3 con .NET, sin duda el paradigma de esta tecnolog\u00eda), Visual Basic, Delphi (Object Pascal), C++, J#, Perl, Python, Fortran y Cobol.NET.<\/p>\n\n\n\n<p>2. <strong>La Biblioteca de Clases Base o BCL<\/strong>: Se clasifica en tres grupos claves: ASP.NET y Servicios Web XML, Windows Forms y ADO.NET. Su funci\u00f3n es brindar los servicios necesarios para realizar las operaciones b\u00e1sicas involucradas en el desarrollo de aplicaciones, entre otras la interacci\u00f3n con los dispositivos perif\u00e9ricos, manejo de datos (ADO.NET), administraci\u00f3n de componentes web (aqu\u00ed es donde entra ASP.NET), herramientas de gr\u00e1ficos (GDI+), operaciones aritm\u00e9ticas, interacci\u00f3n con el API Win32,&#8230; Pr\u00e1cticamente todo lo necesario para trabajar lo brinda la BCL.<\/p>\n\n\n\n<p>3. <strong>El Common Language Runtime (CLR)<\/strong>: El componente m\u00e1s importante del framework es el CLR (motor com\u00fan de ejecuci\u00f3n). Si eres programador de Java, piensa en el CLR de .NET como el equivalente del Java Virtual Machine (JVM). Si no conoces Java piensa en el CLR como el coraz\u00f3n y el alma de la arquitectura .NET. A un alto nivel, el CLR activa los objetos, realiza chequeos de seguridad sobre ellos, los coloca fuera de la memoria y destruye los no referenciados (<em>Garbage Collection<\/em>).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">C\u00f3mo se crean aplicaciones.<\/h2>\n\n\n\n<p>1. <strong>Elegir un compilador<\/strong>: .NET ya soporta m\u00e1s de 20 lenguajes, cada uno con un compilador particular, aunque todos con un fin com\u00fan como veremos despu\u00e9s. Elegir un lenguaje no es tan dif\u00edcil, el mayor peso lo da nuestros gustos y la experiencia que tengamos con alguno de ellos. Se recomienda utilizar uno o dos para obtener mayores beneficios del CLR.<\/p>\n\n\n\n<p>2. <strong>Compilar el c\u00f3digo a Lenguaje Intermedio de Microsoft (MSIL)<\/strong>: Toda aplicaci\u00f3n en .NET est\u00e1 compuesta por ensamblados, toda DLL o EXE es un ensamblado. Los mismos, adem\u00e1s de un manifiesto, metadatos y recursos, contienen c\u00f3digo intermedio (IL). El IL es com\u00fan a todos los lenguajes, y todos los lenguajes se convierten a IL. \u00bfC\u00f3mo se logra esto?<br>El <em>Common Type System<\/em> (CTS) es un conjunto de reglas para declarar, usar y administrar tipos. Establece una plataforma que permite integraci\u00f3n de lenguajes, seguridad en los tipos y un alto rendimiento de ejecuci\u00f3n de c\u00f3digo. Los tipos creados en .NET deben cumplir las reglas del CTS.<br>El <em>Common Languague Specification<\/em> (CLS) es un convenio entre los dise\u00f1adores de lenguajes y los dise\u00f1adores de .NET Framework. Est\u00e1 formado por un subconjunto del CTS y un conjunto de reglas y restricciones que posibilitan a un compilador, agregar un lenguaje a la plataforma .NET. Todos los lenguajes no tienen reglas iguales. Por ejemplo, C++ es <em>case-sensitive<\/em>, y VB.NET no. Con el objetivo de que todos vayan por la misma l\u00ednea, Microsoft public\u00f3 el CLS.<br>Todo esto posibilita crear una clase Veh\u00edculo en Visual C++, implementar un auto en C# y un avi\u00f3n en VB, ambos herederos de Veh\u00edculo. Para completar podemos crear el ConductorDeVeh\u00edculo en Java #. Polimorfismo entre lenguajes!!!.<\/p>\n\n\n\n<p>3. <strong>Compilar MSIL en c\u00f3digo nativo<\/strong>: En tiempo de ejecuci\u00f3n, un compilador <em>Just-In-Time<\/em> (JIT), componente del CLR, convierte MSIL en c\u00f3digo nativo. Durante esta compilaci\u00f3n, el c\u00f3digo debe pasar un proceso de comprobaci\u00f3n que examina el MSIL y los metadatos para averiguar si el c\u00f3digo garantiza la seguridad de tipos. El JIT es muy interesante, s\u00f3lo compila a c\u00f3digo nativo cada parte del IL una sola vez. La primera vez que se necesita un m\u00e9todo se compila y se guarda, la pr\u00f3xima s\u00f3lo se busca lo anteriormente compilado y se ejecuta este. En parte, por eso se denomina Justo a Tiempo, en el momento preciso compila lo \u00fanicamente necesario, si un m\u00e9todo de la aplicaci\u00f3n nunca se requiere en ejecuci\u00f3n, nunca se compila, y se hace s\u00f3lo una vez.<\/p>\n\n\n\n<p>4. <strong>Ejecutar el c\u00f3digo<\/strong>: El CLR proporciona la infraestructura que permite que la ejecuci\u00f3n tenga lugar, as\u00ed como una amplia gama de servicios que se pueden utilizar durante la ejecuci\u00f3n. El CLR tiene los siguientes componentes:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"383\" height=\"287\" src=\"https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660015.png\" alt=\"\" class=\"wp-image-294\" srcset=\"https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660015.png 383w, https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660015-300x225.png 300w\" sizes=\"auto, (max-width: 383px) 100vw, 383px\" \/><\/figure>\n\n\n\n<p>El <em>Execution Engine<\/em> es el componte encargado de dirigir toda la ejecuci\u00f3n de los programas, usa los dem\u00e1s componentes del CLR para cargar y descargar c\u00f3digo, verificar el IL, manejar la memoria, mantener la seguridad de tipos, manejo de excepciones y la colocaci\u00f3n y liberaci\u00f3n de objetos. El \u00faltimo paso es realizado por el <em>Garbage Collector<\/em>, sin duda una herramienta vital, pues nos a\u00edsla de tener que pensar en liberar memoria como en C++.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Las ventajas m\u00e1s importantes que proporciona .Net Framework son:<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>C\u00f3digo administrado:<\/strong> El CLR realiza un control autom\u00e1tico del c\u00f3digo para que \u00e9ste sea seguro, es decir, controla los recursos del sistema para que la aplicaci\u00f3n se ejecute correctamente.<\/li>\n\n\n\n<li><strong>Interoperabilidad multilenguaje<\/strong>: El c\u00f3digo puede ser escrito en cualquier lenguaje compatible con .NET, ya que siempre se compila en c\u00f3digo intermedio (MSIL).<\/li>\n\n\n\n<li><strong>Compilaci\u00f3n <em>just-in-time<\/em><\/strong>: El JIT compila el c\u00f3digo intermedio (MSIL) generando el c\u00f3digo m\u00e1quina propio de la plataforma, sea Windows o Mac. Se aumenta as\u00ed el rendimiento de la aplicaci\u00f3n al ser espec\u00edfico para cada plataforma.<\/li>\n\n\n\n<li><em><strong>Garbage collector<\/strong><\/em>: El CLR proporciona un sistema autom\u00e1tico de administraci\u00f3n de memoria denominado recolector de basura. El CLR es el encargado de detectar cu\u00e1ndo el programa deja de utilizar la memoria y la libera autom\u00e1ticamente.<\/li>\n\n\n\n<li><strong>Seguridad de acceso al c\u00f3digo<\/strong>: Se puede especificar que una pieza de c\u00f3digo tenga permisos de lectura de archivos pero no de escritura. Es posible aplicar distintos niveles de seguridad al c\u00f3digo, de forma que se puede ejecutar c\u00f3digo procedente del Web sin tener que preocuparse si esto va a estropear el sistema escribiendo o cambiando donde no debe.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Futuro de la tecnolog\u00eda:<\/h2>\n\n\n\n<p>El .NET Framework 3.0 es el nuevo modelo de programaci\u00f3n para Windows. Combina la funcionalidad de sus anteriores con cuatro nuevas tecnolog\u00edas, que empezaremos a o\u00edr cuando tengamos en Cuba una mayor proliferaci\u00f3n del Vista. En la figura podemos apreciarlas en azul oscuro:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"454\" height=\"369\" src=\"https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660016.png\" alt=\"\" class=\"wp-image-295\" srcset=\"https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660016.png 454w, https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660016-300x244.png 300w\" sizes=\"auto, (max-width: 454px) 100vw, 454px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><em>Windows Presentation Foundation<\/em> (WPF o Avalon)<\/strong>: Provee a los desarrolladores y dise\u00f1adores de un modelo de programaci\u00f3n unificado para crear aplicaciones Windows que mezclan la UI con contenido multimedia. Podemos dividir el proceso en el dise\u00f1o y las funcionalidades, para unirlos en el resultado final.<\/li>\n\n\n\n<li><strong><em>Windows Communication Foundation<\/em> (WCF o Indigo)<\/strong>: Es el modelo de programaci\u00f3n unificado de Microsoft para la construcci\u00f3n de aplicaciones orientadas a servicios en c\u00f3digo manejado. Extiende el .NET Framework, permitiendo a los desarrolladores construir <em>Web Services<\/em> seguros y fiables.<\/li>\n\n\n\n<li><strong><em>Windows Workflow Foundation<\/em> (WF o WinOE)<\/strong>: <em>Windows Workflow Foundation<\/em> es el modelo de programaci\u00f3n unificado de Microsoft para un desarrollo r\u00e1pido de aplicaci\u00f3n orientadas a procesos empresariales.<\/li>\n\n\n\n<li><strong><em>Windows CardSpace<\/em> (WCS, antes \u00abInfoCard\u00bb):<\/strong> <em>Windows CardSpace<\/em> permite a los usuarios identificarse digitalmente de una manera sencilla y familiar.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusiones<\/h2>\n\n\n\n<p>En .NET el programador se puede concentrar en resolver el problema, no tiene que complicarse en cuestiones como manejo de memoria o integridad de sus objetos. Para ello existe el <em>Garbage Collector <\/em>y un fuerte sistema de tipos. Por cuestiones de espacio no puedo abordar el sistema de tipos de .Net, o en los ensamblados y sus metadatos. Mi idea era definir muchas cuestiones de esta tecnolog\u00eda sin profundizar en detalles. Pretendo hacer otro art\u00edculo sobre ensamblados, metadatos y <em>Reflection<\/em>, para no dejar el tema aqu\u00ed.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Para saber m\u00e1s&#8230;<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Introducing Microsoft\u00ae .NET, Second Edition David S Platt Publisher: Microsoft Press Second Edition May 15, 2002<\/li>\n\n\n\n<li><a href=\"http:\/\/msdn.microsoft.com\/net\" target=\"_blank\" rel=\"noreferrer noopener\">P\u00e1gina de .NET en el MSDN<\/a><\/li>\n\n\n\n<li>Microsoft .NET for Programmers, FERGAL GRIMES<\/li>\n\n\n\n<li><a href=\"http:\/\/en.wikipedia.org\/wiki\/Microsoft_.NET\" target=\"_blank\" rel=\"noreferrer noopener\">Microsoft .NET in Wikipedia<\/a><\/li>\n\n\n\n<li><a href=\"http:\/\/en.wikipedia.org\/wiki\/Microsoft_.NET_Framework\" target=\"_blank\" rel=\"noreferrer noopener\">Microsoft .NET Framework in Wikipedia<\/a><\/li>\n<\/ul>\n\n\n\n<p>Esctito por Krlo [<a href=\"mailto:blackhat4all@gmail.com?subject=para Krlo\">blackhat4all@gmail.com<\/a>]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>.NET es un proyecto de Microsoft para crear una nueva plataforma de desarrollo de software. Microsoft intenta desarrollar<\/p>\n","protected":false},"author":2,"featured_media":297,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18,36],"tags":[108,58,38],"class_list":["post-293","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programacion","category-proyecto-blackhat","tag-net","tag-programacion","tag-proyecto-blackhat"],"_links":{"self":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts\/293","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=293"}],"version-history":[{"count":1,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts\/293\/revisions"}],"predecessor-version":[{"id":296,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts\/293\/revisions\/296"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/media\/297"}],"wp:attachment":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=293"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=293"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=293"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}