Librerias y recursos utiles para el programador de C#

Como ya sabeis la plataforma .NET dispone de multitud de utilidades, librerias y recursos que permiten ampliar las funcionalidades de nuestras aplicaciones.

De compiladores y entornos de desarrollo ya hablé en otro articulo, por lo que aqui solo os presentaré aquellos recursos que considero bastante utiles a la hora de programar con .NET.

MSDN Express Library

El primer recurso que todo programador de .NET deberia tener a mano es el MSDN Express Library que puede descargarse gratuitamente desde la pagina del Visual Studio Express. Ocupa unos 360Mb y en el encontraremos una referencia completa de todad las funciones y librerias que incorpora la plataforma .Net, tanto para C# como para Visual Basic o para C++. Tambien encontraremos ejemplos que nos ayudarán a la hora de entender el funcionamiento de algunas funciones. Evidentemente, al ser un producto de Microsoft se centrará sobretodo en sus sitemas operativos, no obstante, dado el caracter multiplataforma del .Net, escepto algunos apartados muy especificos, la información nos será util cuando creemos nuestros proyectos multiplataforma. Lo podremos encontrar en diversos idiomas, con lo que facilitará la tarea a muchos.

Como inconveniente hay que destacar que como no tengas un sistema Windows no vas a poder utilizar este recurso ya que funciona a través de una aplicación de ayuda propietaria que solo funciona en systemas Microsoft. No obstante, como alternativa, teneis la web del MSDN, que contiene la información que viene con el WP SDK, aunque desde esa web no se puede acceder a los ejemplos.

Windows Plataform SDK

Como complemento al MSDN tambien tenemos el Windows Plataform SDK, que también es  distribuido de forma gratuita, y nos proporciona información acerca de la plataforma .NET con multitud de ejemplos para realizar diversas tareas aunque enfocadas sobretodo al sistema Windows. Al igual que su compañero MSDN depende del sistema de Ayuda del Visual Studio y solo funcionará bajo plataforma Windows, aunque la información, sin proyectos de ejemplo, puede encontrarse en la web del MSDN . Suele actualizarse un par de veces al ño y se puede descargar desde aqui.

DirectX

La archiconocida libreria de Microsoft. Aunque de hecho no es una libreria sino más bien un conjunto diseñado especialmente para el desarrollo de videojuegos. Nos permite manejar las tarjetas de video, el audio, dispositivos multimedia, dispositivos de control como joystics, teclados, gestión de comunicaciones por red,…

Ideada inicialmente para funcionar en C++, también es posible utilizarla con entornos .NET a través de unas librerias especificas aunque hay que decir que muchas de las funciones de la version pasa C++ están limitadas o directamente no están implementadas.

Si alguna vez habeis utilizado las DirectX con C++, la implementación para .Net os resultará levemente familiar, aunque no funcione exactamente igual.

DirectX dispone de 2 paquetes distintos dirigidos, por un lado a los desarrolladores, el llamado DirectX SDK, y por otro lado a los usuarios finales, denominado DirectX Redistributable. Ambos son gratuitos y al menos el segundo paquete es obligatorio para poder utilizar las DirectX.

De forma más o menos periodica Microsoft va sacando versiones y revisiones de su libreria y aunque algunos paquetes puedan tener el mismo numero de versión pueden no ser compatibles dado que en ocasiones los cambios que se realizan en las librerias son bastante sustanciales.

Es por ello que debemos tener en cuenta no solo el numero de la versión si no tambien la fecha en la que se empezó a distribuir la revisión que vallamos a utilizar. Si bien estas revisiones suelen ser compatibles hacia atrás en ocasiones podemos encontrarnos con que librerias completas han desaparecido, o cambiado funciones por lo que nuestras aplicaciones podrian no funcionar como esperamos. Las distintas revisiones suelen distinguirse por una letra que acompaña al numero.

Además de ese pequeño handicap de las versiones y revisiones otro problema que nos encontramos al programar con DirectX en .Net es la falta de información. Si bien las distintas versiones del SDK dan soporte al .NET mediante librerias especificas, la documentación para .Net no se adjunta por lo que es bastante complicado saber la funcionalidad y el uso de la mayoria de las funciones, aunque esto siempre puede solucionarse gracias a internet. Para tener la documentación de las DirectX para .Net deberemos encontrar la versión  de Agosto del 2007 del SDK ya que las posteriores no la incluyen.

El hecho de que la documentación no se incluya en el SDK de las DirectX posiblemente sea debido a que Microsoft distribuye otra libreria, denominada XNA diseñada especificamente para aplicaciones .NET que además permite la programación de diversos dispositivos de Microsoft, como la Xbox o los Zune.

