Preguntas sobre aplicación web sobre .NET

Pido ayuda a la comunidad .NET de Hacklab, puesto que un conocido se encuentra con dificultades.

Es una persona mayor con algunos conocimientos informáticos que ha encargado un gran proyecto web para una plataforma online de carácter comercial.

Sin embargo tiene ciertos problemas en la relación con la empresa de desarrollo web y se plantea varias opciones, siendo férreo defensor del software libre.

Entre ellas, me hace las siguientes preguntas:

  • Existen herramientas de ‘reverse engineering’ para .NET? (No encontré
    nada yo, pero quizás no busqué bien).
  • Es posible portar el código de .NET a un entorno de open source, por ejemplo php/symphony or
    php/Cakephp o java. Cuales son los problemas principales? Entiendo
    que .net tiene cosas que son unicos para .NET. Indicar grado de
    dificultad para portar (muy complicado, complicado, simple). [NOTAD:
    aqui ya asumo que nosotros si tenemos el código fuente).
  • He visto que existe un .NET para Linux, se llama MONO. ¿Es comptatible con
    ASP.NET?

Gracias por vuestra ayuda.

PD: Entiendo que en el punto 2 se refiere a portar el código y no desarrollar desde 0 la aplicación, lo cual sería la opción más común.

Vamos a ver, sea .net o no, esto es el problema de siempre. No puedes encargar el proyecto de un ingeniero a un aficionado.

Entiendo que tiene código .net y quiere «pasarlo» a otro lenguaje. ¿No?

Son lenguajes distintos. Quizás a Java sea más fácil pues siguen más o menos «el mismo estilo», pero PHP es interpretado y permite «demasiada libertad». Aún así, si se usan bibliotecas en .net muy específicas puede tener problemas considerables.

Respuesta

La plataforma la ha encargado a una empresa madrileña de cierto nivel, por lo poco que sé. Parece que tiene problemas puesto que se ve demasiado atado a dicha empresa y cree que bajo software libre le sería más fácil a él o a quien designara trabajar sobre su aplicación web y no atarse a una empresa en particular.

Sus problemas de base son otros, según aprecio hablando con él, pero aún así me hizo estas 3 pequeñas preguntas pidiéndome que se las transmitiera a los expertos en .NET con los que contamos.

Le asesoraré sobre por qué mejor no portar la aplicación, pero antes me pedía estas respuestas “rápidas”.

Gracias @MiguelAngelLV

¿te refieres a un decompilador de assemblies binarios .Net o algo como un analizador que genere modelos UML a partir del código fuente? para lo primero, no lo sé, para lo segundo estoy convencido que tiene que existir esa funcionalidad en más de una herramientas de modelado del mercado.

Por otro lado, una aplicación .Net podría correr 100% en Mono sí y sólo sí estuvieran disponibles todas las dependencias en uso:

  • o porque Mono las implementa (Mono no implementa el 100% de los API .Net)
  • o porque dispone de todo el código fuente de las dependencias
  • o porque dispone de todas las dependencias compiladas en CLI y por tanto pueden ser ejecutadas sin modificaciones por el CLR de Mono

aunque si no recuerdo mal puede surgir la necesidad de cambios menores, cosas como adaptar la gestión de rutas en el sistema de archivos compatible con UNIX ( barras / en lugar de \).

1 me gusta

Gracias por tu respuesta @olea. Precisamente intentaba encontrar a alguien que tuviera experiencia real con la compatitibilidad de Mono/.NET.

Sobre la ingeniería inversa, creo que se refiere al primer caso, a tener los binarios y conseguir el código fuente.

1 me gusta

jeje, no es práctica, pero he leído mucho

Bueno, no sé cuál es la referencia legal pero hasta donde recuerdo la ingeniería inversa es ilegal en la UE excepto para resolver temas de interoperabilidad. Si tratas de descompilar una aplicación probablemente estás violando las leyes de propiedad intelectual. En el caso de que hayas pagado por el desarrollo de la aplicación, dependerá de las condiciones del contrato el poder exigir el acceso al código fuente, a los derechos de explotación y, básicamente, de propiedad del mismo.

Sobre el uso de Mono habría que estudiar el caso específico porque probablemente se puedan identificar varias aproximaciones híbridas.

1 me gusta

Bueno, @olea tiene razon, .net y Mono son totalmente compatibles (con pequeñas excepciones) pero por lo general las aplicaciones .net son ejecutables mediante mono en cualquier SO, un exe winforms (por ejemplo) se ejecuta tal cual, las aplicaciones aspx igual solo que que estas ni siquiera estan compiladas, es mas o menos como php, IIS precompilara el script en la primera ejecución y cacheara el IL por lo que no hay que decompilar nada en un poryecto web .net.

De todas formas el tema de decompilar en .net es muy facil solo hay que usar algo como .net refractor o dotpeek. Y es legal. Cualquier tipo de ingenieria inversa es legal (con poquisimas excepciones) en el ambito privado y no solamente se usa con fines malvados, la unica forma de hacer antiviruses es mediante ingenieria inversa de todo tipo de software y analizar su comportamiento. Lo que es muy ilegal es la divulgacion y sobre todo el lucro…

No hay ninguna herramienta magica para convertir aspx a tu framework php favorito, solo te queda recodear, pero ya sabes, seguramente el codigo sea funcional en Linux sin muchos problemas…

2 Me gusta

Genial @pabloko muchas gracias por tu respuesta.