Mostrando postagens com marcador Programação. Mostrar todas as postagens
Mostrando postagens com marcador Programação. Mostrar todas as postagens

segunda-feira, 25 de maio de 2020

Bem vindo ao Havaí: O novo .NET MAUI

Nos dias 19 a 21 de maio (de terça-feira a quinta-feira passada) ocorreu o Microsoft Build 2020. O Build é um evento anual da Microsoft em que são anunciadas as novidades dos produtos como Azure, Visual Studio, .NET Framework e outros.
Muitas coisas legais foram anunciadas no evento e se você não pode acompanhar, nós fizemos uma live comentando os lançamentos no dia 19, está no nosso canal do YouTube, clique aqui para assistir.
Uma das novidades anunciadas no Build foi o .NET MAUI (Multi-platform App UI), uma unifcação do .NET Core com o Mono/Xamarin, tornando o .NET uma única plataforma de desenvolvimento. O anuncio foi repleto de referencias a ilha Maui, no Havaí (daí o título do post), já a comunidade adotou o deus Maui, personagem da Moana como figura durante anuncio.  
.NET MAUI é a evolução do Xamarin.Forms. Um único framework cross platform. É open source, assim como Xamarin.Forms, você pode conferir o repositório no GitHub clicando aqui. Com .NET MAUI, além de entregar apps para Android e iOS escrevendo apenas uma vez a interface como já está habituado com Xamarin.Forms, também será possível entregar aplicativos desktop para Windows e MacOS.
A versão preview já estará disponível no final deste ano, entretanto a versão estável deve vir apenas com o .NET 6, em novembro de 2021.
introdução ao .NET MAUI

As novidades do .NET MAUI

Fique tranquilo! Se você já trabalha ou trabalhou com Xamarin.Forms, muitas dessas novidades você já estava querendo faz tempo! (falando em causa própria rs) e o conhecimento do framework será aproveitado com o .NET MAUI . 
São muitas as novidades do .NET MAUI e eu recomento fortemente que você de uma olhada na wiki do projeto e assista o video do David Ortinau com a Maddy Leger disponível neste endereço. Aqui vou citar as principais novidades do .NET MAUI comparadas ao Xamarin.Forms.
O .NET MAUI passará a ser distribuído com as versões do framework .NET,  não mais separado como é o caso do Xamarin.Forms. 
Os SDKs que são usados pelos projetos Xamarin.Forms passarão a ser entregues junto com o .NET. Na prática, a biblioteca Xamarin.Forms passará a ser a System.Maui, Xamarin.iOS passará a ser .NET iOS e Xamarin.Android passará a ser .NET Android. Outra mudança ocorrerá no Xamarin.Essentials,  que passará a ser o System.Devices. Você ainda terá acesso aos recursos dos aparelhos Android e iOS com ele. 
Com o .NET MAUI, você será capaz de criar projetos pela ferramenta de linha de comando com dotnet new maui e poderá utilizar o Visual Studio Code (Sim! Finalmente!) para desenvolver e executar seus apps. 
E caso você esteja se perguntando se a partir de agora você poderá trabalhar com o MAUI no Linux (o que não é possível com Xamarin.Forms), ainda não está claro, mas é possível dizer que está no roadmap do produto.

Apenas um projeto

Nos projetos Xamarin.Forms, cada plataforma tem seu próprio projeto específico além do projeto compartilhado. Em um projeto tradicional Xamarin.Forms, você possui um projeto que contém o código compartilhado Xamarin.Forms, um projeto Xamarin.iOS para a plataforma iOS e um projeto Xamarin.Android para a plataforma Android.
Com .NET MAUI você terá apenas um projeto e separação lógica para os recursos específicos de cada plataforma como fontes, imagens e classes de acesso a APIs. 
estrutura do .NET MAUI
Além de ganhar tempo sem precisar trocar de projeto para execução, o .NET MAUI saberá separar os recursos das plataformas quando você fizer o deploy para uma plataforma específica. Recursos como Android App Bundle ainda estarão disponíveis.

Um novo padrão: MVU