La última versión de las DirectX es la 10 que Microsoft, solo ha sacado para Windows Vista, por lo que si tu equipo es un XP deberás limitarte a las DirectX 9. Aunque corren por ahi versiones modificadas de la 10 que dicen que pueden correr sobre XP.

La diferencia sustencial entre la 9 y la 10 es un aumento de la calidad grafica de sus aplicaciones ya que permite máximo aprovechamiento de la tecnologia de las últimas tarjetas gráficas. No obstante, para aplicaciones sencillas la versión 9 nos sobra.

El DirectX SDK puede descargarse desde aqui

XNA Game Studio

El XNA Game Studio, como ya he mencionado anteriormente es una alternativa de Microsoft a las DirectX para .NET.

Está enfocado claramente a la creación de videojuegos y permite crear aplicaciones para distintos sistemas y dispositivos como Windows XP, Vista, CE, Xbox o los Zunes.

Funciona sobre las DirectX, por lo que deberemos tener instalado en nuestro sistema por lo menos la versión redistributable de las mismas.

Al igual que la version de DirectX para .NET con XNA no se lograrán los mismos resultados que con las DirextX para C++, ya que XNA está enfocado al programador aficionado mientras que las DirectX están dirigidas al programador profesional. No obstante, los resultados que podremos obtener con XNA no son nada despreciables y con algo de creatividad y paciencia se pueden lograr resultados que poco tendran que envidiar a los profesionales.

XNA nos permitirá manejar los graficos de nuestro equipo tanto en aplicaciones 2D como 3D. También nos permitirá el control sobre el audio en 3D, para sacar el máximo provecho de los equipos con sistemas de multiples altavoces. Nos permitirá utilizar dispositivos como Joysticks, ratones y teclados y también nos ayudará en la creación de juegos multiusuario gracias a la libreria para el manejo de la red de la que dispone.

Además de todo esto, gracias a algunos de los miembros de la comunidad XNA podremos utilizar librerias extra que nos permitirán un mayor control sobre dispositivos, como por elemplo el controlador de la wii, webcams y otros dispositivos de dificil denominación, mejor veis la web de Coding4Fun y lo entendereis.

Como DirectX, XNA está orientada a objetos y entender su funcionamiento no es demasiado dificil. Incluso diria que es algo más fácil que las DirectX.

Resumiendo, es una buena libreria para aficionados que quieran que sus trabajos funcionen en entornos windows y primos cercanos, con mucha información y un buen soporte, y que además nos permite incluir nuestras aplicaciones en el canal de descargas de la Xbox.

La web de descarga de  XNA:
http://creators.xna.com/es-ES/downloads

Webs de la comunidad:
http://creators.xna.com/es-ES
http://blogs.msdn.com/coding4fun/

TaoFramework

De todas las librerias de las que voy a hablar en este articulo está es la primera que comento que no pertenece a Microsoft. De hecho es un proyecto que nació bajo el ala de la comunidad Mono totalmente libre y realizado por aficionados.

Al igual que la libreria XNA esta está dirigida fundamentalmente a la creación de videojuegos, no obstante, dada la cantidad de funcionalidades que posee puede utilizarse en infinidad de aplicaciones tecnicas, cientificas o de entretenimiento.

Su principal virtud es que es realmente multiplataforma y las aplicaciones creadas con esta libreria pueden utilizarse tanto en entornos windows como linux sin ningun cambio en el código.

Realmente TaoFramework no es en si una libreria, sino que es un puente entre librerias,  sobradamente conocidas, escritas en C/C++ y la plataforma .NET. Es por ello que si bien los ejecutables .NET serán compatibles entre sistemas, será preciso que el sistema en el que se vaya a utilizar la aplicación estén instaladas o copiadas las librerias dinamicas precisas, cosa que en la mayoria de ocasiones no representará mayor problema que el de copiar un par de archivos más especificos de cada sistema.

Algunas de las librerias que se incluyen en el paquete de TaoFramework son OpenGL, OpenAL, Freetype, SDL, Lua, CG o DevIL entre otras.

Como inconveniente cabe indicar que al ser un proyecto que se realiza durante el tiempo libre de voluntariosos programadores, las actualizaciones se hacen esperar y algunas de las librerias no están muy al dia.

Sin duda para mi, un simple aficionado, es una buena elección. Facil de utilizar, con bastante información acerca del uso de las distintas librerias, y gratis.

Anteriormente ya escribí un articulo con información acerca de esta libreria asi que si quereis saber más os remito a ese articulo.

Solo añadir que la gente del foro, es bastante maja y suele ayudar en las consultas que se realizan.

Podeis encontrar esta libreria en: http://www.taoframework.com

SDL.NET

