.NET Cap 3/ Interoperabilidad entre lenguajes de programación .NET y aplicaciones (C#, VB, F#, JavaScript)

Actualmente en la industria del software, el termino interoperabilidad se pronuncia a menudo, tal vez debas preguntarte ¿Qué es la interoperabilidad entre lenguajes de programación? ¿Qué es la interoperabilidad entre aplicaciones de software? ¿Cuál es su importancia en los sistemas de una empresa? En este artículo vamos a explicar las preguntas más frecuentes sobre este concepto.

¿Qué es la interoperabilidad entre lenguajes de programación?

Es la posibilidad de que el código interactúe con otro código escrito en un lenguaje de programación diferente, por ejemplo, podemos crear la interfaz gráfica de una aplicación con Java, y la lógica de negocios con C#, como resultado, ayuda a maximizar la reutilización de código y, por tanto, puede mejorar la eficacia del proceso de programación.

Esta nueva forma de desarrollo de software, conocida también como programación de lenguaje mixto, se trata de que el código generado por un lenguaje pueda funcionar fácilmente con el código generado por otro lenguaje. Este enfoque de desarrollo de programas hace que se faciliten las cosas para crear grandes sistemas distribuidos de software, para la programación orientada a componentes, ya que si un componente puede ser utilizado por la mayor variedad posible de lenguajes de computación y por el mayor número de entornos operativos, se considera, además de eficiente, muy valioso.

¿Qué es la interoperabilidad entre aplicaciones?

Es la capacidad de dos o más sistemas de información, o componentes que permite el intercambio de información entre los distintos sistemas, además, la colaboración entre las distintas aplicaciones que habiliten el desarrollo de nuevos servicios, obteniendo una sincronización entre todas las partes.

Importancia de la interoperabilidad

Contar con sistemas interoperables es importante para cualquier empresa, ya que facilita la gestión conjunta y ordenada de toda la información. Entre sus ventajas se puede destacar:

  • La adaptabilidad: Los distintos sistemas que absorben la información, se conectan y se encargan de distribuir dicha información de forma automática y flexible.
  • Cohesión de datos garantizada: Tal y como mencionábamos anteriormente, con la interoperabilidad, la información es gestionada de forma eficaz y controlada por todas las partes.
  • Aumento de la productividad: De la anterior ventaja se puede desprender la idea de que gracias a esta herramienta, se puede asociar toda la información disponible a la cadena de valor. De tal forma, se puede trabajar y operar de forma concordante, a lo largo de todo el proceso productivo, asegurando que la información está disponible y es accesible para todas las partes, sistemas y personas.

Plataforma .NET un Lenguaje Unificado

Los lenguajes de programación de .NET son interoperables entre sí, es decir, C#, J#, F# y Visual Basic pueden coexistir en una sola aplicación o pueden interactuar con otras aplicaciones escrito en un lenguaje diferente, cabe mencionar que F# ofrece interoperabilidad limpia con C#. Sin embargo, debido a la publicación de la norma para la infraestructura común de lenguajes (CLI), el desarrollo de lenguajes se facilita, por lo que la plataforma .NET soporta ya más de 20 lenguajes de programación, como, Java, C++, Delphi, Perl, Python, Fortran, Prolog, entre otras,  por lo que es posible desarrollar cualquiera de los tipos de aplicaciones soportados en la plataforma con cualquiera de ellos.

Por lo tanto, la plataforma .NET provee un altísimo grado de interoperabilidad con otras aplicaciones escritas en distintos lenguajes, lo que permite aumentar la productividad y escalabilidad de un sistema de información.

Ejemplo: Interoperabilidad de Lenguajes

C#, F# y Visual Basic (VB) en un solo Proyecto de Software

Veamos un sencillo ejercicio aplicando interoperabilidad entre VB, C# y F#, crearemos una pequeña aplicación que permita realizar las 4 operaciones básicas (Sumar, Restar, Multiplicar y Dividir), trabajando en 2-3 Capas: Capa de Presentación y Capa de Dominio. La capa de presentación será desarrollada en Visual Basic, La Capa de Dominio será desarrollada en C# y también en F#; Empecemos con la práctica:

Paso 1: Crea un proyecto vacío

  • Crea una Solución de Visual Studio (Archivo-> Nuevo-> Proyecto-> Plantillas-> Otros tipos de proyectos -> Soluciones de Visual Studio-> Solución en Blanco) y asígnele el nombre que desee. Aquí lo hemos nombrado como Calculadora.

Paso 2: Crea la Capa de Presentación en Visual Basic

  • Haga clic con el botón derecho en Solución ‘Calculadora’-> Agregar-> Nuevo Proyecto-> Instalado-> Visual Basic-> Windows-> Aplicación de Windows Forms-> cámbiele el nombre, a Capa Presentación-> Finalmente Aceptar.
  • Una vez creada la solución, diseñe el formulario de esta manera:
  • Descripción de los controles del formulario.
    • Label Numero 1: -> TextBox -> txtNum1
    • Label Numero 2: -> TextBox -> txtNum2
    • Label Operación: -> ComboBox -> cmbOperacion
    • Botón Calcular -> Button-> btnCalcular
    • Label Resultado C# ->Label-> lblResultadoCSharp
    • Label Resultado F# ->Label-> lblResultadoFSharp
  • Una vez que el diseño esta hecho, agregamos el texto de las 4 operaciones a la colección del ComboBox Operación (cmbOperacion-> Propiedades-> Items)

Paso 3: Crea la Capa de Dominio en C#

  • Haga clic con el botón derecho en Solución ‘Calculadora’-> Agregar-> Nuevo Proyecto-> Instalado-> Visual C#-> Windows-> Biblioteca de Clases-> cámbiele el nombre a CapaDominioCSharp-> Finalmente Aceptar.
  • Agregue una Nueva Clase Operaciones C Sharp (Clic derecho en proyecto CapaDominioCSharp-> Agregar-> Nuevo Elemento->Clase) cámbiele el nombre a ClaseOperacion_CSharp.cs
  • Cambie la clase a Publica
  • Escriba el siguiente método para calcular las operaciones.
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CapaDominioCSharp
{
    public class ClaseOperacion_CSharp
    {
        public double Calcular(double num1, double num2, string operacion)
        {
            double resultado = 0;
            switch (operacion)
            {
                case "Multiplicar":
                    resultado = num1 * num2;
                    break;
                case "Dividir":
                    resultado = num1 / num2;
                    break;
                case "Sumar":
                    resultado = num1 + num2;
                    break;
                case "Restar":
                    resultado = num1 - num2;
                    break;
            }
            return resultado;
        }
    }
}

Paso 4: Crea la Capa de Dominio 2 en F#

  • Haga clic con el botón derecho en Solución ‘Calculadora’-> Agregar-> Nuevo Proyecto-> Instalado-> Visual F#-> Windows-> Biblioteca -> cámbiele el nombre a CapaDominioFSharp-> Finalmente Aceptar.
  • Agregue un nuevo archivo de código fuente F Sharp (Clic derecho en proyecto CapaDominioFSharp-> Agregar-> Nuevo Elemento-> Code-> Archivo de origen) cámbiele el nombre a Operacion_FSharp.fs
  • Escriba la siguiente función para calcular las operaciones.
module Operacion_FSharp
open System
let Calcular(num1:double)(num2:double)(operacion:string)=       
    if(operacion="Sumar")then 
        num1+num2 
    else if (operacion="Restar")then
        num1-num2
    else if (operacion="Multiplicar")then
        num1*num2
    else 
        num1/num2

Paso 5: Agregue las referencias entre Presentación y Dominio C# / Dominio F#

  • Desde Capa de Presentación, agregue referencia a la Capa de Dominio de C# y F# (Clic derecho sobre CapaPresentacion-> Agregar-> Referencia->Proyectos-> Solución) Marque ambas casillas, finalmente Aceptar.
  • Compile Capa de Dominio de F# (Clic Derecho en proyecto CapaDominioFSharp-> Compilar o Generar)

Paso 6: Desde el formulario invoque el método y función de Capa Dominio C# y F#

  • Cree el evento clic del botón calcular (Doble Clic en el botón Calcular).
  • Escriba las siguientes líneas de código.
Public Class Form1
    Private Sub btnCalcular_Click(sender As Object, e As EventArgs) Handles btnCalcular.Click
        'Variables
        Dim x = txtNum1.Text
        Dim y = txtNum2.Text

        'Calcular operacion desde C#
        Dim objetoCSharp As New CapaDominioCSharp.ClaseOperacion_CSharp() 'Instancia
        Dim reCSharp = objetoCSharp.Calcular(x, y, cmbOperacion.Text)
        lblResultadoCSharp.Text = "El Resultado es: " &
            reCSharp.ToString() & vbNewLine &
            "Respuesta desde C#."

        'Calcular operacion desde F#
        Dim reFSharp = Operacion_FSharp.Calcular(x, y, cmbOperacion.Text)
        lblResultadoFSharp.Text = "El Resultado es: " &
            reFSharp.ToString() & vbNewLine &
            "Respuesta desde F#."
    End Sub
End Class

Paso 7: Probar la aplicación

Video Tutorial

Descargas