Desenvolvimento - Visual Basic .NET

.Net - Smart Client – Introdução

A arquitetura Smart Client consolida as principais vantagens das arquiteturas Thin Client e Smart Client tornando-se muito efetiva e funcional para aplicações corporativas e comerciais.

por Alexandre Tarifa



Introdução

Nos últimos anos, nos projetos de software comerciais e corporativos, uma pergunta que ocorre no início do projeto acaba tendo uma resposta simples e “óbvia”:

Esta aplicação será Windows ou Web?

A resposta em coro é dada pela equipe de desenvolvimento ou afins:

Web... é claro!

Esta resposta está certa ou errada? Depende! Aliás, depende muito e de inúmeros pontos que devem ser discutido antes desta resposta.

Acompanho diversos projetos em empresas de diversos ramos e portes e vejo em pelo menos 70% dos casos um erro de arquitetura. Às vezes erros grotescos que geram a necessidade de simplesmente refazer o sistema. Isso porque a resposta “óbvia” foi seguida.

Nada contra a Web, muito pelo contrário. A idéia principal deste artigo é apresentar os pontos de cada tecnologia e dependendo de cada caso, teremos uma resposta coerente e significativa.

Outro cenário baseado em fatos reais.

O Consultor chega a um cliente para uma reunião onde o cliente vai pedir um sistema:

- Olá amigo consultor. Eu gostaria de um sistema Web de controle de estoque!

Veja: o cliente já definiu a arquitetura do projeto!

Tipos de aplicações

Arquitetura Thin Client

São baseadas em navegador, ou seja, executadas dentro de um navegador, seguindo suas características e limitações.

Principais vantagens:

  • Eficiência na exposição – Seu sistema pode funcionar na China! Em “qualquer” browser, em qualquer sistema operacional;
  • Gerenciamento centralizado – O sistema fica em um ponto único (servidor) e o controle de quem controla a aplicação é muito mais simples. O gerenciamento engloba: configurações, versões, controle de acesso, etc;
  • Solução interna e externa – Seu sistema funciona tanto na intranet da sua empresa como na internet para todos.

Principais desvantagens:

  • 100% conectado – O sistema fica em um servidor e toda a sua execução ocorre no servidor. Com isso para que o usuário manipule o sistema a cada ação tomada no sistema, deve-se ocorrer uma conexão com o servidor da aplicação;
  • Limitações do navegador – Controles pobres, recursos simples e para funcionalidades relativamente simples, deve ter um conhecimento absurdo de DHTML e Java Script;
  • Produtividade do usuário baixa – O usuário (cliente) que é a pessoa que deve ficar feliz com o sistema, acaba perdendo muito na usabilidade e produtividade no seu dia-a-dia;
  • Produtividade do desenvolvedor baixa – Mesmo com novas tecnologias AJAX, desenvolver recursos mais avançados para melhorar a usabilidade acabam sendo de extrema dificuldade e trabalhoso e ainda sim não chega a ser uma tecnologia que oferece uma usabilidade 100% efetiva, porque nunca podemos esquecer: estamos dentro de um navegador.

Arquitetura Rich Client

Principais vantagens:

  • Baseada em Windows – Todo o poder do sistema operacional Windows;
  • Trabalha conectado e desconectado – Podem-se criar aplicações com funcionalidades Off-line e a aplicação não depende de nenhum serviço servidor para executar a não ser que tenha dependência de Banco de Dados ou algum outro recurso;
  • Solicitação ao servidor somente quando necessário – A aplicação só faz uma solicitação ao servidor caso algum recurso externo da aplicação é solicitado;
  • Produtividade do usuário – O usuário ganha em produtividade já que ele está utilizando uma aplicação que utiliza todos os recursos do sistema operacional;
  • Produtividade do desenvolvedor – O desenvolvedor praticamente só gasta o seu tempo no negócio da aplicação e praticamente nada com funcionalidades de interface, já que a tecnologia oferece os recursos nativamente.

Principais desvantagens:

  • DIFICULDADE NA DISTRIBUIÇÃO – A distribuição é muito complicada já que cada máquina tem suas particularidades que pode afetar no funcionamento do sistema ou até mesmo na não instalação do sistema.

Resumindo

Comparando as duas arquiteturas apresentadas, temos então Thin Client como a arquitetura ideal para termos uma distribuição e gerenciamento centralizado, já Rich Client acaba sendo uma arquitetura ideal para produtividade tanto do usuário como do desenvolvedor.

Arquitetura Smart Client