SDL es una conocida libreria, al igual que las ultimas mencionadas, dirigida a la creción de videojuegos. Permite el manejo de graficos, principalmente en 2D, aunque admite 3D a través de OpenGL, de audio, de dispositivos de entrada y de comunicaciones por red.

Gran parte de los videojuegos libres multiplataforma que corren por la red la utilizan aunque en su mayoria utilizan la versión para C/C++.

SDL.NET es, al igual que TaoFramework, un puente entre la plataforma .NET y la libreria original escrita en C,  por lo que precisará, al igual que la anterior, de los archivos de la libreria especificos para cada sistema. No obstante, es muy facil conseguirlos por lo que no representará mayores dificultades.

Su aprendizaje es sencillo y tiene una web con mucha información y multitud de ejemplos.

TaoFramework también implementa esta libreria, aunque su estructura y funcionamiento son distintos, dado que TaoFramework hace una implementación directa de las distintas funciones, mientras que CsGL lo hace a través de una estructura de clases por lo que las aplicaciones creadas con una deberian ser retocadas para funcionar en la otra, bastante más alla del cambio de referencias. Además, dada esa estructura basada en objetos su funcionamiento es mucho más intuitivo y simple que la implementación del TaoFramework.

Se puede descrgar desde la siguiente dirección: http://cs-sdl.sourceforge.net

GTK#

GTK+ es una libreria diseñada para el desarrollo de interfaces graficos de usuario.

Originalmente desarrollado para sistemas Unix bajo X-Windows (el sistema de ventanas de unix) y en C, en la actualidad funciona tanto en sistemas unix como en entornos windows.

GTK# es la implementación de GTK+ para entornos .NET. Es el sistema de interfaces que se recomienda en Mono (aunque evidentemente tambien admite los ‘Forms’ de windows por compatibilidad).

Para su funcionamiento es preciso instalar las librerias GTK+ en nuestro sistema. En muchos sistemas unix suelen instalarse por defecto asi que seguramente solo deberá instalarse en los sistemas windows.

Tiene toda clase de widgets o complementos que permiten poner cuadors de texto, etiquetas, botones, barras de desplazamiento, botones de selección, dialogos, etc. Asi como aceleradores, gestores graficos y de archivos y facilidades para la internacionalización de las aplicaciones.

Admite temas por lo que nuestras aplicaciones podrán tener un aspecto particular cada una de ellas o variar según la configuración del sistema.

Dispone además de un editor para formularios, denominado Glade, que permite crearlos de forma visual, grabarlos en un archivo de definición con un formato particular  y añadirlos con posterioridad a los proyectos en forma de recurso con lo que solo se deberán implementar las funciones precisas para manejar los eventos. Aunque tambien pueden crearse formularios a través de codigo de forma sencilla.

La información, los tutoriales y los ejemplos son abundantes por lo que no es dificil aprender su funcionaliento. Es una buena alternativa a los Forms de Microsoft que además nos permite personalizar nuestras aplicaciones.

Puedes descargarlo o encontrar más información en la siguiente dirección:
http://www.mono-project.com/GtkSharp

wx.NET

Otra implementación de otra conocida libreria para la creación de interfaces gráficos de usuario. En este caso wxWidgets.

La libreria en si está totalmente orientada a objetos y permite la creación de nuestros propios elementos (dinominados widgets) a partir de los ya existentes.

La idea sobre la que se basaron a la hora de crear la libreria wxWidgets era la de crear una libreria multiplataforma que permitiera crear aplicaciones para diversos sistemas sin tener que cambiar nada en el codigo y es por ello que la libreria original, escrita en C++ tiene implementaciones para multitud de sistemas operativos como windows, linux, MacOS, Os/2 o WinCe entre otros.

La versión para .NET, por ahora solo soporta sistemas windows y linux aunque yo diria que para la mayoria de los que leais esto no habrá problema.

Dado el caracter multiplataforma y la voluntad de los creadores a implementar cuantas más cosas mejor wx.Net no tan solo implementa clases para el manejo de formularios y sus componentes, también permite el manejo de archivos, aceleradores, graficos con GDI, documentos html, impresión de documentos y manejo de archivos XML. Su hermano mayor  wxWidgets admite además manejo de bases de datos, funciones de comunicacion por red, control de medios multimedia y alguna otra cosa más. Dado que la plataforma.Net ya dispone de practicamente todas esas funciones realmento no son precisas e implementarlas pasando por las librerias de wxWidgets cuando ya están directamente implementadas en la plataforma seria un poco absurdo. No obstante hecho de menos la posibilidad de utilizar ventanas OpenGL de la que dispone la versión en C++.  Aunque esto también puede subsanarse mediante la libreria TaoFramework.