Pessoas desenvolvedoras Xamarin.Forms já estavam acostumadas a trabalhar com o padrão de projeto MVVM e utilizar recursos como Bindings e Commands para interagir com as telas desenvolvidas em XAML.
Agora, além do MVVM e XAML, você também poderá trabalhar com MVU (Model View Update) e desenvolver suas views com fluente C# UI (C# for Markup). Com Fabulous, você já consegue hoje trabalhar com MVU utilizando a linguagem F#. O MVU provém uma forma de sentido único (one-way) para lidar com fluxo de dados e gerenciamento de estado com a view. 
Veja abaixo um exemplo de uma tela desenvolvida com fluente C# e MVU:
1
2
3
4
5
6
7
8
9
10
11
readonly State<int> count = 0;
 
[Body]
View body() => new StackLayout
{
    new Label("Welcome to .NET MAUI!"),
    new Button(
        () => $"You clicked {count} times.",
        () => count.Value ++)
    )
};
Um ponto importante a ser citado é que o Hot Reload, que hoje já está disponível para o desenvolvimento de views com XAML do Xamarin.Forms, também estará funcional para o desenvolvimento de views com fluente C# UI (C# for Markup)

Mas e o Xamarin.Forms?

Ainda existem algumas releases programadas para serem lançadas do Xamarin.Forms até o lançamento do .NET MAUI. Hoje o Xamarin.Forms está na versão 4.6, as releases irão até a versão 5.x do Xamarin.Forms, você pode conferir o roadmap de releases no repositório oficial do Xamarin.Forms, clicando aqui.
Umas das novas features programadas são: App Bar, Gradient e TabView.

Outros pontos importantes sobre o .NET MAUI

  • A Microsoft irá disponibilizar uma ferramenta que irá ajudar a realizar a migração dos projetos Xamarin.Forms para .NET MAUI. 
  • Ainda não está claro como serão tratados os arquivos de configuração e específicos a cada plataforma como AndroidManifest.xml e Info.plist. 
  • Há uma discussão em andamento sobre a estrutura de projetos do .NET MAUI no GitHub, participe! 
  • O UWP será substituído pelo WinUI e também estará disponível no .NET MAUI.

quarta-feira, 27 de março de 2019

Não reinvente a roda! Utilize componentes prontos no desenvolvimento da sua aplicação

Por André Lima em 15/02/2017

Resultado de imagem para componentes de desenvolvimento C#
Embarcados

Muitos desenvolvedores não sabem da existência de bibliotecas comerciais e acabam constantemente “reinventando a roda” na hora de desenvolver as suas aplicações. Eu mesmo, lá por volta de 2005, no começo da minha carreira, não conhecia tais bibliotecas e pacotes de componentes. Ou seja, eu desenvolvia as aplicações da pequena empresa onde eu trabalhava utilizando os componentes nativos do Windows Forms.
Foi só depois de participar de uma mesa redonda no TechEd (em 2006, se não me engano) que eu ouvi falar da DevExpress e fui pesquisar exatamente o que ela tinha a oferecer. Começamos a utilizar os componentes de avaliação e a produtividade foi às alturas. Não dá para comparar a quantidade de funcionalidades disponíveis nos controles de bibliotecas comerciais com as funcionalidades dos controles nativos do .NET Framework.
É justamente por causa desse grande impacto que essa simples informação fez no desenvolvimento das nossas aplicações que eu quero compartilhar com você as 4 principais empresas que desenvolvem bibliotecas de componentes para aplicações .NET (entre outras plataformas).
Edit: depois de publicar e divulgar este artigo, várias pessoas me lembraram nos comentários (tanto aqui quanto no Facebook) da SyncFusion! Eu realmente tinha esquecido da SyncFusion, que tem até uma licença gratuita “Community” (como o Visual Studio) para desenvolvedores individuais e empresas que faturem menos que $1 milhão por ano.
Só para deixar claro, não existem somente essas empresas que vendem componentes prontos para o desenvolvimento de aplicações .NET. Essas são, na minha opinião, as 4 empresas mais conhecidas do segmento. Caso você utilize componentes de alguma outra empresa, deixe o seu comentário no final do artigo.
Ah, outro detalhe: esse não é um post patrocinado. Ou seja, não estou ganhando absolutamente nada dessas empresas para fazer essa divulgação. Só estou divulgando porque, como falei anteriormente, essa informação teve um grande impacto nas aplicações que desenvolvemos dali para a frente.