Combina as principais vantagens das duas arquiteturas já apresentadas.

  • Gerenciamento e distribuição centralizada e inteligente (click once);
  • Aplicações executadas localmente, trazendo todos os recursos do sistema operacional;
  • Produtividade para o desenvolvedor e usuário;
  • Trabalha conectado e desconectado;
  • Flexibilidade de dispositivos;
  • Etc etc etc etc etc.

Resumindo

A arquitetura Smart Client consolida as principais vantagens das arquiteturas Thin Client e Smart Client tornando-se muito efetiva e funcional para aplicações corporativas e comerciais.

O funcionamento é simples:

  • Gerenciamento e distribuição são feitos através da Web (IIS);
  • Execução da aplicação é local (Computador do usuário);
  • Comunicação da aplicação com regras de negócio com Web Services (Veja outros tipos a seguir).

Opiniões

Algumas opiniões de sites internacionais:

Tipos de clientes

  • Windows Forms;
  • Aplicações Windows Mobile;
  • Visual Studio Tools for Office.

Obs.: Lembrando que os clientes não devem conter absolutamente nenhuma regra de negócio do sistema... Somente interface de apresentação, já que todo o negócio deve estar em um serviço servidor.

Escolhendo entre Smart Clients e Thin Clients

· Fatores determinantes

Analisar bem antes do início do projeto.

Uma arquitetura Thin Client é, freqüentemente, a mais apropriada se você precisa tornar uma aplicação externa disponível para um grupo externo diverso, enquanto uma arquitetura Smart Client é geralmente a mais apropriada para uma aplicação interna que necessita integrar-se com ou coordenar outras aplicações ou hardware do cliente, ou que seja requerido que trabalhe offline ou forneça funcionalidade de alto desempenho específico por meio de uma interface de usuário com boa resposta.

Tabela comparativa:

Descrição

Smart Client

Thin Client

Fornece uma rica interface de usuário

Sim e sofre uma evolução no Windows Vista (WPF).

Sim, mas não tão rica (ATLAS)

Pode interagir com outras aplicações/hardware locais

Sim

Em poucos casos

Qualquer plataforma

Não, somente Windows (Desvantagem? J).

Sim, Browser atualizado.

Desafios da Arquitetura Smart Client

· Separar completamente: camada de apresentação da camada de negócios

· Colocar dados em cache no cliente, fará com que o desempenho e a aproveitamento de uma aplicação melhorem significativamente, mas você deve assegurar-se de que os dados sejam atualizados adequadamente e que dados desatualizados não sejam utilizados.

· Distribuição simples

· O advento de arquiteturas orientadas a serviços significa que você pode projetar Smart Clients para utilizar serviços. Todos esses serviços são fornecidos em padrões de mercado, o que melhora a interoperabilidade, suporte à ferramenta de programação e a facilidade com que novos atributos podem ser desenvolvidos em uma aplicação Smart Client.

Manipulação de Dados

  • Os dados da aplicação podem ser disponibilizados ao cliente por meio de uma aplicação de servidor, ou a aplicação pode utilizar seus próprios dados locais.
  • Cache de dados.
  • Simultaneidade de dados.
  • Utilização dos DataSets ADO.NET para gerenciar dados
  • Vinculação de dados no Windows Forms.

Conexões e Serviços

  • Microsoft® .NET Enterprise Services;
  • Microsoft .NET remoting;
  • Microsoft Windows® Message Queuing (também conhecido como MSMQ);
  • Web Services;
  • WCF – Windows Comunication Foundation.

Distribuição, gerenciamento e atualização – Click Once

  • Mecanismo de distribuição automática, onde o cliente é distribuído através da Web;
  • Cliente acessa através de uma URL;
  • Auto Update através de configuração ou API;
  • Segurança integrada;
  • Isolado por usuário do Windows;
  • Parte do .NET Framework 2.0.

Conclusão: A arquitetura Smart Client trás benefícios claros que facilitam muito o desenvolvimento e oferece um resultado excelente. Nos próximos artigos será apresentado na prática como utilizar a arquitetura.

OBS: O portal de vídeos .NET lançou em janeiro / 2007 dois vídeos sobre a arquitetura Smart Client, veja em:
www.linhadecodigo.com.br/videosLC

Alexandre Tarifa

Alexandre Tarifa - Ministra palestras e treinamentos, MVP (Most Valuable Professional), MCAD (Microsoft Certified Application Developer) e MCT (Microsoft Certified Trainer). Bacharel pela UMESP e pós-graduando pela Universidade Federal de São Carlos em Ciência da Computação. Analista de Sistemas e Líder do grupo de usuários Codificando.net São Paulo (sp.codificando.net). Escreve artigos para a revista MSDN Magazine e para os sites Linha de Código, MSDN Brasil e Enterpriseguys.
Visite o blog do autor: http://weblogs.pontonetpt.com/alexandretarifa/.