Framework .NET 3.0

Pesquisa realizada por Ailton Filho, Ismael Filho e Janildo Santos.

Framework.Net 3.0 e diferenças entre a versão 3.5 beta 2

Introdução

O .Net Framework 3.0 ou WinFX é baseado na versão 2.0 porém, com algumas novidades que tornam o desenvolvimento na Plataforma.Net mais rápido , com sistemas muito mais poderosos. Dentro das novidades trazidas pela versão 3.0 temos o WPF(Windows Presentation Foundation), WCF(Windows Communication Foundation) , WF(Windows Workflow Foundation) e o WC(Windows CardSpace), tecnologias com focos diferentes apoiando-se totalmente na versão 2.0 para formar então a nova versão.

Framework.Net%203.0

Figura 1. .Net Framework 3.0.

Estudando estrutura do framework e da plataforma .Net podemos fazer uma relação com a matéria compiladores:

A plataforma .NET é executada sobre uma CLR (Common Language Runtime).
Esta CLR é capaz de executar diferentes linguagens de programação, pelo simples fato que o código fonte que o programador digita é compilado gerando um código intermediário em uma linguagem chamada MSIL (Microsoft Intermediate Language).
Temos então um texto fonte de alto nível como entrada para um compilador que gera como saída uma linguagem intermediária também em alto nível. Este novo código fonte gera um arquivo chamado "Assembly" e a depender do tipo de projeto ele pode gerar as seguintes extensões de arquivos: .EXE , .DLL , .ASPX – página web , .ASMX – que é o Web Service . No momento da execução do programa o código é novamente compilado, desta vez pelo JIT (Just In Time Compiler) ou seja, os programas são compilados 2 vezes. Além disso, com o framework é possível também pré-compilar o código, fazer engenharia reversa devido a ao fato da arquitetura do .Net utilizar a MSIL.

framework_wiki