DevExpress

A DevExpress foi a primeira empresa desse ramo que eu tive contato. Na empresa onde eu trabalhava na época eu baixei os componentes de avaliação e fiquei maravilhado com as suas funcionalidades. O destaque vai para o famoso grid, que possui nativamente as funcionalidades de ordenação, remoção e adição de colunas, filtros, mestre/detalhe, drilldown, agrupamentos, entre outras:
E não é só o grid que faz sucesso. O pacote de componentes da DevExpress conta também com controles de layout (possibilitando que o usuário altere o layout das telas e salve para a próxima execução), gráficos, ribbon, skins, entre outros. Dá uma olhada nas plataformas suportadas no momento:
E quanto é que custa tudo isso? Bom, não é barato. No momento da escrita deste artigo (fevereiro de 2017), se você for comprar as plataformas separadamente (por exemplo, só Windows Forms ou só WPF ou só ASP.NET), elas custarão entre $500 e $900, dando o direito de suporte e atualizações por um ano. Depois disso, se você quiser continuar com o suporte e novas atualizações, você tem que renovar a cada ano (por um preço menor).
Existe também a opção de você comprar os componentes de todas as plataformas .NET (Windows Forms, ASP.NET, WPF e UWP) por $1500. Por fim, tem a opção “super master blaster” onde você compra todos os componentes possíveis da DevExpress (inclusive os componentes para HTML5 e JavaScript) pela bagatela de $2200.
Fundada em: 1998
Versão Trial: 30 dias

Telerik

A Telerik é a empresa mais conhecida no meio dos desenvolvedores, uma vez que ela costuma patrocinar diversos eventos e ações da comunidade. Por exemplo, a Telerik foi patrocinadora do podcast .NET Rocks por anos e anos (hoje em dia, ironicamente, é a DevExpress que patrocina). Eu até tenho um bonequinho ninja da Telerik na minha mesa da empresa, que eu ganhei no primeiro TechEd que eu participei (a Telerik normalmente tinha estandes e patrocinava esse tipo de evento).
Um dos componentes mais conhecidos da Telerik é o seu grid, que é tão poderoso quanto o da DevExpress:
Além disso, o pacote de componentes da Telerik também conta com diversos outros controles bem interessantes, como gráficos, editor RichText, controle visualizador de PDF, etc. As plataformas suportadas também vão desde o Windows Forms até o UWP, passando por WPF, ASP.NET e Xamarin:
E o preço? No momento da escrita deste artigo (fevereiro de 2017), plataformas separadas estão saindo entre $400 e $1000, também com updates e suporte por 1 ano. Já a opção com todas as plataformas (tirando Xamarin) sai por $1500 e o pacote completo custa $2200.
Fundada em: 2002
Versão Trial: 30 dias

Infragistics

Confesso a você que logo quando eu comecei a participar de eventos da comunidade (lá por volta de 2004, 2005) eu ouvi bastante o nome “Infragistics“, mas nunca tive curiosidade sequer de procurar o que isso queria dizer. Eu tenho a impressão que as pessoas sempre reclamavam da Infragistics, mas pode ser que eu esteja errado. Com o passar dos anos eu acabei descobrindo que a Infragistics era, na verdade, mais uma empresa que desenvolvia componentes para auxiliar no desenvolvimento de aplicações.
Alguns projetos legados aqui na empresa onde eu trabalho utilizam controles da Infragistics, principalmente o grid:
Assim como as outras empresas apresentadas neste artigo, a Infragitics também suporta uma variedade de plataformas, como Windows Forms, WPF, ASP.NET, Xamarin e UWP:
Componentes de uma plataforma específica custam, no momento da escrita deste artigo (fevereiro de 2017), entre $500 e $900. Já o pacote com os componentes para todas as plataformas sai por $1500.
Fundada em: 1989
Versão Trial: 30 dias

ComponentOne

