Revelando Intimidades: .NET en Cilzolloncas


"La Lección de Anatomía del Dr. Nicolás Tulp". Óleo sobre lienzo del pintor holandés Rembrandt (1632)

 Dice  el dicho que "los pingos se muestran en la cancha". Y yo espero con este post darte esos pingos para que los puedas mostrar

Porque si a vos te pasó lo que a mí, muchas veces habrás sentido que te veían como un gurú, un capo que se las sabía todas, pero en realidad tu único mérito era que te sabías muchas cosas que la mayoría no sabía. Pero de ahí a sabertelas todas… Ojalá! Quién puede saber de absolutamente todo en esto si es gigante!? Bueno, pero por lo menos que los demás se lo sigan creyendo todo lo que pueda durar…

Cuestión que, a la corta o a la larga, puede saltar una de esas peludas-peludas que te van a quedar grande incluso a vos, y ahí los demás pueden entrar a descubrirte tus límites, tus vulnerabilidades. A mí me pasó, en mis Java days, con cuestiones internas del manejo de memoria de la Java Virtual Machine (la JVM, o el equivalente del Common Language Runtime o CLR en .NET); me volvió a pasar con condiciones de carrera en ejecuciones de multihilos (multithreading); me pasó de nuevo con un bardo que saltó debido al ciclo de vida de clases estáticas y de nuevo me tumbó con otro bolonqui que saltaba con métodos sincronizados en un servidor Apache, que hacía que se encolen los requerimientos HTTP por minutos

Y varios se preguntaban "y éste era el famoso arquitecto!?". Y lógico, uno creía que entendía pero cuando las cosas salían mal, en todas las marañas de código creadas por cincuenta desarrolladores en distintos tiempos, era muy difícil saber en el día qué era lo que pudiera estar fallando. Y lo peor: no había a quién preguntarle. Todos esperaban que uno lo supiera

Bueno, espero con esto evitarte que te pase a vos lo que me pasó a mí con esas cosillas de bajo nivel que tiene .NET, que es ideal que los arquitectos conozcan para alguna eventualidad aunque mucho más ideal es que nunca vayan a necesitar tener que usar este conocimiento. Entro a tirar una serie de situaciones o preguntas

  • Qué hace el CLR con el código intermedio que viene en los ensamblados (las .dll)? Qué es el Just-in-time compiling y qué tipo de código se genera? Dónde va a parar?
  • Cómo se asigna la memoria para los objetos? Cómo la libera el Garbage Collector y cuándo? Cómo decide qué liberar primero?
  • Cómo se maneja la liberación de memoria si hay objetos que se referencian circularmente aunque ningún otro objeto en la aplicación esté referenciando ya a ninguno de ellos?
  • Con las clases estáticas? En qué las trata diferente el CLR? Qué tipo de memoria ocupan?
  • Cuando se instancia un objeto de una clase, en qué tipo de memoria está la lógica de sus métodos y en qué sus propiedades? La memoria ocupada por la lógica de sus métodos se maneja a nivel de instancia o de clase?

Parecen todas pregus de bajo nivel. Y lo son, en realidad. Ahora, decime. Nunca te tocó enfrentarte a un problema y en ese momento querer conocer la respuesta a alguna de estas preguntas?

Bueno, hay un par de recursos bastante interesantes acá:


Fig. 1 – Ejemplo de la pila de ejecución (stack) y de los
diversos heaps (montículos de memoria)

Si, como yo, sos de los que nunca vas a dejar el chupete de escribir código, acá tenés para entretenerte un rato mirando a la plataforma .NET desfilar en lencería eróstica…

Otras Referencias
Colgándome del comentario que me hizo Hänschen al primer borrador publicado de este post, pongo acá una lista de libros que encontré sobre .NET desde el lado de adentro

Essential .NET, Volume I: The Common Language Runtime
Don Box con Chris Sells
(Addison Wesley Professional, 2003)

CLR via C#, Second Edition
Jeffrey Richter (Wintellect)
(Microsoft Press, 2006)

Customizing the Microsoft® .NET Framework Common Language Runtime
Steven Pratschner
(Microsoft Press, 2005)

Shared Source CLI Essentials
David Stutz, Ted Neward, Geoff Shilling
(O’Reilly, 2003)

Esta entrada fue publicada en Software Architecture. Guarda el enlace permanente.

3 respuestas a Revelando Intimidades: .NET en Cilzolloncas

  1. Hans dijo:

    Recomiendo el libro Essential .NET  (Box, Sells) que trata justamente estos tòpicos.

  2. Diego dijo:

    Gracias Hänschen!!! Gracias por el feedback
    Aproveché lo que pasaste para buscar ése y otros brolis al respecto y como verás, completé el post
     
    Joya nunca taxi!
     
    Un abrazo

  3. Unknown dijo:

    Hola Diego,
     
    Me gusto este post, una de mis convicciones es que un arquitecto no solo debe ser aquel con una mirada de alto nivel, existen ocasiones y muchas en donde las arquitecturas de sistemas críticos altamente orientados al rendimiento te exigirá tener conocimientos de bajo nivel llegando al mismo Core de la plataforma .NET.
     
    Ahora no me siento tan tecnócrata, nunca se debe dejar el teclado…….🙂 ….
     
    Agrego unos buenos Blog sobre análisis de Dumps y debugging
     
    http://blogs.technet.com/marcelofartura/   debugging and general troubleshooting
     
    http://blogs.msdn.com/ricom/archive/2004/12/10/279612.aspx
     
    y acá un experto en el tema J
     
    http://msmvps.com/blogs/pmackay/default.aspx
     

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s