Web 🤝 Rust 🤝 C# - Criando aplicações desktop com tecnologias web que te fazem sentir como se fossem nativas
Seria muito bom se conseguíssemos criar programas desktop com tecnologias que já estamos familiarizados, ao mesmo tempo que usufrui das capacidades do sistema operacional para tornar sua aplicação “ainda mais nativa”. Este é o tipo de problemas que frameworks como o Electron tentam resolver, e ele é ótimo e funciona muito bem, mas tem alguns casos específicos que ele não cobre.
Já há um tempo, o Tauri tem sido uma ótima alternativa ao Electron, mas ainda tem alguns casos que ele não cobre, então para tornar esta solução completa, estendi as capacidades do Tauri com um processo em C# que complementa a de Rust do dele.
A comunicação acontece por meio de gRPC, o processo C# expõe uma API local para que a camada de Rust possa acessar de forma rápida e o melhor: type safe, já que o no gRPC, os contratos entre cliente e servidor são definido por meio de Protocol Buffers, além de suportar streaming bi-direcional e mais. É um método bem simples e fácil de IPC que não vejo muitas pessoas usando, mesmo tendo vários prós.
Escolhi o C# por conta do .NET e seu ecossistema maduro, com várias bibliotecas que auxiliam no desenvolvimento de aplicações desktop, além de integração com funcionalidades nativas do sistema sem muito esforço, apesar do Rust possuir vários destes pontos positivos, ainda é difícil achar crates para alguns problemas mais específicos, além de muitos não se sentir confortável com a linguagem. Então para resolver isso, optei por criar esta extensão do Tauri, que oferece o melhor dos dois mundos.
O projeto é open-source no GitHub, se você manja um pouco de Rust, web ou C#, não deixe de ver, e se for útil, considere deixar uma ⭐. O projeto também está de portas abertas para contribuidores, principalmente para melhorar a experiência de desenvolvimento, bundle de binários externos e gerenciamento de processos do SO.
Link do repositório:
https://github.com/LuanRoger/tauri-sharp
PS: Contei mais sobre o projeto em um post que fiz no LinkedIn, passa lá!