Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: 1304654 en 10 Febrero 2016, 10:29 am



Título: Métodos para saber como funciona un proyecto en c#MVC?
Publicado por: 1304654 en 10 Febrero 2016, 10:29 am
Hola, me gustaria preguntarles que sistema se utiliza para averiguar como esta programado un proyecto en c#mvc sin ningun tipo de documentación. Si hay que empezar a debugar linea por linea, o existen otros métodos?


Título: Re: Métodos para saber como funciona un proyecto en c#MVC?
Publicado por: Eleкtro en 10 Febrero 2016, 12:18 pm
¿A que te refieres exactamente?.

Con .Net Reflector y/o Simple Assembly Explorer (SAE) puedes reconstruir el código fuente de la aplicación (el código del módelo MVC) a partir de las instrucciones MSIL.

Saludos


Título: Re: Métodos para saber como funciona un proyecto en c#MVC?
Publicado por: 1304654 en 10 Febrero 2016, 13:13 pm
Bueno, soy algo nuevo en esto de c#MVC y actualmente me han asignado un proyecto algo grande sin ningún tipo de documentación. Estoy algo desesperado y me gustaria saber como funciona, me gustaria pedirles consejo para saber que métodos o sistemas utilizáis para aprender como funciona el código (pre programado) de un proyecto en c#mvc, si el sistema de debugar linea por linea seria el mas adecuado? eso es a lo que me refiero.


Título: Re: Métodos para saber como funciona un proyecto en c#MVC?
Publicado por: MCKSys Argentina en 10 Febrero 2016, 13:22 pm
Bueno, soy algo nuevo en esto de c#MVC y actualmente me han asignado un proyecto algo grande sin ningún tipo de documentación. Estoy algo desesperado y me gustaria saber como funciona, me gustaria pedirles consejo para saber que métodos o sistemas utilizáis para aprender como funciona el código (pre programado) de un proyecto en c#mvc, si el sistema de debugar linea por linea seria el mas adecuado? eso es a lo que me refiero.

Con cualquiera de las 2 herramientas que te han mencionado, puedes analizar el código fuente del programa.

Eso si, vas a necesitar saber programar para entenderlo.

Saludos!


Título: Re: Métodos para saber como funciona un proyecto en c#MVC?
Publicado por: Eleкtro en 10 Febrero 2016, 15:16 pm
No me quedó claro si tu duda tiene que ver con la ingenieria inversa, o solamente con la programación de C#.

Creo que lo que quieres decir es que alguien te ha pasado un proyecto de C#, pero en el código fuente no hay documentación así que no sabes muy bien como funciona la app, ¿es así?.

En ese caso, compila la solución en modo Debug e intenta observar el recorrido de la app tirando de breakpoints y de la ventana del callstack, abriendo la ventana de Autos para observar la transición del estado de los objetos, enviando manualmente mensajes a la ventana debug en ciertos puntos del código fuente, etc.

