Mentoring:Com o passar dos anos as evoluções tecnológicas levarão não somente à criação, mas também à popularização de diversos sistemas operacionais distintos, cada qual com suas particularidades, tornando, assim, árdua a tarefa de desenvolver sistemas capazes de executar nos mais populares sistemas operacionais.

Atualmente os sistemas operacionais mais populares são: Microsoft Windows, Mac OS X e Linux. Mesmo que o Microsoft Windows seja o mais utilizado de todos os sistemas operacionais citados, muitos programadores necessitam ou desejam desenvolver aplicações em C# (Web ou Windows Form) que sejam verdadeiramente multiplataformas.

A grande verdade é que esse sempre foi o propósito da Microsoft quando lançou a plataforma .NET, entretanto durante muito tempo isso não aconteceu. Contudo, hoje isso é possível, fácil e acessível. Neste artigo conheceremos um pouco mais do projeto que está tornando tudo isso possível, o OmniSharp, que tem entre seus colaboradores diversos profissionais altamente gabaritados da própria Microsoft.

Quando nos referimos a sistemas operacionais, ferramentas/aplicativos computacionais e até mesmo linguagens de programação, devemos, por mais céticos que sejamos ser justos e admitir que os produtos da Microsoft sejam de ótima qualidade e muito fáceis de utilizar. Logo, não poderíamos esperar algo diferente da plataforma .NET, que inclui a linguagem de programação C#.

Trata-se de uma das linguagens de programação mais utilizadas no momento, tomando como referência a data em que este artigo foi escrito, mesmo com as limitações observáveis no .NET Framework. Ainda que desenvolvida para ser livre e executável em qualquer plataforma operacional, não foi isso que pudemos observar nos primeiros anos de seu lançamento: no princípio não era possível desenvolver aplicações baseadas em .NET para nenhuma outra plataforma operacional diferente do Windows ou suas variações, como Windows Phone.

Com o passar dos anos diversas outras plataformas passaram a — de alguma forma — implementar aplicações/soluções utilizando o núcleo (core) do .NET Framework. Com isso, resolveu-se o problema de não ser possível executar aplicações baseadas no .NET em outras plataformas além do Windows.

O OmniSharp apresenta-se como um revolucionário conjunto de servidores e plug-ins que promete tornar possível o desenvolvimento de aplicações multiplataformas utilizando o .NET Framework. A seguir serão apresentadas algumas de suas características, além de como adquiri-lo e instalá-lo no Windows, Linux e Mac OS X. Também será mostrado como adquirir e instalar plug-ins para quatro dos principais editores de código mais utilizados.

Mas o que é o OmniSharp?

Ele pode ser descrito, de uma maneira bem geral, como sendo uma suite que permite o desenvolvimento de aplicações baseadas na plataforma .NET em qualquer sistema operacional. É um projeto relativamente recente, que teve início em 2011 como uma extensão para o editor de textos Vim, desconciliando-se desse em meados de 2014 após o lançamento do DNX (Dot Net eXecutation Environment).

Com o surgimento do DNX passou a ser possível a compilação de códigos MSIL (Microsoft Intermediate Language) para qualquer sistema operacional. Algum tempo depois foi anunciado também o lançamento do Roslyn, uma nova plataforma de compilação de código fonte aberto acessível através de uma API que permite a criação de poderosas ferramentas de análise de códigos, abrangendo todos os estágios da compilação desses.

Dada a maturidade que já havia atingido e o surgimento de uma API com tantos recursos, o projeto OmniSharp — que pode se integrar ao Roslyn — ganhou forças e novos adeptos, sendo até hoje conduzido por uma comunidade totalmente open-source, contando inclusive com a participação ativa de muitos dos engenheiros da Microsoft.

Como funciona?

Sua estrutura de funcionamento é relativamente simples para entendimento: o que se tem é basicamente um servidor baseado na arquitetura web que fornece serviços através de requisições HTTP (todo processo de interpretação do código C# é realizado por ele), e plug-ins, que permitem que o usuário escreva seus códigos em um editor de sua preferência (desde que exista um plug-in compatível).

Geralmente o conjunto de informações que são recebidas pelo servidor está relacionado com o espaço/área de trabalho do cliente e também com o estado das aplicações que geram as requisições. O servidor, por sua vez, possui um mecanismo interno que o capacita a entender essas informações — que podem conter, inclusive, códigos — retornando ao cliente a informação mais apropriada à requisição feita.

Atualmente estão disponíveis duas versões distintas do servidor, são elas:

  • OmniSharp-server: Utiliza as bibliotecas Nrfactory e Nancy, e seu núcleo permite que análises estáticas sejam realizadas em códigos escritos na linguagem C#. Apesar de ainda ser possível adquiri-lo, ele está sendo gradativamente substituído pela mais nova versão do servidor devido ao seu alto grau de instabilidade;
  • OmniSharp-roslyn: Iniciado em 2014, ganhou novos rumos depois da disponibilização do DNX e do Roslyn, passando a utilizar a Web API do Roslyn para realizar suas requisições HTTP e deixando definitivamente de ser uma extensão do Vim. Essa versão do servidor vem ganhando cada vez mais força, principalmente pelo fato de grande parte dos desenvolvedores que se dedicavam a sua antecessora agora estarem concentrando esforços nessa versão. Novas atualizações são diariamente disponibilizadas e atualmente essa versão oferece também suporte para aplicações ASP.NET 5.

Independentemente do servidor que será utilizado pelo cliente, a estrutura básica de funcionamento do OmniSharp é comum para ambos, podendo ser facilmente representada através da Figura 1.

Estrutura básica do OmniSharp
Figura 1. Estrutura básica do OmniSharp - Fonte: https://www.newventuresoftware.com/blog/bring-net-development-into-your-favourite-editor-with-omnisharp
Quer ler esse conteúdo completo? Tenha acesso completo