Eu confesso que tive pouca experiência com os controles da ComponentOne, mas dentre as quatro opções apresentadas neste artigo, ela parece ser a menos robusta. No passado eu cheguei a utilizar de leve os componentes de acesso a dados da ComponentOne, que permitiam o compartilhamento “fácil” de schemas de bancos de dados diferentes. Isso é primordial caso a sua aplicação tenha que rodar apontando para bancos de dados diferentes (como SQL Server e Oracle, por exemplo).
Dando uma olhada nas imagens de exemplo dos controles da ComponentOne, já dá para perceber que ele fica em uma categoria um pouco inferior quando comparamos com os controles da DevExpress, Telerik ou Infragistics. Por exemplo, veja só o grid da ComponentOne:
As plataformas suportadas são basicamente as mesmas das outras empresas:
Eu imaginei que os preços da ComponentOne seriam menores, mas não, eles ficam na casa de $900 a $1100. Existe um combo de componentes .NET desktop + web que sai por $1500 e um outro combo que inclui também os componentes HTML5, JavaScript e desenvolvimento móvel por $2000.
Fundada em: 2000
Versão Trial: 30 dias

SyncFusion

Depois de publicar e divulgar este post, diversas pessoas vieram me lembrar nos comentários sobre os controles da SyncFusion. Eu realmente tinha esquecido deles. E olha que nós usamos os ícones “metro style” da SyncFusion em um dos nossos aplicativos aqui na empresa onde eu trabalho.
A qualidade dos controles da SyncFusion é muito boa, compatível com a qualidade das outras bibliotecas apresentadas anteriormente neste artigo. Veja só um exemplo do grid da SyncFusion:
Aqui vai uma lista das plataformas suportadas atualmente:
O grande diferencial da SyncFusion é que ela possui uma edição gratuita “Community“, igual o Visual Studio. A edição é totalmente gratuita para desenvolvedores individuais e empresas que faturem menos de $1 milhão por ano. Além disso, ela oferece também as edições comerciais, que custam atualmente em média $1000 por plataforma ou $4000 para todas as plataformas.
Fundada em: 2001
Versão Trial: 30 dias
Versão Community: gratuita para desenvolvedores individuais ou empresas com faturamento até $1 milhão por ano

Concluindo

A grande mensagem que eu quero passar com este artigo é: se a sua aplicação tem uma demanda por controles complexos, não reinvente a roda! Existem diversas empresas que desenvolvem controles comerciais que podemos utilizar nas nossas aplicações, como as quatro que eu apresentei neste artigo.
Não importa qual delas você escolha, o que importa é que você não fique perdendo tempo e dinheiro desenvolvendo controles por conta própria. Faça uso desses excelentes controles desenvolvidos por terceiros, que contam com suporte e atualizações constantes.
Vamos fazer uma conta rápida aqui? Imagine que você tenha um desenvolvedor ganhando R$3000 por mês na sua empresa. Aí você pega esse funcionário e coloca ele para desenvolver uma funcionalidade extra no controle de grid do .NET. Se esse desenvolvedor trabalhar duas semanas e meia no desenvolvimento e suporte desse grid, o custo sairia basicamente o mesmo se você tivesse pago os $600, que é o que custa em média o pacote de controles para uma única plataforma das empresas abordadas nesse artigo. Não precisa nem falar o que compensa mais, não é mesmo?
Se você ainda não utiliza esses tipos de controles nos seus projetos ou na sua empresa, faça o download das versões trial, teste e veja você mesmo a quantidade de tempo que a sua empresa conseguiria reduzir no desenvolvimento das suas aplicações. Depois volta aqui e fala pra gente os resultados na caixa de comentários. E se você já utiliza ou utilizou esses ou outros componentes pagos nas suas aplicações, conta pra gente como é que foi a sua experiência também.
Por fim, convido você a inscrever-se na minha newsletter. Ao fazer isso, você receberá um e-mail toda semana sobre o artigo publicado e ficará sabendo também em primeira mão sobre o artigo da próxima semana, além de receber dicas “bônus” que eu só compartilho por e-mail. Inscreva-se utilizando o formulário logo abaixo.