(Imagem Adaptada http://en.wikipedia.org/wiki/Image:DotNet3.0.svg)

Windows Presentation Foundation/Framework (WPF)

O WPF(chamado antes de Avalon) é umas das partes do Framework.Net 3.0, seu foco é proporcionar o desenvolvimento de apresentações gráficas de qualidade mantendo a eficiência e produtividade do sistema a ser desenvolvido.
Na verdade, “o WPF veio para substituir o Windows Forms na criação de aplicativos Desktop” (Giovanni Bassi – Revista .Net Magazine).
Tratando-se de desenvolvimento visual, junto com o WPF temos o XAML(Extensible Application Markup Language) que é uma derivação do conhecido XML que proporciona a criação de quase todo tipo de interface gráfica. Junto com o XAML temos o Silverlight (antigo WPF/E) que é uma tecnologia WPF baseada no XAML, multi-browser e multiplataforma que, proporciona funcionalidades tais como vídeo, vetorização gráfica e animação para múltiplos sistemas operacionais incluindo o Windows Vista, Windows XP e o Apple Mac OS X. Hoje o Silverlight é disponibilizado como um “add-on ou plugin” para o Mozilla Firefox, Internet Explorer 6 e superiores e o Apple Safari.

Exemplos de Silverlight na internet:

http://www.winajuda.com/2007/08/22/noticias/tafiti-pesquisa-via-silverlight-e-live-search/
http://www.imagos.fl.net.au/silverlight/map/index.html

Vantagens e características do WPF:

Interface flexível, sendo que pode ser independente do código;
Com o WPF podemos ter duas apresentações completamente diferentes compartilhando o mesmo comportamento;
Além da funções já existentes na versão 2.0 do framework com o WPF temos recursos como animações, gráficos vetoriais, reconhecimento de voz, layouts avançados, gráficos 2D e 3D;

Tudo isso é possível devido a padronização do tratamento de elementos gráficos através do Direct3D, o que permite ao Windows desonerar o custo computacional proveniente desse tratamento por parte da CPU direcionando essas atividades para a GPU(Graphics Processing Unit) o que vai representar otimização de recursos.
Entretanto, o WPF possui uma integração mais “forte” com outras funcionalidades como por exemplo, a possibilidade de criar interface com o usuário, documentos, e mídias em geral. Isso torna possível ter interfaces de usuário, documentos e mídias em 3 dimensões.

Interface e código são separados.
Uso dos recursos do sistema operacional para otimização de performance.
Os controles podem ser personalizados;
È independente de plataforma; o mesmo código-fonte funciona tanto na web quanto para desktop .

Uma outra vantagem do WPF é a interoperabilidade com o Win32, Windows Forms e ActiveX sendo possível utilizar qualquer controle Win32, Windows Forms ou ActiveX com o WPF, ou usar controles WPF em aplicativos Win32 e Windows Forms, fazendo com que o investimento feito em outros controles não seja perdido.

Aqui vemos uma figura que demonstra a arquitetura do Windows Presentation Foundation.

WPF

(Imagem adaptada: site Imasters http://www.imasters.com.br/artigo/4681/dotnet/visao_geral_do_net_framework_30/ )

Como vemos o WPF oferece aos desenvolvedores uma gama de possiblidades para melhorar o visual das aplicações sem comprometer a eficiência e produtividade mas facilitando a criação de aplicações utilizando conceitos e tecnologias unidas em um só framework.

Windows Communication Foundation/Framework (WCF)

Tecnologia que possui foco em aplicações distribuídas na resolução de problemas de comunicação inter-processos, WCF unifica tecnologias como Web Services, .NET Remoting, Distributed Transactions e Message Queue num único modelo de programação orientado a Serviços para o modelo de computação distribuída. A intenção é proporcionar o uso da metodologia RAD (Rapid application development) para desenvolvimento de “produtos” para Webservices, usando uma API unificada para comunicação inter-processos num computador local, rede ou através da própria Internet.

O WCF roda num “sandbox” e provê o mesmo modelo seguro que todas as aplicações .NET proporcionam.
WCF é desenvolvido alinhado com os princípios da arquitetura orientada a serviços (SOA), para dar suporte à aplicações distribuídas. WCF usa o protocolo SOA para envio de mensagens que é o meio de comunicação usado.
Clientes podem usar múltiplos serviços e serviços podem ser consumidos por múltiplos clientes.
Serviços tipicamente possuem uma interface WSDL que qualquer cliente WCF pode usar para tirar proveito do serviço, independente da plataforma em que o serviço está sendo hospedado. WCF implementa muitos padrões de web services WS* avançados tais como WS-Addressing, WS-ReliableMessaging e WS-Security e pode também utilizar vários tipos de protocolo para transporte como: IPC, TCP, HTTP, P2P e Message Queue. O WCF é uma instância do SOA, pois implementa estes princípios.

A figura explica o modelo de funcionamento do WCF:

WCF

(Imagem adaptada: site Imasters http://www.imasters.com.br/artigo/4681/dotnet/visao_geral_do_net_framework_30/ )

  • CONTRACT – É o contrato do serviço, é ele que especifica os métodos que estarão disponíveis.
  • BINDING – É a forma de como o serviço será acessado.
  • ADDRESS – De onde o serviço será acessado.

O WFC Service é composto de 3 partes – Uma classe de serviço (Service Class) implementada para promover esse serviço, um servidor que hospeda o serviço e um ou mais “endpoints “ para fazer conexão com os clientes. Toda comunicação no WFC é feita através de endpoints.
Os endpoints especificam um tipo de contrato e definem quais métodos da classe serão acessados além de definir uma ligação que especifica como um cliente se comunicará com o serviço e o endereço onde o endpoint é hospedado.
Uma classe de serviços WCF implementa um serviço particular como um conjunto de métodos. Além disso, ele implementa um “Contrato de Serviço” que define as operações que o serviço pode executar.
Ele pode também opcionalmente definir “Contrato de Dados” que irão descrever que tipo de dado vai ser tratado sob determinadas operações.
Os “contratos” são definidos usando atributos do .NET, qualquer classe que for publicada como serviço WCF deve ser definida com o atributo “ServiceContract”.
Todos os métodos que um cliente pode invocar usando SOAP devem ser identificados com o atributo “OperationContract”.
O atributo automaticamente gera descritores WSDL para os métodos públicos, os quais podem ser acessados pelos clientes, ou disponibilizados para eles.
Um serviço pode também empregar múltiplas Conexões. Isso pode ser feito definindo múltiplas interfaces .NET, cada uma dessas definidas como um Conexão de Serviço. A classe de serviço poderá então implementar todas as interfaces.
Os atributos “ServiceContract” e ”OperationContract” também permitem referenciar conexões de legado, provendo dessa forma uma opção de suportar versionamento de interfaces.
As conexões de serviço são classificadas como implícita ou explicita a depender do retorno que é recebido numa troca de mensagens. Uma conexão de dados é definida usando o atributo “DataContract” numa classe ou estrutura e os membros dessa estrutura de dados “DataMember” precisam ser identificados como atributo pois, apenas esses serão transferidos entre o serviço e o cliente.
O WCF permite serviços concorrentes, controla comportamento dos serviços através de atributos que são o “ServiceBehavior” e “OperationBehavior” e gerencia também instâncias de serviço além de permitir que o cliente se conecte com o serviço WCF através de RPC.

O WCF reune em um só framework as mais usadas tecnlogias que facilitam na resolução de problemas ligados a desenvolvimento de aplicações distribuidas, principalmente quando se trata de comunicação entre plataformas ou sistemas operacionais diferentes, o que vai trazer um ganho muito grande em produtividade não só para profissionais de TI mas também para todo tipo de empresa e cliente que necessite se comunicar através de processos, serviços ou mensagens.

Windows Workflow Foundation/Framework (WF)

Para voce pesquisador ou desenvolvedor na tecnologia .NET Framework 3.0 deve saber que esta nova versão esta repleta de novidades, windows Workflow Foundation é um dos pilares do .NET 3.0 tambem conhecido como WF.

Quando se fala em Workflow provavelmente você associa a sistemas complexo de controle de documentos da sua empresa, porém diariamente construímos rotina do tipo:
Quando o cliente faz pedido este passa pela análise de credito, e se o cliente tiver credito é verificado o estoque, se tiver os dois o pedido é enviado para o faturamento este tipo de rotina não e nada mais que workflow seja, rotina que discreve o processo do negocio.

Observe que não utilizamos nenhum padrão para desenvolver estas rotinas e quando o processo mudar teremos que refazer todo fluxo seja recodificar as mesmas rotinas na ordem definidas na nova analise o Windows Workflow trata justamente disto . O WF é composto de modelo de objetos, um runtime de workflow e ferramentas gráficas que ajuda o desenvolvedor a desenhar o seu projeto através do Visual Studio.

O Windows Workflow Foundation é na verdade uma ampla plataforma de desenvolvimento de workflows. Ela provê um modelo de programação para o desenvolvimento e execução de estados e fluxos dentro de nossos aplicativos.

A idéia de se criar este framework focando nessa necessidade, foi que a Microsoft quis fornecer um modelo para que os desenvolvedores podessem utilizar os benefícios da tecnologia para projetar, desenhar e executar seus códigos. Os aplicativos desenvolvidos pelos desenvolvedores podem se comunicar com a engine do framework de workflow e executar o applicativos baseado no workflow.

O WF é altamente extensível, com isso os desenvolvedores podem criar seus próprios workflows.
O workflow é um conjunto de elementos chamados de atividades. Então um worflow não é mais nada do que um conjunto de atividades ordenadas e com uma certa lógica.

host_process_wc

(Imagem adaptada: site Imasters http://www.imasters.com.br/artigo/4681/dotnet/visao_geral_do_net_framework_30/ )

Na figura sequinte, temos uma exemplo prático de workflow. A figura mostra um plug-in que pode ser instalado no Visual Studio.NET 2005 para construir workflows.

WF

(Imagem adaptada: site Imasters http://www.imasters.com.br/artigo/4681/dotnet/visao_geral_do_net_framework_30/ )

Na figura temos vários blocos de códigos, blocos condicionais e blocos interativos.
Este é um exemplo do poder que o desenvolvedor tem para construir seus workflows.

Windows Cardspace (WCS)

O Windows CardSpace provê uma solução baseada em padrões para trabalhar e gerenciar várias identidades digitais. A proposta deste framework é criar uma plataforma/framework voltada para várias questões de segurança, principalmente tendo um foco em identidades digitais.

A idéia que a Microsoft teve para desenvolver este novo framework foi que no mundo real temos várias identidades. Por exemplo, quando vamos comprar algum produto em nosso cartão de crédito, somos um certo cliente com várias informações, em nossa carteira de identidade também temos várias informações, e quando vamos viajar, nosso passaporte também tem várias informações.

A idéia aqui é que temos vários contextos com várias informações, não totalmente, diferentes uma da outra que são expressas de diferentes maneiras. Como isso acontece podemos dizer que temos várias identidades.

No mundo digital, acontecem situações semelhantes a do mundo real, em se tratando de identidades.
A Microsoft esta trabalhando forte para que a plataforma Windows esteja preparada e atualizada nesta questão de identidade digital.

O Windows CardSpace (WCS), chamado antigamente por “InfoCard”, irá permitir que qualquer aplicativos Windows possibilite que os usuários tenham um meio comum para trabalharem com identidades digitais. As tecnologias de ID digitais estão também suportando a versão 7.0 do Internet Explorer, navegador de internet da Microsoft.

Este novo framework irá fornecer um modelo robusto e moderno para que os desenvolvedores possam desenvolver softwares mais seguros.

Framework.Net 3.0 X 3.5

O framework.Net 3.5 segue os mesmos padrões dos framework’s anteriores, mas desenvolvido com funcionalidades novas, como o Ajax que se torna agora nativo do framework juntamente com a versão ControlToolkit. Não é mais necessário fazer referência à DLL’s para poder utilizar os componentes do Ajax. Temos também a nova versão das linguagens C# e VB.Net, C# 3.0 e VB.Net 9.0 trazendo consigo a possibilidade de utilizar o LINQ (Language Integrated Query).

Dentre as diversas melhorias discutidas ao longo do trabalho, poderíamos citar (com dificuldade) o LINQ (Language Integrated Query) como sendo uma das estrelas do .NET Framework 3.5, o LINQ é basicamente uma sintaxe para consultas. Sabemos que existem alternativas para consultas a banco e nas linguagens de desenvolvimento de sistemas mas, com o LINQ a Microsoft tornou possível integrar essas consultas e ainda agregar novas funcionalidades, são justamente essas novas funcionalidades inclusive que servem de base para o LINQ.

Dentre esses novos recursos de que se fala tanto nos materiais que usamos como base para a pesquisa, podemos citar:

No Visual C# (em suas versões Visual Basis .NET 8.0 e 9.0 e Visual C# 2.0 e 3.0), essas coisas todas foram introduzidas entre as versões 2.0 e principalmente na 3.5. Uso de métodos anônimos, "delegates" do tipo "Action" e "Predicate" (versão 2.0 do Framework) por exemplo. Mas as principais funcionalidades vieram na versão 3.5.
Há operadores como o "Standard Query Operators" que é uma API que possibilita a execução de consultas em qualquer coleção, na realidade, sendo mais abrangente, em qualquer objeto que tenha implementada a interface IEnumerable.

Como foi dito anteriormente, no quesito banco de dados, o LINQ para SQL, constitui mais uma das principais funcionalidades do LINQ na versão 3.5 do .NET Framework. O LINQ para SQL fornece toda uma base para que gerencie os dados relacionais para os objetos da aplicação e de forma inversa também.

Generics é um novo tipo de conceito introduzido na versão 2.0 do Framework, permitem que haja classes, métodos, propriedades, delegates e interface que trabalhem com um tipo não especificado. Esse tipo "não especificado" quer dizer que agora o o desenvolvedor pode especificar um tipo e trabalhar com ele sem maiores problemas.

ArrayList permite a adição de qualquer tipo dentro de si. Mas há uma restrição, não é possível adicionar apenas valores do tipo inteiro ou string por exemplo. Isso se dá em função de o método "Add" aceitar apenas um "System.Object". Com "Generics" é possível criar coleções de um determinado tipo, isso abre a possibilidade de o usuario fazer o que antes não era possível. Se por acaso for inserido objeto incompatível, o erro é detectado em tempo de desenvolvimento. O .NET Framework 2.0 fornece uma porção de coleções que utilizam "Generics" e que estão contidas dentro do "namespace System.Collections.Generic" Classes genéricas oferecem várias vantagens como:
Reusabilidade (um tipo genérico pode ser usado em diversas situações, algarismos de tipos diferentes podem ser manipulados por exemplo numa soma sem uso de sobrecarga do método de soma.), Type-safety (o tipo generics no aspecto type-safety não permite que para uma coleção definida para ser composta por strings tenham outros tipos de variáveis, ocorre o inverso em ArrayLists) e Performance (o número de conversões cai drasticamente, já que tudo passa a trabalhar com um tipo especificado.).

Conclusão

Percebemos que, com versão 3.0 ou 3.5 a produtividade e eficiência dos programadores aumentou, pois, é possível desenvolver os mais diversos aplicativos com as mais diversas situações e dificuldades com um único framework unificando diversos tipos de ferramentas. Com o framework não se torna necessário ter que aprender a manusear diversos tipos de ferramentas ou linguagens para o desenvolvimento de uma única aplicação, assim também no caso do WPF não necessitamos desenvolver códigos diferentes para um sistema que roda em diferentes ambientes, isso trouxe um ganho importante não só para desenvolvedores , mas, também para empresas que necessitam de uma solução em curto espaço de tempo, que seja produtiva e eficiente ao mesmo tempo. Com a evolução dos framework's o desenvolvimento de sistemas vem se tornando cada vez menos complicado, dando oportunidade de investir tempo em soluções mais robustas com muito mais eficiência.

Referências:
http://msdn.microsoft.com/windowsvista/default.aspx
http://www.netfx3.com/
http://windowssdk.msdn.microsoft.com/en-us/library/default.aspx
http://msdn.microsoft.com/windowsvista/downloads/products/getthebeta/ http://www.microsoft.com/brasil/msdn/Tecnologias/netframework/wpf.mspx http://www.imasters.com.br/artigo/4681/dotnet/visao_geral_do_net_framework_30/
http://en.wikipedia.org/wiki/.NET_Framework
Revista .Net Magazine Ano-04 – 43ª edição

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License