También puedes utilizar un profiller de rendimiento para tracear el recorrido de los métodos (y el estado de los objetos, entre otras cosas) de una forma más automatizada y más detallada, para ello te recomiendo la aplicación JustTrace de Telerik la cual se distribuye como aplicación de scritorio que además instala una extensión para Visual Studio para mejor integración, otra buena opción sería ANTS Profiler de RedGate que también instala una extensión para VS, pero personálmente no me gusta mucho, aparte de los productos mensionados hay otros profilers gratuitos que puedes buscar en Google.

  • Telerik JustTrace (http://www.telerik.com/products/memory-performance-profiler.aspx)
  • ANTS Profiler (http://www.red-gate.com/products/dotnet-development/ants-performance-profiler/)

Y por supuesto, también te serviría analizar otros proyectos más simples basados en MVC, como por ejemplo este (el primero que vi en Google):
  • Your first program using MVC pattern with C#/WinForms - CodeProject (http://www.codeproject.com/Articles/613682/Your-first-program-using-MVC-pattern-with-Csharp-W)

Saludos


Título: Re: Métodos para saber como funciona un proyecto en c#MVC?
Publicado por: 1304654 en 10 Febrero 2016, 15:45 pm
Exacto no se bien como funciona la app.


Título: Re: Métodos para saber como funciona un proyecto en c#MVC?
Publicado por: 1304654 en 10 Febrero 2016, 16:27 pm
He encontrado el Resharper JetBrains es similar? No logro entender que es un profiler.


Título: Re: Métodos para saber como funciona un proyecto en c#MVC?
Publicado por: Eleкtro en 10 Febrero 2016, 16:55 pm
He encontrado el Resharper JetBrains es similar? No logro entender que es un profiler.
Bueno, ReSharper tiene un profiler integrado (imagino que una implementación de dotTrace), el cual nunca he usado, pero es una herramienta más bien enfocada a la refactorización de código de C#.

No logro entender que es un profiler.
De forma abreviada, un profiler es un sistema de análisis dinámico de aplicaciones.

Se suelen separar en dos clases, profilers de rendimiento, y profilers de memoria, este último tipo de profiler no lo necesitas para el tipo de análisis que quieres hacer, en cambio un profiler de rendimiento te podría ser de utilidad, es un tipo de herramienta muy analítica con la que puedes tracear o rastrear el recorrido de los métodos, en principio solo usarías esa características, pero otras cosas interesantes de un profiler son medir el tiempo de ejecución de cada método, ver información detallada de las llamadas al GC (Garbage Collector) e inspeccionar el uso de memoria (y detectar fugas), medir la complejidad ciclomática del programa o de cada método, etc, cosas relacionadas con el análisis y optimización de una app.

EDITO: Quiero evitar ponerte un enlace directo por que existen unas reglas éticas, pero los programas que te mencioné los puedes encontrar facilmente por Torrent.
O aquí mismo puedes usar el buscador y encontrar packs con (casi)todos los productos de Telerik: https://ebookee.unblocked.li/free_ebooks_list.php?category=19
( https://ebookee.unblocked.li/Telerik-UI-Software-Pack-1-1-2016_4965031.html  (https://ebookee.unblocked.li/Telerik-UI-Software-Pack-1-1-2016_4965031.html))

Saludos


Título: Re: Métodos para saber como funciona un proyecto en c#MVC?
Publicado por: 1304654 en 10 Febrero 2016, 17:21 pm
Estoy utilizando el telerik JustTrace sabes si seria posible que te retorne un árbol de las llamadas o algun generador de uml?


Título: Re: Métodos para saber como funciona un proyecto en c#MVC?
Publicado por: Eleкtro en 10 Febrero 2016, 17:41 pm
Estoy utilizando el telerik JustTrace sabes si seria posible que te retorne un árbol de las llamadas o algun generador de uml?

Activa el profiler de rendimiento con el botón "Performance profiler" en la barra de herramientas de VS, inicia el debug de VS (F5), en la pestañá "JustTrace session" de la IDE haz click en el botón "Get snapshot" y en esa misma pestaña en el lateral izquierdo aparecerá "Call trees" -> "threads" con el árbol de llamadas.

Saludos


Título: Re: Métodos para saber como funciona un proyecto en c#MVC?
Publicado por: WhiteDeMoN en 15 Febrero 2016, 08:25 am
Como la pregunta era bastante abierta por eso se ha ido moviendo de tema en tema y han salido respuestas que creo que no se corresponden.

Si te lo puedes permitir en tiempo, debes afilar el hacha antes de cortar árboles, es decir, coge un libro de asp net y a leer. Verás como esta estructurado el proyecto, como hay que definir los controladores, el modelo y las vistas... Navega por la aplicación, sácate el esquema de la base de datos, lo primero es familiarizarse un poco con ella, pero siempre desde una base de conocimientos.

Depende de la experiencia te puede llevar horas, días, semanas, hasta poder realizar modificaciones.