Photino.NET es una innovador framework de código abierto para C# que nos permite crear aplicaciones de escritorio ligeras y multiplataforma utilizando tecnologías web como HTML, CSS y JavaScript.
Está claramente inspirada por la simplicidad de Electron, pero sin el peso adicional que suele acompañar a las aplicaciones basadas en Electron.
Photino.NET busca ofrecer una alternativa rápida para el desarrollo de aplicaciones modernas, al combinar la flexibilidad del desarrollo web con la funcionalidad de aplicaciones de escritorio.
Uno de sus puntos fuertes es su bajo consumo de recursos. Mientras que plataformas como Electron pueden consumir una cantidad significativa de memoria y espacio en disco debido a su dependencia de Chromium y Node.js.
Photino.NET soporta múltiples sistemas operativos, incluyendo Windows, Linux y macOS. Utiliza WebView2 en Windows y WebKitGTK en Linux (lo que reduce significativamente el peso de las aplicaciones).
Características de Photino.NET,
- Multiplataforma: Compatible con Windows, macOS y Linux.
- Ligero: Diseño minimalista para aplicaciones rápidas y eficientes.
- Tecnologías web: Utiliza HTML, CSS y JavaScript para la interfaz de usuario.
- Interoperabilidad: Comunicación fluida entre .NET y JavaScript.
Photino.NET es Open Source y todo su código y documentación están disponibles en el repositorio del proyecto en GitHub - tryphotino/photino.NET.
Instalación de Photino.NET
Para comenzar a usar Photino.NET lo mejor es bajar las templates de proyecto que ofrece el proyecto. Para ello hacemos:
dotnet new -i TryPhotino.VSCode.Project.Templates
Una vez que tengamos las plantillas descargadas, podemos crear una nueva app de Photino.NET haciendo,
dotnet new photinoapp -o MyPhotinoApp
Si entramos en el proyecto, y lanzamos dotnet run
cd MyPhotinoApp
dotnet run
Veremos nuestro template listo para empezar con nuestro proyecto. ¡Así de fácil!
Cómo usar Photino.NET
Una vez que hayas instalado Photino.NET, puedes empezar a crear tu aplicación de escritorio. A continuación.
Ejemplo básico
Este ejemplo muestra un ejemplo básico para ilustrar cómo inicializar y ejecutar una aplicación con Photino.NET.
using PhotinoNET;
class Program
{
[STAThread]
static void Main(string[] args)
{
new PhotinoWindow()
.SetTitle("Mi primera aplicación Photino.NET")
.SetUseOsDefaultLocation(true)
.SetSize(new Size(800, 600))
.Load("wwwroot/index.html")
.RegisterWebMessageReceivedHandler((sender, message) =>
{
Console.WriteLine($"Mensaje recibido del frontend: {message}");
})
.Center()
.Show();
}
}
En este ejemplo, PhotinoWindow
crea una nueva ventana y carga un archivo HTML desde la carpeta wwwroot
. También se registra un manejador de mensajes para recibir mensajes desde el frontend.
Comunicación entre .NET y JavaScript
Photino.NET permite una fácil comunicación entre .NET y JavaScript, lo que es necesario para la creación de aplicaciones interactivas.
Código .NET
new PhotinoWindow()
.SetTitle("Comunicación .NET y JavaScript")
.SetUseOsDefaultLocation(true)
.SetSize(new Size(800, 600))
.Load("wwwroot/index.html")
.RegisterWebMessageReceivedHandler((sender, message) =>
{
Console.WriteLine($"Mensaje recibido del frontend: {message}");
(sender as PhotinoWindow)?.SendWebMessage("Mensaje recibido en .NET");
})
.Center()
.Show();
Código JavaScript
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Photino.NET</title>
</head>
<body>
<h1>Comunicación entre .NET y JavaScript</h1>
<button onclick="sendMessage()">Enviar mensaje a .NET</button>
<script>
function sendMessage() {
window.external.sendMessage("Hola desde JavaScript");
}
window.external.receiveMessage = function (message) {
alert(`Mensaje recibido de .NET: ${message}`);
};
</script>
</body>
</html>
En este ejemplo, un botón en la interfaz HTML envía un mensaje a .NET, y .NET responde con un mensaje que se muestra en una alerta de JavaScript.
Distribución de la aplicación
Una vez que hayas desarrollado tu aplicación con Photino.NET, puedes empaquetarla y distribuirla fácilmente para diferentes plataformas.
Photino.NET soporta la creación de paquetes auto-contenidos, lo que simplifica la distribución de aplicaciones multiplataforma sin depender de la instalación de .NET en los sistemas de destino.