Creando una aplicación en varios lenguajesVer como crear una aplicación con código en C#, J# y VB
Fecha: 30/Jun/2005 (30 de Junio del 2005)
|
Introducción.
Hola a todos! En este artículo vamos a crear un ejemplo de una pequeña aplicación web que utiliza elementos desarrollados en tres lenguajes: C#, J# y VB.net
A modo de introducción, les cuento que el Framework está compuesto por tres elementos fundamentales:
- CLR (Common Languaje Runtime)
- Lenguajes
- Clases de .Net
Cuando uno crea una aplicación en .Net y la compila, el código generado no es un código directamente ejecutable, sino que es un código MSIL (Microsoft Intermediate Languaje). Para correr este código en una máquina, hace falta que esté instalado el CLR que es quien se encargará de traducirlo a lenguaje de máquina para que el mismo se ejecute.
Esto implica que, sin importar en que lenguaje programes, el código intermedio obtenido de compilar una aplicación hecha sobre el Framework deberá ser compatible con el código intermedio obtenido de cualquier otra aplicación realizada sobre el mismo.
Pues bien, se me ocurrió probar esto con un ejemplo y adivina qué: Funciona!
Creación del ejemplo
Para empezar, creé una solución en blanco, a la cual llamé: 'lenguajes'
Dentro de esa solución cree dos proyectos de librerías de clases. Uno en C# (Business) y otro en VB (BusinessVB). Además cree un proyecto de aplicación web en J# (Lenguajes). Bien podría haber sido una aplicación Windows, pero como a mi me gusta Web, lo hice así :-)
Dentro del proyecto en C# cree una clase Persona, cuyo código se encuentra a continuación:
Persona.cs
using System;
namespace Business
{ public class Persona { public string nombre; public string apellido;
public Persona(string nombre, string apellido) { this.nombre = nombre; this.apellido = apellido; } } }Para el proyecto en VB se me ocurrió crear una clase Empleado que herede de la clase Persona creada en C# (aquí es donde ya se empieza a ver la compatibilidad entre lenguajes). A continuación sigue código en VB.net
Empleado.vb
Imports System Imports Business
Public Class Empleado Inherits Business.Persona
Dim miSueldo As Integer
Public Sub New(ByVal nombre As String, ByVal apellido As String, ByVal miSueldo As Integer) MyBase.New(nombre, apellido) Me.miSueldo = miSueldo End Sub
Public Function Sueldo() As Integer Return Me.miSueldo End Function
End ClassPara poder ver que esto funcionaba bien cree una página .aspx, con codebehind en J# en el cual instancio un objeto a partir de la clase Empleado y lo muestro. La apariencia de la página es muy rudimentaria, pero a los efectos de demostrar como funciona esto sirve. Su código no lo transcribí porque creí que no hacía falta, pero pueden ver el código bajando el ejemplo al pie de esta página A continuación sí transcribo el código del codebehind:
muestraEmpleado.aspx.jsl
package Lenguajes;
import System.*; import System.ComponentModel; import System.Data.*; import System.Drawing.*; import System.Web.*; import System.Web.SessionState.*; import System.Web.UI.*; import System.Web.UI.WebControls; import System.Web.UI.HtmlControls; import BusinessVB.*; public class muestraEmpleado extends System.Web.UI.Page { protected System.Web.UI.WebControls.Label lblNombre; protected System.Web.UI.WebControls.Label lblApellido; protected System.Web.UI.WebControls.Label lblSueldo; private Empleado empleado;
private void Page_Load(Object sender, System.EventArgs e) { empleado = new Empleado("Andrés","Faya",1000); this.lblNombre.set_Text(empleado.nombre); this.lblApellido.set_Text(empleado.apellido); this.lblSueldo.set_Text(Convert.ToString(empleado.Sueldo())); }
protected void OnInit(System.EventArgs e) { InitializeComponent(); super.OnInit(e); }
private void InitializeComponent() { this.add_Load(new System.EventHandler(this.Page_Load) ); } }
Conclusión
El Framework es una herramienta muy potente y bien pensada a la cual se le pueden agregar lenguajes (actualmente sé de la existencia de más de 30) sin perder la garantía de compatibilidad con los desarrollos ya existentes. Esto posibilita un fácil aprendizaje para todo tipo de programadores sin que los mismos tengan de dejar el lenguaje en el cual se sienten cómodos. Sólo tendrán que tener conocimientos sobre OOP y aprender un poco sobre las clases del Framework y nada más. Por ser el Framework un entorno OOP, ningún programador OOP tendrá problemas en interactuar o extender clases como mejor le parezca según su lenguaje.
Además, como vimos con el ejemplo, tendrán la posibilidad de extender aplicaciones ya existentes hechas en lenguajes que no conocen, con la total certeza de que van a funcionar perfectamente.
Personalmente, creo que esta es una gran posibilidad que brinda el Framework, actualmente poco aprovechada en la práctica, pero con un gran futuro.
Fichero con el código de ejemplo: asfaya_multiplesLenguajes.zip - Tamaño 13.3KB