Uno de los puntos flacos para el programador novato es que los formularios deberán diseñarse escribiendo el codigo correspondiente de forma manual ya que no se dispone de un editor para los mismos. Con formularios grandes llenos de botones, etiquetas y demás artefactos el codigo puede llegar a volverse una pesadilla si no se organiza bien. Talvez algún dia se le ocurra a alguien hacer un editor de formularios para esta libreria. Que por otra parte ya existe para la versión en C++

Otra cosa de la que adolece wx.NET, al igual que su hermano wxWidgets es el aspecto de sus ventanas y botones, sobretodo en sistemas windows,  demasiado sobrias y cuadriculadas para mi gusto, sin posibilidad de cambiar su aspecto salvo que queramos rompernos la cabeza rehaciendo el aspecto de cada uno de los widgets con GDI.

Reconozco que la versión en C++ de esta libreria no está nada mal, no obstante para la plataforma .NET, puestos a elegir entre GTK# y wxNET me quedo con la primera ya que la documentación está más clara y el soporte es mucho mejor, además de la fantastica posibilidad de cambiar los temas y editar visualmente los formularios.

Si quereis descargar la libreria o más información visita esta web:
http://wxnet.sourceforge.net/

La web de la libreria original:
http://www.wxwidgets.org/

SandCastle

SandCastle no es una libreria, sno más bien una utilidad que nos permitirá crear la documentación de nuestras aplicaciones en diversos formatos. Mediante la transformación de los comentarios de nuesto codigo a otros formatos com html, pdf, o hlp.

Para documentar nuestros proyectos tan solo hay que ir añadiendo los comentarios a cada una de las funciones, clases o variables forma ordenada a través de comentarios especiales especificados con tres barras inclinadas ( /// ) y con etiquetas xml. tal como se indica en la documentación de microsoft.

Puedes descargar SandCastle desde la siguiente dirección:
http://www.codeplex.com/Sandcastle

Tags: , , , , , , ,
Escriba un comentario.

11 Comentarios

  1. 10 de junio de 2009
    Permalink

    A todo dar, me sacaste de un apuro, ademas de que la info es muy interesante


  2. fransk
    9 de agosto de 2011
    Permalink

    gracias de verdad por la informacion, me ha servido , es q tengo un proyecto y kiero hacer algo interesante…
    si me puedes ayudar a nose buscar algun proyecto en C# con su codigo fuente te agradeceria mucho . gracias


  3. Andrea
    6 de noviembre de 2011
    Permalink

    Graciasssssssssss!!!!! Me salvaste el trabajo practico que estoy haciendo con el post! No encontraba nada sobre librerias en C#!

    Gracias!!!


  4. jesus
    4 de diciembre de 2011
    Permalink

    me gusto mucho la pagina y el contenido encontrado en ella. y aunque todo esta bien deberias ponerle la direccion del sitio de descarga de esas libreria para ser mas espesifico


  5. jesus
    4 de diciembre de 2011
    Permalink

    de verda muchas gracias le agradesco bastante por la informacion y los recursos brindados en esta pagina. y pido discurpa por el comentario echo previamente acerca de los enlaces de los sitios de descarga devido a que no lo vi por no leer vien y estar de rapido gracias por el apollo


  6. jackiie
    23 de marzo de 2012
    Permalink

    excelente informacion aunque no me ayuda del todo pero tengo una mejor idea del tema gracias

    1. 23 de marzo de 2012
      Permalink

      Ya se que la información no es muy completa y no está actualizada, pero no hay problema en reolver cualquier duda que surja :)
      Gracias por el comentario


  7. luis
    10 de mayo de 2012
    Permalink

    falto una muy interesante TORQUE 3D

  8. 31 de mayo de 2013
    Permalink

    Uno de los aspectos importantes por los que hemos dirigido nuestras miradas a esta librería es su lincencia. Nos permite desarrollar aplicaciones sin tener que estar pendientes de los aspectos legales que envuelven a la biblioteca. Ésta es una librería libre y tenemos la oportunidad de saber como se han implementado los diferentes aspectos de la misma lo que le proporciona, además, un valor añadido sobre nuestro aprendizaje. Así mismo, el ser libre y por su licencia, propicia un crecimiento en comunidad lo que se refleja en las características que esta librería posee.


  9. Savaje en C#
    30 de julio de 2013
    Permalink

    Estoy hacienda un programa de desktop y me hace falta utilizer una libreria de diseno para disenar darle detalles a los formularios del programa que me recomiendan gracias por su ayuda de antemano


  10. jeoks
    4 de octubre de 2013
    Permalink

    Excelente aporte, si puedes seria bueno que actualizaras el post!

Publicar un comentario

Su dirección de correo nunca será publicada o compartida. Los campos requeridos han sido marcados con *

*
*

Puede utilizar estas etiquetas y atributos HTML:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>