introdução a plataforma
TRANSCRIPT
Introdução a Plataforma .NET Framework
Manual do Desenvolvedor
São Paulo, 21 de Fevereiro de 2016
Jéssica Nathany Carvalho Freitas
Feliz é aquele que transfere o que sabe e aprende o que ensina!
Sumário
Lista de Figuras .............................................................................................................................. 3
Referencias .................................................................................................................................... 5
Resumo .......................................................................................................................................... 8
Introdução ..................................................................................................................................... 9
Capítulo 1. Introdução a Plataforma .NET .................................................................................. 10
Capítulo 2. Aplicações .NET Framework .................................................................................... 16
Capítulo 3. Breve introdução a JSON e XML ............................................................................... 38
Capítulo 4. DDD, TDD e BDD....................................................................................................... 42
Capítulo 5. Introdução do Microsoft Azure ................................................................................ 46
Capítulo 6. Visual Studio 2015 .................................................................................................... 51
Conclusão .................................................................................................................................... 54
3
Lista de Figuras
1 ............................................. Namespace
2 ............................................. Plataforma .NET Framework
3 ............................................. Tela de Cadastro Windows Form Interface GUI
4 ............................................. Código da Tela de Cadastro Windows Form
5 ............................................. WPF – Windows Presentation Foundation
6 ............................................. Code-Behind
7 ............................................. Página aspx
8 ............................................. Estrutura de ficheiro de uma aplicação web
9 ............................................. MVC
10 ............................................. String de conexão
11 ............................................. exemplo DataReader
12 ............................................. Entity Framework
13 ............................................. Model First
14 ............................................. Code First
15 ............................................. Exemplo view ASPX e Razor
16 ............................................. ASPX e Razor
17 .......................................... Mecanismo de roteamento convencionado
18 ......................................... .Actions que retornam mensagem ao usuário
19 .......................................... Web API e WCF Service
20 .......................................... Estrutura JSON
21 .......................................... Estrutura JSON string
22 .......................................... Estrutura JSON number
23 .......................................... Estrutura DDD
24 .......................................... BDD autor Renato Groff
25 .......................................... serviços e aplicativos acessíveis pela internet
4
26 .......................................... Visual Studio 2015 Community
5
Referencias
https://msdn.microsoft.com
(Microsoft MSDN)
http://www.linhadecodigo.com.br/artigo/120/arquitetura-net-msil-clr-cts-cls-blc-jit.aspx
(Junior Guimarães)
http://www.devmedia.com.br/siglas-framework-net/18507
(Fernando Rodrigues da Silva)
https://msdn.microsoft.com/pt-br/library/dz9199dk(v=vs.90).aspx
http://www.macoratti.net/webfrm1.htm
(José Carlos Macoratti)
http://www.macoratti.net/09/06/vb_iaef.htm
(José Carlos Macoratti)
http://eduardopires.net.br/2012/07/desenvolvimento-web-mvc-x-webforms/
(Eduardo Pires)
ASP.NET MVC (Fabrício Sanchez e Márcio Fábio Althmann) Editora: Casa do Código
https://msdn.microsoft.com/pt-br/library/bb386964(v=vs.110).aspx
(Microsoft MSDN )
http://netcoders.com.br/blog/wcf-web-api-estudo-comparativo/
(Renato Groffe)
Intro ASP.NET Web PAI (Israel Aece)
https://msdn.microsoft.com/pt-br/library/hh156544(v=vs.110).aspx
(Microsoft MSDN )
https://msdn.microsoft.com/es-es/library/ms731082(v=vs.110).aspx
(Microsoft MSDN version Espanhol )
http://www.linhadecodigo.com.br/artigo/2314/wcf-introducao.aspx
(Israel Aece )
Programando Serviços WCF Editora Alta Books , autor Juval Löwy (2007)
http://www.devmedia.com.br/introducao-ao-wcf-windows-communication-foundation-
revista-easy-net-magazine-15/22343
(Vladimir Rech)
http://www.json.org/json-pt.html
(json.org)
Ajax Com JQuery (Mauricio Silva 2009) Editora: NOVATEC
6
O Guia Prático da XML (Paulo Heitlinger 2001)
http://eduardopires.net.br/2012/06/ddd-tdd-bdd/
(Eduardo Pires)
http://www.agileandart.com/2010/07/16/ddd-introducao-a-domain-driven-design/
(Daniel Cukier)
eXtreme Programming Explained (Beck K 2000)
http://pt.slideshare.net/renatogroff1/tdd-renato-groffe?qid=ed411b0e-1b72-4577-9f16-
36b3c9bbb5e7&v=&b=&from_search=2
(Renato Groff)
http://www.devmedia.com.br/behavior-driven-development-na-plataforma-net/33372
(Renato Groff)
https://www.visualstudio.com/pt-br/features/azure-tools-vs.aspx
(Microsoft Azure)
https://azure.microsoft.com/pt-br/documentation/articles/fundamentals-introduction-to-
azure/
(Roberto Boucher Jr)
http://antonioricardo.org/2013/03/28/o-que-e-saas-iaas-e-paas-em-cloud-computing-
conceitos-basicos/
(Antonio Ricardo)
http://gizmodo.uol.com.br/entenda-o-que-significa-saas-paas-e-iaas/
(F451 Mídia 20 de outubro de 2015)
http://exame.abril.com.br/tecnologia/noticias/microsoft-lanca-versao-final-do-visual-
studio-2015
(Gustavo Gusmão)
7
8
Resumo
O presente artigo tem como objetivo apresentar de forma conceituada a
plataforma.Net Framework para desenvolvedores que buscam aprimorar seus
conhecimentos e para aqueles que pretendem conhecer melhor sob esta plataforma.
Este material foi elaborado sobre uma longa jornada de pesquisa, contudo, é com um
imenso prazer publicar este artigo e espero que ajude muitas pessoas assim como
tem me ajudado durante estes meses. A idéia não é vender ou convencer ninguém em
trabalhar com em uma plataforma da Microsoft, e sim mostrar as ferramentas e
bibliotecas que vem sido aprimoradas no decorrer do tempo, e como é possível criar
aplicações com maior facilidade e extraindo o máximo de aprimoramento que a
plataforma .NET Framework pode oferecer.
9
Introdução
O presente artigo tem como principal motivo apresentar os principais benefícios que a
plataforma.NET Framework pode nos oferecer durante o processo de desenvolvimento
de softwares.
Considere este estudo como uma base de conhecimento para aqueles que buscam
aprimorar habilidades e conhecer mais esta ferramenta, e que em busca de
praticidade, vantagens e benefícios que o .NET Framework possa oferecer durante o
processo de desenvolvimento de software, e que de alguma maneira ou outra reflita de
forma positiva no produto gerado.
Devido à grande expansão nos meios de desenvolvimento de softwares e da internet,
e com grande evolução tecnológica, surgiram diversos meios e ferramentas que são
utilizadas atualmente em larga escala no processo de desenvolvimento de software,
dentre elas está à plataforma da Microsoft .NET Framework. E aqui serão
apresentados os recursos que esta ferramenta possuí o que vem evoluindo com o
decorrer do tempo, o que ela pode contribuir para torna um ambiente de
desenvolvimento mais seguro, amplo e mais inteligente para o programador
desenvolvedor.
10
Capítulo 1. Introdução a Plataforma .NET
O que é .NET Framework
É um componente construído pela Microsoft que visa uma plataforma para
desenvolvimento e execução de sistemas e aplicações. Todo e qualquer código para
.NET, pode ser executado em qualquer dispositivo que possua o framework de tal
plataforma instalado. A plataforma .NET foi desenvolvida para concorrer com a
plataforma Java, sendo assim o programador deixa de escrever códigos para um
sistema ou dispositivo e passa a escrever códigos para uma plataforma .NET.
O .NET é executada sobre a Common Language Runtime – CRL interagindo
com um conjunto de Bibliotecas Unificadas (framework), CRL que é o próprio ambiente
de execução é capaz de executar mais de 33 linguagens de programação interagindo
entre si como se fosse uma única linguagem. O código fonte é compilado pela
linguagem escolhida gerando um código intermediário em uma linguagem chamada
MSIL (Microsoft Intermediate Language) e de acordo com o projeto, o novo código
fonte gera um arquivo em linguagem de baixo nível:
EXE - Arquivos Executáveis, Programas
DLL - Bibliotecas de Funções
ASPX - Páginas Web
ASMX - Web Services
Common Language Engine
As linguagens de programação do .NET framework compilam o código em uma
linguagem intermediária conhecida como Common Intermediate Language (CIL).
Durante a execução, acessa o arquivo formatado CIL que é compilado pelo Justi In
Time Compiler (JIT) em código nativo. A combinação desses conceitos é chamada de
Common Language Runtime (CRL).
Common Language Runtime
É o mecanismo responsável pela execução de aplicações .NET Framework. A
linguagem C# suporta CRL, assim como outras linguagens de programação da
Microsoft. O código gerado pelo compilador para o suporte CRL chamamos de código
gerenciado. O Common Language Runtime – CRL (linguagem comum em tempo de
execução) é o cérebro do .NET Framework. Resumidamente, é um agente gerencia
código em tempo de execução, provendo serviços como, por exemplo, o gerenciador
de memória.
11
MSIL (Microsoft Intermediate Language)
Em outras palavras é MSIL ou IL uma linguagem intermediária. Independente
da linguagem que for escrito o programa, depois de compilado será gerado uma IL, ou
seja, não é qualquer linguagem que pode ser programada na plataforma .NET apenas
as linguagens que suportam a tecnologia .NET Framework. Ex: ASP, ASP. NET, C,
C++, C# etc.
O código MSIL não pode ser executado diretamente. Antes de executá-lo é
preciso convertê-lo para instruções que possam ser executadas pela CPU. A
conversão é realizada por um compilador Just-in-time (JIT ou JITer).
MSIL é independente da plataforma, sendo assim, só precisamos de um compilador
para converter o código MSIL em código nativa na máquina-alvo.
CLS (Common Language Specification)
O CLS especifica um conjunto mínimo de recursos que uma linguagem deve
adotar para gerar o código CLR (Common Language Runtime). As CLS fazem a
interação entre as linguagens, graças à informação de metadados, assim o CLR
consegue interpretar corretamente o código MSIL.
CTS (Common Type System)
Com a finalidade de tornar a linguagem .NET Framework tudo integrado, a
Microsoft criou especificações dos tipos, chamada Common Type System, ela
descreve como os tipos são definidos e como eles se comportam.
Esses tipos se compartilham em qualquer tipo .NET Framework, com isso é
possível criar componentes em Visual Basic.NET e executar em qualquer outra
linguagem .NET como o C# por exemplo.
FCL (Framework Class Library)
Contém classes que fornecem serviços e objetos que é preciso para que o
desenvolvedor possa escrever suas aplicações como: Coleções, Configurações,
Globalização, Segurança entre outros. É o alicerce sobre o qual os aplicativos .NET
Framework, componentes e controles são construídos.
BCL (Basic Class Library)
A Microsoft reuniu em Namespaces, rotinas de uso frequente, como o acesso a
disco, gerenciamento de memória, uso de sockets, envio de email, Debug, e muitos
outros recursos. Para utilização desses recursos a Microsoft chamou de Bibliotecas
Base.
12
Class Library
É uma biblioteca de classes, interfaces e tipos incluídos do .NET Framework
que permite acesso as funcionalidades do sistema, e é a base a partir do qual são
construídas aplicações .NET, componentes e controles. Com esta biblioteca de
classes podemos criar aplicações que executam as mais variadas tarefas, como por
exemplo, um software de gestão empresarial, um sistema de vendas web, ou até
mesmo uma loja virtual e-commerce. Suas principais funcionalidades oferecidas pela
biblioteca de classes são:
- Representa um tipo de dados básicos e exceções;
- Permite o encapsulamento de estrutura de dados;
- Executa operações de entrada e saída;
- Acessa informações de tipos de dados carregados;
- Realiza verificações de segurança;
- Prove acesso a dados e a internet;
- Permite desenvolver a interface de uma aplicação;
- Permite aplicações Windows e ASP.NET.
Namespace
A biblioteca de classes do .NET Framework é composta de namespaces. Cada
namespace contém tipos que você pode usar em seu programa: classes, estruturas,
enumerações, delegados e interfaces. Namespace oferece escopo: duas classes com
o mesmo nome podem ser usadas em seu programa enquanto estiverem em
diferentes espaços para nome.
Assemblies
Assemblies são partes fundamentais da programação em .NET Framework.
Um assembly contém um código que o CRL executa. O código MSIL dentro de um
arquivo portable executable – PE não será executado se não estiver no assembly
manifest associado, e cada assembly deve ter uma entrada ex: DLLMain, WinMain, ou
Main.
Um assembly pode ser estático ou dinâmico. Assemblies estáticos podem
incluir vários tipos (classe e interface) do .NET Framework como também recursos
para os assemblies (bitmaps, arquivos jpg, etc.). Assemblies estáticos são
armazenados no disco rígido com um arquivo portable executable. Um assembly é a
unidade na qual as permissões são solicitadas e concedidas.
13
Assemblies foram projetados para simplificar as implantações de aplicativos e
solucionar problemas de controle de versão que possam ocorrer em aplicativos
baseado em componentes.
Metadata
Metadata ou Metainformação são dados sobre outros dados. Um item de um
metadados pode dizer do que se trata aquele dado, geralmente uma informação
inteligível por um computador. Os metadados facilitam o entendimento dos
relacionamentos e a utilidade das informações dos dados
A plataforma .NET Framework foi projetada para atender os seguintes objetivos:
- Fornecer um ambiente de programação orientado a objetos consistentes, se o código
for executado e armazenado localmente, mas distribuído pela internet ou executado
remotamente;
- Fornecer um ambiente de execução que promova a execução segura do código,
incluindo o código criado por terceiros: desconhecidos ou semi-confiváveis;
- Fornecer um ambiente de execução que elimina os problemas de desempenho dos
ambientes interpretados ou com scripts;
- Tornar a experiência de desenvolvedor consistente, através de diversos tipos de
aplicativos como aplicativos baseado em Windows e aplicativos baseado em web;
- Criar todas as comunicações nas industriais padrão, para garantir que os códigos
armazenados em .NET Framework possam se integrar com qualquer outro código.
14
Figura 1 (Namespace)
15
Figura 2 (Plataforma .NET Framework)
16
Capítulo 2. Aplicações .NET Framework
Windows Form
Windows Form nada mais é que um conjunto de classes do .NET Framework
destinado a criação visuais (GUI) Windows na plataforma .NET. A versão desktop
trouxe o Windows Form que muito embora lembre as aplicações desenvolvidas em
IDEs, como Delphi e também trouxe o lançamento do C#, uma linguagem nova e
orientada a objetos derivado do C que também é orientada a objetos.
A vantagem de se utilizar Windows Form, é que tudo é programado para
acessar diretamente ao computador do usuário. Ou seja, é uma aplicação local que
pode ser instalada e executada na máquina local do cliente ou usuário final sem
precisar ter um acesso á internet. Todo formulário criado pelo Visual Studio possui três
arquivos: um com a extensão (.cs), outro com extensão (.Designer), e outro com a
extensão (.res).
Extensão (.cs) – é a classe que define o comportamento do formulário, ou seja, nesta
classe são programados os eventos deste formulário.
Extensão (.Designer) – é a classe que contém os componentes do formulário tais
como: botões, caixas textbox, labels, gridview dentre outros, além de definir as
instâncias dos controles, armazena valores e propriedades atribuídas em modo
designer, por exemplo, o texto que ficará no label, a posição absoluta da tela tamanho
etc.
Extensão (.res) – são os resources do formulário, ou seja, um arquivo de recurso que
contém informações, que podem ser usadas por ele, como strings, imagens, ícones,
etc.
Figura 3 (Tela de Cadastro Windows Form Interface GUI)
17
Figura 4 (Código da Tela de Cadastro Windows Form)
18
WPF (Windows Presentation Foundation)
O WPF é um componente da Microsoft .NET Framework 3.5. É considerada a
próxima geração de UI (User Interface), que permite a criação de aplicações
personalizadas e consideravelmente bem elevado, criando assim uma experiência
única ao utilizador, que inclui os elementos que são comuns a maioria dos aplicativos
WPF: Extensible Application Markup Language (XAML), code-behind, definições do
aplicativo, controles, layout, ligação de dados e estilos.
O desenvolvimento de um aplicativo WPF simples possui as seguintes etapas:
Definição do XAML para criar a aparência da interface do usuário (UI)
do aplicativo.
Escrevendo código para criar o comportamento do aplicativo.
Adicionando controles e criando o layout para compor a interface do
usuário do aplicativo.
Criação de estilos para criar a aparência consistente em todas as
interfaces do usuário.
Vincular a interface de usuário com os dados, ambas preencher os
dados e mantê-los sincronizados.
Figura 5 (WPF – Windows Presentation Foundation)
19
Web Form
Web Form é um projeto voltado para criação de páginas dinâmicas que pode
acessar um recurso do servidor, gerando conteúdo a ser visualizado pelo browser.
Web form contém os seguintes atributos: aspx extension, Page atributes @Page
directive.
Code – Behind
É a separação do código e do conteúdo, ou seja, o código por trás da página.
Programadores e designers trabalham em UI (Interface Usuário) separado em
Controlers são objetos/variáveis pelo ID
Figura 6 (Code-Behind)
O Code - Behind serve para criar ficheiros separados, usar directiva @Page para
associar aos dois ficheiros, conforme a imagem abaixo.
<tags>
code
Single File
<tags>
Separate Files
code
Form1 .aspx Form1 .aspx.cs Form1 .aspx
20
Figura 7 (Página aspx)
Ficheiros
Solution files (.sln, .suo)
Project files (.vbproj, .csproj)
Web application files
o ASP.NET Web Forms (.aspx)
o ASP.NET web services (.asmx)
o Classes, code-behind pages (.vb ou .cs)
o Global application classes (.asax)
o Web.config file
Project assembly
Vejamos um exemplo de uma estrutura de ficheiros de uma aplicação web
21
Figura 8 (Estrutura de ficheiro de uma aplicação web)
22
ASP.NET MVC
O MVC (Model Control View) é uma tecnologia do .NET Framework que foi
criada pela Microsoft a fim de agilizar e facilitar a vida do desenvolvedor, nada mais é
que uma versão mais evoluída da Web Forms, separando no código as camadas e
responsabilidades de a fim de manter uma aplicação mais limpa, fácil de manter e
otimizar.
Com o modelo MVC, a Microsoft apostou em um modelo diferente para que os
desenvolvedores web pudessem trabalhar com uma arquitetura que corrigissem
eventuais problemas na web forms, alguns deles são:
- Dificuldades de Manutenção: com a automatização de tarefas e encapsulamento de
conceitos ASP.NET Web Forms, na maioria das vezes implica em uma aplicação
muito complexa de ser mantida, e tende a não se utilizar em boas práticas de
desenvolvimento;
- Difícil de testar: com a automatização dos processos do ASP.NET Web Forms, é
difícil testar pois, basicamente o que fazemos em termos operacionais é arrastar
componentes na área de trabalho e adicionar comportamento programático aos
mesmos, esta pratica gera auto acoplamento;
- Separação de Responsabilidades: é tão comum encontrar projetos em ASP.NET
Web Forms páginas com códigos de acesso a dados, composição de elementos
HTML, string conexão etc, ou seja, não há separação de camadas e
responsabilidades, tudo fica em um só lugar.
Figura 9 (MVC)
23
Model
A camada Model é a parta da aplicação que implementa a lógica para a camada
de dados da aplicação, ou seja, essa camada é responsável por recuperar e persistir o
estado do modelo de banco de dados. Podemos dizer que a model representa a lógica
do negócio e os dados.
A conexão com o banco de dados em ASP.NET MVC, que nos referimos ainda
assim em uma conexão de models, pode ser feita de diversas maneiras, os três mais
difundidos no mercado são:
Através da utilização direta das classes ADO.NET;
Através da ORM’s (no modelo de database first);
Através da ORM’s (no modelo de database code-first);
Através da ORM’s (no modelo de database model-first);
ADO.NET é uma tecnologia da Microsoft que consiste em um conjunto de classes do
.NET Framework fornece o acesso de fonte a dados. A classe utilizada é
System.Data.Fornecedor, onde fornecedor é o provedor de acesso a dados como por
exemplo, OLEDB, ODEBC, SQL e MySQL. O ADO.NET possui alguns objetos tais
eles são: Connection, Command, DataReader e DataAdapter.
Connection – Este objeto é responsável por fazer a conexão com o
banco de dados, é necessário informarmos as coordenadas para que o
objeto consiga fazer a conexão, como por exemplo: usuário, senha,
nome do banco de dados, essas coordenadas é passada via
ConnectionString que nela deve conter todas as informações, conforme
a imagem abaixo.
Figura 10 (String de conexão)
Command – Este objeto é responsável por executar as queries do
banco dados. Queries são códigos do SQL (Structured Query
Language), ou seja, programação dentro do SQL para criar comandos,
procedimentos para uma execução de CRUS (Create, Recover, Update
e Delete), queries podem ser feita para executar diversas rotinas.
Sendo assim, depois de criado uma procedure (instrução /
procedimento) no
24
banco de dados que faz um Insert ou Update, o objeto Command executa
estas queries ou quais quer outras que forem chamadas.
DataReader – Este objeto é responsável pela leitura da execução das
queries definidas no objeto anterior o Command, vejamos um exemplo
conforme a imagem abaixo.
Figura 11 ( exemplo DataReader)
O código acima mostra os passos de como instanciamos um objeto
SQLDataReader _dr com a execução do método ExecuteReader do
objeto SQLCommand. Dentro do Loop, notamos que sempre será
criado um obj_cliente que possuirá suas propriedades preenchidas
pelos valores das colunas do respectivos _dr.
DataAdapter – O objeto DataAdapter é responsável pelo preenchimento do
DataSet, que é um objeto responsável pelo armazenamento de inúmeras
tabelas que podem ser relacionadas entre si.
ORM’s (Object Relational Mapper) É uma tecnologia que consiste no mapeamento do
objeto relacional utilizando-se o máximo do conceito Orientado a Objetos e o
Mapeamento Objeto Relacional (ORM), criando assim uma ponte (mapeamento) entre
o modelo relacional e o modelo orientado a objetos. Ou seja, trabalhar com essa
tecnologia permite a construção de uma aplicação utilizando o paradigma orientado a
objetos cujos objetos são persistidos em um banco relacional.
Esta técnica vem sido utilizada com bastante freqüência, pois customiza tempo, reduz
a necessidade mínima de escrever códigos, diminui o trabalho do desenvolvedor sem
ter a obrigatoriedade de escrever códigos de conexão em queries SQL.
25
O framework ORM possui seus próprios métodos básicos que irão realizar as
interações com o banco de dados, como por exemplo, CRUD (Create, Ready, Update
e Delete), com isso são importantes deixar claro que o framework ORM não consegue
substituir o SQL total da sua aplicação. Por mais que o a ferramenta faça a maior parte
do trabalho, haverá necessidades maiores com consultas mais customizadas que
terão de ser realizadas por meio do SQL, como por exemplo, escrever queries e criar
Storage Procedures (instruções) em classes ADO.
Entity Framework
O Entity Framework é uma tecnologia da Microsoft ADO.NET que permite
realizar a modelagem do banco de dados e o acesso ás informações através de um
modelo conceitual.
O Entity Framework permite aos desenvolvedores trabalhar com dados na
forma de propriedades e objetos específicos de domínio como clientes e produtos, etc.
sem ter que relacioná-los com as tabelas do banco de dados e as colunas onde os
dados estão armazenados. Isto é possível pela elevação de nível de abstração no qual
os desenvolvedores podem trabalhar quando estão tratando com os dados e pela
redução de código que é necessário para manter as aplicações orientadas a dados
(José Carlos Macoratti 2016).
Outra vantagem do Entity Framework é o suporte do LINQ (Language
Integrated Query) to Entities, faz com que o desenvolvedor não se preocupe com o
SQL, deixando o próprio Framework fazer esse trabalho.
Figura 12 (Entity Framework)
26
Conforme a Figura 11, o Entitty Framework além do Entity Data Model possui outros
serviços que incrementam o poder da modelagem, conforme descrito abaixo.
Object Services – É um componente do Entity Framework que permitindo que
seja feitas consultas, inclusões, atualizações e exclusão de dados, expressos
como objetos CLR fortemente tipados que são instanciados de tipos de
entidades. O Object Services da suporte a consultas LINQ e Entitty SQL contra
tipos que são definidos em EDM.
LINQ to Entities – Fornece suporte a consultas LINQ (Consultas Integrada a
Linguagem) que permite aos desenvolvedores escreverem consultas no
modelo conceitual do Entity Framework usando VB, C# etc. As consultas no
Entity Framework são representadas por consultas de árvore de comando, que
são executadas no contexto de objeto.
EntityClient – O Entity Client usa o provedor específico do armazenamento
ADO.NET metadados de mapeamento e classes de provedor de dados para
interagir com o modelo conceitual.
Entity SQL – Trabalham diretamente com as entidades no modelo conceitual
que suporta características EDM como herança e relacionamento.
Entity Data Model (EDM) – É definido pelos seguintes arquivos de modelo de
mapeamento:
o Arquivo de Definição de Schema conceitual (.csdl) – define o modelo
conceitual;
o Arquivo de Definição de Schema de armazenamento (.ssdl) – define
o modelo de armazenamento que também é chamado de modelo
lógico;
o Arquivo de especificação de mapeamento (.msl) – Define o
mapeamento entre os modelos conceitual e de armazenamento
O Entity Framework oferece três abordagens para o desenvolvimento, essas
abordagens são: DataBase First, Model First e Code First.
DataBase First
o Cria o modelo EDMX utilizando a Engenharia Reversa
o Classes geradas automaticamente a partir do EDMX
Model First
o Cria o modelo EDMX utilizando o Designer
o Cria/Atualiza o banco de dados a partir do EDMX
o Classes geradas automaticamente a partir do EDMX
Code First (Banco de Dados Existente)
o Cria o modelo EDMX utilizando o Designer
o Cria/Atualiza o banco de dados a partir do EDMX
o Classes geradas automaticamente a partir do EDMX
Code First (Novo Existente)
o Definição de classes e mapeamento no código
27
o Cria/Atualiza o banco de dados em Runtime
Na Figura 12 temos um exemplo de Model First e na Figura 13 um exemplo de Code
First
Figura 13 (Model First)
Figura 13 (Code First)
28
View
As Views são componentes que exibem a interface do usuário (UI).
Tipicamente esta UI é criada a partir do modelo de dados. Na view contém as caixas
de texto (textbox), caixa de listagem (dropdowlist) etc, a view é responsável por gerar
o código HTML ou qualquer resposta de volta ao navegador como pdf, HTML, arquivos
etc. Quando o usuário faz uma solicitação, automaticamente a view envia uma
requisição ao Controller que fará a comunicação com a Model para realizar tal
consulta ao banco.
View Engine – é responsável por renderizar o HTML de suas views para o navegador.
O modelo view engine tem uma sintaxe diferente para implementação. Atualmente
estão disponíveis para o modelo MVC, os quatro melhores motores são: Razor, Spark,
ASPX e NHtml. Hoje por padrão de view engine usado no modelo MVC é ASPX,
baseado em um modelo utilizado em Web Forms.
View Razor – foi otimizado em torno de uma geração de código HTML utilizando uma
abordagem de code-focused.
Figura 15 (Exemplo view ASPX e Razor)
29
Figura 16 (ASPX e Razor)
30
Controller
Em uma aplicação MVC existe o conceito de rotas, onde graças a um
mecanismo de roteamento de requisições convencionado, o ASP.NET MVC consegue
entender que as três diferentes chamadas (http://localhost:1153/,
http://localhost:1153/Home e http://localhost:1153/Home/Index ) estão na verdade fazendo
referência ao mesmo recurso. O ASP.NET MVC já trás consigo a implementação de
uma rota padrão de navegação e é ela que gera de fato, o comportamento
apresentado abaixo.
Figura 17 ( mecanismo de roteamento convencionado)
De acordo com (Fabrício Sanchez e Márcio Fábio Althmann) controller nada
mais é que “Um orquestrador de operações diversas. Esta é uma boa definição para
os controllers dentro do framework ASP.NET MVC, já que são eles que agrupam todos
os comportamentos da aplicação.”
Com base nessas informações, podemos entender que controller é um
componente que interage com o usuário. Trabalha em conjunto com a Model e, por
fim, seleciona a página ideal para qual o usuário será selecionado. Em uma aplicação
MVC, as views possuem apenas informações, já os controllers respondem a estas
solicitações enviadas pelas views. Quando um usuário faz uma solicitação pela UI a
(view) faz uma solicitação para o controller que interage com a camada de modelo
(model), ou seja, o controller é responsável por receber e transformar requisições
enviada pela view em informações que serão utilizadas pelas regras de negócios da
aplicação que no caso são os models.
Ao receber uma requisição, os controllers devem efetuar alguma ação para que
a requisição seja processada, essas ações são as (actions). As actions são métodos
definidos no controller, e o controller pode ter várias actions. (Fabrício Sanchez e
Márcio Fábio Althmann)
31
O exemplo abaixo mostra o roteamento padrão do MVC {controller} / {action} / {id}
ex: http://localhost/mensagem/bomdia
Figura 18 ( Actions retornam mensagem ao usuário)
32
ASP.NET Web API
ASP.NET Web API é um framework que facilita a construção de serviços REST
HTTP, que alcançaram umas amplas variedades de clientes mobile, browser e
aplicações locais. É uma plataforma ideal que se destaca pela objetividade, elegância
e simplicidade.
Com o ASP.NET Web API, podemos desenvolver serviços HTTP plenamente
adaptados ao modelo REST, com suporte a diversas formatações (XML e JSON são
suportados nativamente) e são fáceis de testar, consumir e manter. Além de tudo isso
há ainda um amplo suporte de ferramentas de desenvolvimento, distribuição,
hospedagem e manutenção provida pela Microsoft ou terceiros. Antes de
compreendermos melhor sobre REST, vamos entender o que é e como funciona o
SOAP.
SOAP (Services Object Access Protocol) tem como finalidade padronizar o
conteúdo que trafega as partes sobre protocolo HTTP. Para (Israel Aece) “O SOAP é
baseado em XML, e consequentemente é extensível e em pouco tempo ele ficou
popular e foi sendo utilizado em larga escala. Cada empresa utilizou especificações
criadas e regidas por órgãos independentes, criando um ferramental para que seja
possível a criação e o consumo destes serviços.”.
O SOAP pode ser usado em uma variedade e sistemas de mensagens e
protocolos. Mensagens SOAP são escritas inteiramente em XML e, portanto, é
independente de linguagem e plataforma. O protocolo SOAP representa a essência da
arquitetura de serviços na web, habilitando diversas aplicações a trocarem dados e
serviços.
REST – (Representational State Transfer) é um protocolo de comunicação
baseado no protocolo HTTP. Porém não impõem restrições ao formato de mensagem,
apenas no comportamento dos componentes. O REST é simples de entender e pode
ser adotado em praticamente qualquer cliente ou servidor com suporte HTTP/HTTPS.
RESTFULL – são construídos para funcionar melhor na web. Um serviço expõe
um conjunto de recursos que identificam os salvos da interação com seus clientes. Os
recursos são indentificados por URIs, que proporcionam um espaço de
endereçamento global para recursos e descobertas de serviços.
HHTP – (HyperText Transfer Protocol) é o protocolo mais utilizado na internet
desde 1990. O objetivo deste protocolo é a transferência de ficheiros pela rede
(essencialmente formato HTML) localizados por uma cadeia de caracteres chamada
URL entre o navegador e (o cliente) e um servidor web.
GET – está requisitado ao serviço um determinado recurso, devendo apenas
extrair á informação e não alterá-la.
33
POST – indica ao serviço que ele deve acatar o recurso que está sendo
postado para o mesmo, e que muitas vezes, o adicionamos em algum repositório.
PUT – indica que ao serviço que o recurso que está sendo colocado deve ser
alterado se ele já existir, ou ainda, pode ser adicionado caso ele ainda não exista.
DELETE – indica que o serviço deve excluir o recurso.
Figura 19 (Web API e WCF Service)
34
WCF (Windows Communication Foundation)
De acordo com o MSDN (Microsoft) WCF é um modelo de programação
unificado para a criação de aplicativos orientados a serviços (SOA). Ele permite os
desenvolvedores criarem soluções seguras, confiáveis e transacionadas que se
interagem nas plataformas e interopem com os investimentos existentes.
Para (Israel Aece) “O WCF fornece uma grande quantidade de funcionalidades
que facilmente podem ser adicionadas em serviços. Além disso, grande parte dessas
funcionalidades pode ser configurada de forma declarativa, através de arquivos de
configuração que, na maioria dos casos, traz uma enorme flexibilidade.”.
“Aplicações precisam consumir dados e estes, precisam ser tratados antes de
serem exibidos. Nem sempre o software que apresenta as informações capacidade
para armazenamento e processamentos necessários. As aplicações orientadas a
serviços entram neste cenário permitindo que equipamentos com recursos limitados
de armazenamento ou de processamento consigam ser usados pelo menos fazer a
exibição dos dados. (Vladimir Rech)”. A principal característica do WCF é:
Orientação a Serviços – Uma arquitetura orientada a serviços (SOA) é baseada
em quatro abstrações
Interoperabilidade – WCF é criada para interoperar com serviços da Web que
oferecem suporte a um conjunto de especificações conhecido como as
especificações de serviços da Web.
Modelos de Mensagens – As mensagens são trocadas através de um dos
vários padrões. O mais comum é os dados pedidos de solicitação/resposta
uma extremidade de outra extremidade e a outra extremidade responde. Há
outros padrões, tais como uma mensagem unidirecional, em que uma
extremidade envia uma mensagem sem esperar por qualquer resposta. Um
padrão mais complexo é o padrão de troca de duplex, onde duas extremidades
estabelecem uma conexão e envia dado, semelhante a um programa de
mensagens instantâneas.
Metadados de Serviços – WCF suporta a publicação de metadados de serviço
utilizando formatos específicos em padrões de indústrias, como WSDL, XML
Schema e WS-Policy. Esses metadados podem ser usados para gerar e
configurar os clientes para acessar serviços WCF automaticamente. Os
metadados podem ser publicados através de HTTP e HTTPS, ou usando o
padrão Exchange Web Services Metadata.
35
Contratos – Desde que o WCF foi baseado em .NET Framework também
incluiu métodos simples de códigos para fornecer contratos para se aplicar. Um
tipo de contrato universal são os dados do contrato. Basicamente, ao digitar o
código usando o serviço Visual C# ou Visual Basic, a maneira mais fácil de
controlar quais dados é criar classes que representam uma entidade de dados
com propriedades que pertencem a ele. WCF inclui um sistema completo para
trabalhar com dados de uma forma mais fácil. Depois de criar as classes que
representam os dados, o serviço gera automaticamente metadados que
permitem aos clientes coincidir com os tipos de dados que são projetados.
Segurança – É possível criptografar mensagens para proteger a privacidade, e
forçar os usuários a autenticar antes de permitir que eles recebam mensagens.
A segurança pode ser implementada usando padrões conhecidos, tais como:
SSL ou WS-SecureConverration
Vários Transportes e Codificações – As mensagens podem ser enviadas com
qualquer protocolo e codificação embutidos. As combinações mais freqüentes
de protocolo e consiste em enviar mensagens via SOAP codificados de texto
utilizando o protocolo Hypertext Transfer Protocol (HTTP) utilizado na World
Wide Web. WCF também permite que você envie mensagens sobre TCP,
nomeados ou MSMQ. Estas mensagens podem ser codificada como texto ou
usando um formato binário otimizado. Dados binários podem ser enviados de
forma eficiente usando o padrão MTOM. Se nenhum transporte fornecido ou
codificado atender suas necessidades, você pode criar um personalizado.
Mensagens Confiáveis em fila – WCF suporta a troca de mensagens confiáveis
usando sessões confiáveis implementadas ao longo do WS-Reilable
Messaging e usando MSMQ.
Mensagens duráveis – Uma mensagem real é aquela que nunca é perdida
devido a uma falha de comunicação. Mensagens que são parte de um padrão
de mensagens duráveis são sempre guardadas numa base de dados. Se
ocorrer uma interrupção, o banco de dados permite retornar a troca de
mensagens quando a conexão for restabelecida. É possível criar uma
mensagem durável usando Windows WorkFlow Fondation (WF).
Transações – WCF também suporta transações usando três modelos: APIs,
WS-Atomic System. Transactions namespace e Microsoft Distributed
Transaction Coordinator .
Suporte AJAX e REST – REST é um exemplo de uma tecnologia em evolução
da Web 2.0. WCF pode ser configurado para processar dados XML “simples”,
quer dizer sem formato que não se encaixa em um envelope SOAP. WCF
também pode ser estendido para suportar formatos específicos como, XML,
JavaScript Notation (JSON) entre outros.
36
Extensibilidade – A arquitetura WCF tem vários pontos de extensibilidade. Se
uma função adicional é necessária, há um número de pontos de entrada que
lhe permite personalizar o comportamento de um serviço.
SOAP – Embora denominado como Sample Object Access Protocol, SOAP
não é um protocolo de transporte, em vez disso, é um documento XML
composto por uma seção de cabeçalho e corpo.
Hosting – Do ponto de vista do WCF hosting refere-se à hospedagem WCF
que pode ser feito através de muitas opções disponíveis, como self-hosting, IIS
hosting e WAS hosting.
Endpoint – Define o endereço onde a mensagem está a ser enviada ou
recebida. Também especifica o mecanismo de comunicação para descrever a
forma como as mensagens são enviadas juntamente com o conjunto de
definição de mensagens.
Address – Endereço que espeficica o local exato para receber mensagens
como um Uniform Resource Identifier (URI). É como um esquema
Expresso://domain[:port] / [caminho]. Ex: net.tcp://localhost:8080/services, onde
“localhost” pode ser o nome da máquina ou um domínio web, e o “services” é o
caminho
Comparação entre WCF e Web API
Diferentes pontos de diferenças representados pela tabela abaixo
Aspecto sobre análise WCF Web API
Visão geral da arquitetura A implementação de um serviço envolve a especificação de um endereço, de um binding (configurações) e de um contrato (interface descrevendo as operações suportadas).
Serviços são implementados como Controllers, nos quais as funcionalidades disponíveis correspondem às Actions. Importante destacar que com o ASP.NET 5, os frameworks MVC e Web API foram unificados em um único modelo chamado MVC 6.
Configuração No arquivo .config de uma aplicação ou ainda, a partir de classes que compõem o próprio framework WCF.
Via código-fonte, através de instruções definindo o comportamento de um serviço.
Protocolos suportados HTTP/HTTPS, TCP, P2P, MSMQ (Microsoft Message Queuing), dentre outros. Uma mesma solução WCF pode ser projetada para suportar mais de um protocolo
Somente HTTP/HTTPS.
37
(HTTP/HTTPS e TCP, por exemplo).
Formatos suportados SOAP, XML, JSON, binário, MTOM.
JSON, XML.
Manipulação de dados Criação de classes convencionais (com a exposição de propriedades públicas) ou Data Contracts (propriedades expostas através do serviço são marcadas como Data Members).
Classes convencionais (as propriedades públicas serão automaticamente expostas aos consumidores de um serviço), além de tipos anônimos ou dinâmicos.
Padrões para troca de mensagens
Request-Reply, One Way, Duplex.
HTTP request/response, com capacidades adicionais através do uso de WebSockets ou SignalR.
Documentação/descrição de um serviço
Serviços baseados em SOAP têm sua estrutura detalhada automaticamente, através do uso do padrão WSDL (Web Services Description Language).
Geração automática de documentação a partir do site da aplicação ou ainda, através de soluções como Swagger.
Hospedagem Conta com classes para self-host, além da possibilidade de hospedagem em servidores IIS.
Hospedagem em servidores IIS. Há a possibilidade ainda de self-host, através do mecanismo conhecido como OWIN (Open Web Interface for .NET).
Serviços RESTful Implementados através de ajustes de configuração, com a opção de uso de JSON e/ou XML.
Por default um serviço Web API é RESTful (suportando tanto JSON, quanto XML).
Integração com JavaScript/jQuery
Possível através da criação de serviços RESTful.
Suportada por default.
Integração com outras plataformas/linguagens
Possível através da implementação de serviços SOAP ou RESTful.
Possível, já que todo serviço Web API é RESTful.
Segurança Baseada no uso de SSL, além de certificados digitais, NTLM, Kerberos e tokens.
SSL e autenticação baseada em tokens são possibilidades.
Open Source Sim Sim
(Tabela do artigo Web API x WCF autor: Renato Groff)
38
Capítulo 3. Breve introdução a JSON e XML
JSON (Java Script Object Notation)
De acordo com (Mauricio Silva p.176) “Trata-se de uma técnica Java Script que
usa sintaxe leve e simples para armazenar dados. Tal como XML, JSON está
estruturado de modo a ser facilmente lido, interpretado e processado por máquinas.”
Em outras palavras JSON é um modelo para armazenamento e transmissão de
informações no formato texto. Apesar, de ser muito simples, tem sido bastante
utilizado em aplicações web devido a sua capacidade de estruturar informações de
uma forma bem mais compacta seguida do modelo XML.
Figura 20 (Estrutura JSON)
39
Figura 21 (Estrutura JSON string)
Figura 22 (Estrutura JSON number)
Conforme as imagens acima, podemos entender que o JSON é estruturado da
seguinte maneira:
40
Object – Um objeto é um conjunto desordenado de pares nome/valor. Um
objeto começa com { (chave de abertura) e termina com } (chave de fechamento) .
Cada nome é seguido por : (dois pontos) e os pares nome/valor são seguidos por ,
(vírgula).
Array – Um é uma coleção de valores ordenados. O array começa com [
(cochetes abertura) e termina com ] (cochetes de fechamento).Os valores são
separados por , (vírgula).
Value – Um valor pode ser uma cadeia de caracteres (string), ou número, ou
true ou false, ou null, ou um objeto array. Esta estrutura podem estar alinhadas.
String – Uma string é uma coleção de nenhum ou mais caracteres. Unicode
envolvido com aspas duplas usando barras invertidas como caractere de escape. Um
caracter está representando como um simples caracter de string. Uma cadeia de
caracteres é parecida com uma cadeia de caracteres como C ou Java.
Number – Um número é similar a um número em C ou Java, exceto quando
não se usa os números octais ou hexadecimais.
XML (Extended Markup Language)
É um padrão para a formatação de dados, ou seja, uma maneira de organizar
informações. Os documentos MXL podem ser facilmente compreendidos por
programadores facilitando o desenvolvimento de aplicativos compatíveis. Todas as
informações contidas no XML estão dentro de tags.
O XML e suas tecnologias relacionadas oferecem uma arquitetura robusta para
integração, manipulação, intercâmbio e apresentação de documentos. Baseada nas
seguintes recomendações do W3C, eis suas principais características:
Adaptação – a XML é uma língua-mãe de outras linguagens. Assim, linguagens como DickML e JaneML tornam-se possíveis. A adaptação é infinita. Marcações personalizadas podem ser criadas para qualquer necessidade. Se uma marcação que descreva como um cliente é diferente de outro cliente for necessária, ela pode ser feita;
Manutenção – a XML é fácil de manter. Ela contém somente idéias e marcações, folhas de estilo e links vêem em separado e não escondidas no documento. Cada um pode ser alterado separadamente quando preciso com fácil acesso e fáceis mudanças. Não é preciso mai se achar em uma bagunça de marcações;
Ligação – a XML possui uma maneira de ligar que inclui todas as formas de ligação. Não é só isso, ela liga de maneira que a HTML não pode. A HTML pode fazer de uma maneira mais simples, onde um objeto se liga a outro. Já a XML faz isso, mas também pode ligar um ou mais pontos a uma idéia;
41
Simplicidade – a XML é simples. Um usuário de média experiência que olha a XML pode achá-la difícil de acreditar no que vê. Comparada com o HTML não. Comparada com SGML é um estudo de simplicidade. As especificações do SGML tem 300 páginas, já a da XML tem 33 a XML vai direto ao assunto.
Portabilidade – a XML é fácil portabilidade. A razão da sua existência é força e portabilidade, a XML pode ser navegada com ou sem DTD (Document Type Definition), ou Definição do Tipo de Documento as normas que definem como as tags são estruturadas nos documentos XML. Tudo que um navegador precisa para ver XML é ter uma noção que ela é própria.
42
Capítulo 4. DDD, TDD e BDD
DDD
DDD - Domain Drive Design (Desenvolvimento Guiado por Design ou
Desenvolvimento Orientado a Domínio) veio do livro escrito por Eric Evans, é um livro
baseado em padrões e boas práticas de desenvolvimento, baseado em experiências
do autor ao longo de mais de 20 anos desenvolvendo softwares utilizados técnicas de
Orientação a Objetos. Um padrão é uma regra de três partes que expressa à relação
em um contexto (1) problema (2) e uma solução (3).
Figura 23 (Estrutura DDD)
O Domain Drive Design não é uma tecnologia, não é uma metodologia,
podemos entender o DDD como uma abordagem de design de software disciplinada
que reúne um conjunto de conceitos, técnicas e princípios com o foco no domínio e na
lógica de domínio.
Interface com o Usuário – Parte responsável pela exibição de informações do
sistema ao usuário e também para interpretar comandos ao usuário;
Aplicação – Esta camada é responsável por fazer as validações da camada de
domínio, não contém lógica de negócio;
43
Domínio – Contém informações sobre domínio é a camada que representa
conceitos, regras e lógica de negócios informações pertinente ao sistema o que deve
permitir, o que não deve permitir, quais são suas regras, sua normas, como será
aplicado, qual seu comportamento etc. Todo o foco DDD está localizado nesta
camada;
Infra-estrutura – Camada responsável por dar suporte às camadas superiores
atua como uma library realiza a comunicação entre as camadas e programa a
persistência dos objetos de negócio;
Linguagem Ubíqua – A linguagem Ubíqua é muito indicada para se trabalhar
juntamente com o programador, ou seja, em um único modelo onde o mesmo pode ser
compreendido pelo cliente, analista, projetista, desenhista, testador, gerente,
programador etc.
Os padrões propostos representados pelo DDD são chamados de blocos de
construção e são utilizados para representar o modelo abstrato. Estes blocos podem
ser:
Entidade – são objetos que possuem um identificador. Esse
identificador deve ser único para todo o modelo. Sua principal função é
distinguir objetos de todos os outros modelos;
Objetos de valores – objetos que só carregam valores, mas não
possuem distinção de entidade. Uma das características dos objetos de
valores é que eles que não são modificados, se precisamos de valores
diferentes, criamos outro objeto, ou seja, estes objetos de valores são
imutáveis, ex: Tipos de Conta são do tipo Corrente, Investimento,
Crédito, Transitória e etc.;
Módulos – abstrações que tem por objetivo agrupar classes por um
determinado conceito de domínio. Para aplicações complexas, o
modelo tende a ficar muito grande, tornando-se difícil de ser
compreendido como um todo, por este motivo, é preciso reorganizar o
modelo em módulos;
Repositórios – classes responsáveis por administratr o ciclo de vida dos
outros objetos, normalmente Entidades, Objetos de Valor e Agregados.
Os repositórios são classes que centralizam operações de criação,
alteração e remoção de objetos.
Serviços – classes que contém lógica de negócio, mas não pertence a
nenhuma Entidade ou Objeto de Valores;
Fábricas – classes responsáveis pelo processo de criação dos
Agregados ou dos Objetos de Valores
44
TDD
TDD – Test Driven Development (Desenvolvimento Dirigido por Testes) é um
estilo de desenvolvimento de software baseado em criação de testes automatizados
que falhe antes mesmo da implementação. “O TDD pode ser visto como um conjunto
de iterações realizadas para completar uma tarefa.” (Beck 2000).
O objetivo dos testes em TDD é garantir a funcionalidade final do software, ou
seja, garantir que o produto atende aquilo que foi especificado para o projeto, e
também detectar falhas que poderiam ser corrigidas anteriormente e até mesmo evitar
que estas mesmas falham sejam implementadas na produção.
O processo de desenvolvimento do TDD é:
Escrever um teste, sem mesmo ter escrito o código real a ser testado
com foco no que se deseja testar;
Executar testes e acompanhar a falha (Pode ser um código que retorne
o erro);
Escrevemos a funcionalidade do sistema que queremos testar;
Testar novamente, agora para passar (Se não passou algo saiu errado,
faça novamente o passo 3)
Refatore sua funcionalidade e a escreva por completo, faça o mesmo
no teste;
Passe para próxima etapa ou caso de uso e inicie um novo teste.
Segue os diferentes tipos de testes na área de software:
Teste de unidade (ou teste unitário): verificação das menores unidades
(métodos, classe, objeto) em um software, a fim de determinar a lógica
de uma estrutura ou sob análise;
Teste de integração: análise do funcionamento em conjunto das
diferentes partes que compõem uma aplicação;
Teste de sistema: simulação de uma situação real, em um ambiente
equivalente do de produção;
Teste de aceitação: conduzidos por um grupo de usuários finais com o
intuito de simular operações cotidianas;
Teste de regressão: verifica se as mudanças introduzidas em uma
versão resultam em efeitos colaterais nas funcionalidades pré-
existentes
A plataforma .NET Framework possui diversas alternativas para realização de testes
unitários, algumas delas são: Visual Studio Testing Framework (MS Test), NUnit
(http://www.nunit.org) e também ferramentas como o RSharper Unit Testing
(https://www.jetbrains.com/resharper/features/unit_testing.html)
45
BDD (Behavior Driven Development)
BDD é uma metodologia de desenvolvimento ágil que estimula a participação
de todos os membros da equipe, desenvolvedores, analistas e gestores do projeto. O
BDD serve para criar testes e integrar regras de negócios com a linguagem de
programação, focando no comportamento do software. Além de melhorar a
comunicação entre as equipes de desenvolvimento e testes, aumenta o
compartilhamento de conhecimento entre as mesmas, pode-se dizer que o BDD é uma
evolução do TDD, ou seja, testes orientado a desenvolvimento escreva o teste faça o
teste depois faça o código.
De acordo com (Renato Groff) “O ciclo de desenvolvimento em BDD possui
uma organização bastante similar áquela adotada em TDD, diferindo apenas pela
elaboração de um teste de aceitação. Esta etapa adicional envolve a criação de user
story, a qual servirá de base para a implementação e validação de uma funcionalidade
no sistema considerado.”
Figura 24 (BDD autor Renato Groff)
Ás práticas do BDD incluem:
Envolver partes interessadas no processo através do Outside-in
Development;
Usar uma linguagem ubíqua para descrever comportamentos de uma
aplicação;
Usar Should na hora de descrever o comportamento de software seja
questionado;
Uma documentação simples usadas de forma dinâmica;
Um compartilhamento mais eficaz dos conhecimentos a respeito de um
projeto.
Para realização de testes na plataforma .NET Framework, existem diversas bibliotecas
frameowkrs que auxiliam o gerenciamento dos testes, uma delas é
46
http://www.specflow.org/ instalando o framwork no Visual
Studio é possível criar cenários de testes.
Capítulo 5. Introdução do Microsoft Azure
Microsoft Azure é uma plataforma destinada à execução de serviços baseada
nos conceito em nuvem que roda em datacenters da própria Microsoft. Tudo isso é
possível graças a:
Computação em cluster: onde um conjunto de computadores trabalha em paralelo
como se fosse um grande computador. O cluster pode ser aplicado em diversas
tarefas que exijam alto poder de processamento, tais como: Servidores Web,
Engenharia Genérica, Cálculos Científicos, Banco de Dados e Processamento de
Imagens.
Virtualização: os datacenters são suportados por milhares de máquinas virtuais que
podem aumentar ou diminuir seu poder de processamento de acordo com a demanda.
O Microsoft Azure agrupa diversos serviços em categorias, no próprio Portal de
Gerenciamento é o que você utilizará para gerenciar maior parte dos serviços Azure.
De acordo com a (Figura 25) é possível compreender melhor o quão ampla é esta
plataforma e a gama de serviços que ela tende a nos oferecer.
47
Figura 24 (serviços e aplicativos acessíveis pela internet)
48
Serviços para Desenvolvedores
O Azure oferece uma série de ferramentas para auxiliar os desenvolvedores e
profissionais de TI a manter aplicativos na nuvem. Antes de começar a falar sobre as
ferramentas, vamos entender melhor o que é IaaS, PaaS e SaaS.
SaaS – Software como Serviço (Software as a Service) é um modelo onde a utilização
de um software não está relacionado a compra de licenças, ou seja, você paga pela
utilização deste software. Um bom exemplo de SaaS é o Google Docs. O usuário não
se preocupa com a instalação ou com a atualização do serviço, nem precisa de uma
licença para usar o produto e tudo funciona por meio de internet sendo possível
acessar por qualquer dispositivo conectado.
IaaS – Infraestrutura como Serviço (Infraestructure as a Service) é um modelo
parecido com o modelo SaaS mas ao invés de contratar um software o cliente contrata
uma infraestrutura como serviço, com uma vantagem muito interessante ao modelo
tradicional, que é contratação de servidores virtuais (e outros dispositivos de
infraestrutura) ao invés de comprar servidores, roteadores, racks e etc. A tarifa é
cobrado de acordo com o número de servidores virtuais, quantidade de dados
trafegados, dados armazenados e outros itens dependendo do fornecedor que você
trabalha.
PaaS – Plataforma com serviço (Plataform as a Service) o conceito deste modelo já
muda um pouco, mas o básico do cloud computing se mantém: tudo acontece por
meio da web; Esse modelo de negócio oferece ás empresas um ambiente de
desenvolvimento de aplicações, bem como um ambiente de execução para entregá-
los. Com isso, os desenvolvedores ganham um framework para a criação ou
modificação de apps.
SDK e ferramentas do Azure
Em 2008, a primeira versão do pré-lançamento do Azure oferecia suporte apenas para
desenvolvedores .NET. Hoje, no entanto, você pode criar aplicativos do Azure em
praticamente qualquer linguagem. Atualmente, a Microsoft fornece SKDs específicos a
cada linguagem para .NET, Java, PHP, Node.js, Ruby e Python. Também há um SDK
geral do Azure que fornece suporte básico para qualquer linguagem, como C++.
Estes SDKs vão ajudá-lo a desenvolver aplicativos Azure, estes SDKs também
oferecem bibliotecas de cliente que ajudam você a criar software que usem os
serviços do Azure. Por exemplo, voe pode criar um aplicativo que leia e grave blobs do
49
Azure ou criar uma ferramenta que implante aplicativos do
Azure por meio de interfaces de gerenciamento do Azure (Rob Boucher Jr).
Com as ferramentas do Azure é possível gerenciar, compilar e implantar com
facilidade os aplicativos em escala de nuvem utilizando o Visual Studio e o Azure.
Vejamos:
ASP.NET – Desenvolva para web com o serviço de Aplicativo do Azure. Use o
ASP.NET, Node.js, Python, ou JavaScript. Implante um aplicativo web novo ou
existente usando a Implantação de Web, TFS, ou GIT;
Celular – Crie aplicativos sofisticados, de plataforma cruzada e nativos com
Aplicativos Móveis do Serviço de Aplicativo Azure.Trabalhe com dados na
nuvem ou locais e sincronize dados para uso offline, autentique usuários e
envie notificações para push personalizados de um back-end;
IaaS – Inicie um projeto do grupo de recursos do Azure de um conjunto de
modelos com foco em soluções. Visualize os recursos e parâmetros usando a
estrutura de tópicos JSON. Adicione recursos facilmente, aproveitando os
recursos de IntelliSense e validação no editor JSON;
PaaS – Passe mais tempo desenvolvendo e menos tempo instalando a
infraestrutura de nuvem. Use o Serviço de Aplicativo do Azure para criar
aplicativos Web e móveis escalonáveis para qualquer plataforma e dispositivo
rapidamente. Para situações em que você precisa de mais contorle no sistema
operacional, use o Serviços de Nuvem do Azure para criar aplicativos
gerenciáveis que contém Web front-ends e funções de trabalho para
processamento de back-end;
Análise de Código de Nuvem – Adicione a versão mais recente do módulo
analisador Microsoft.VisualStudio.Azure.CodeAnalysis do Nuget e inspecione o
conjunto de avisos detectados. Aprimore seu aplicativo com a ajuda da
comunidade de especialistas do Azure.
Gerenciamento de API
Criar e publicar Interfaces Programadoras de Aplicativos (APIs) na internet é um modo
comum de fornecer serviços a aplicativos. Se esses serviços puderem ser revendidos
(por exemplo, informações sobre clima), uma organização pode permitir que outras
partes terceiros tenham acesso a esse mesmo serviços mediante a uma taxa. Á
medida que dimensionar para dar suporte a mais parceiros, normalmente você
precisará aperfeiçoar e controlar o acesso. Alguns parceiros podem até precisar de
dados em um formato diferente. (Rob Boucher Jr)
Móvel
Se você estiver criando um aplicativo para um dispositivo móvel, o Azure pode ajudar
a armazenar dados na nuvem, autenticar usuários e enviar notificações por push sem
precisar que você precise escrever uma grande quantidade de código personalizado.
Embora certamente seja possível criar back-ends de um aplicativo usando Máquinas
Virtuais, Serviços de Nuvem ou Aplicativos Web, você pode gastar muito menos tempo
50
gravando os componentes subjacentes do serviço ao usar os
serviços do Azure. (Rob Boucher Jr)
Recuperação de Sites
O Azure Site Recovery (anteriormente Gerenciador de Recuperação Hyper-V) pode
ajudar você a proteger aplicativos importantes, coordenando a replicação e
recuperação entre locais. O Site Recovery fornece a capacidade de proteger
aplicativos com base em Hyper-V, VMware ou SAN em seu próprio local secundário. O
Azure criptografa os dados e comunicações e você tem a opção de habilitar a
criptografia também para os dados em repouso.
Como podemos ver foram citados algumas ferramentas de desenvolvimento
que o Azure disponibiliza para o mercado, mas através do site da Microsoft podemos
enxergar que existem muitas ferramentas da plataforma Azure disponibiliza para
facilitar o trabalho do desenvolvedor. Para mais informações sobre as ferramentas do
Azure https://azure.microsoft.com/pt-br/documentation/infographics/azure/ esse
infográfico mostra todos serviços e demais aplicativos não citados neste artigo.
51
Capítulo 6. Visual Studio 2015
Neste artigo apresentarei a ultima versão do Visual Studio e suas principais
mudanças, ferramentas e ambiente. Com essa nova IDE a Microsoft não somente
trouxe novidades como também optou por adquirir mudanças em sua forma de
desenvolver. No final do ano de 2015 Microsoft anuncia sua nova IDE Visual Studio
2015, esse novo ambiente de desenvolvimento integrado (ou IDE) chega junto a uma
nova edição do framework de software .NET, a 4.6, e traz como principais novidades
recursos que facilitam a criação de apps compatíveis com múltiplas plataformas.
O principal deles é o Apache Cordova, conjunto de APIs que agora é integrado
á plataforma da Microsoft. Ela permite que desenvolvedores trabalhem em seus
aplicativos para Android e IOS usando HTML, CSS e JavaScript em vez da linguagem
nativa dos programas, ou seja, desta maneira as aplicações podem ser rodadas para
outros sistemas.
“Com esse mesmo foco de desenvolvimento para outras plataformas, a MS
ainda fechou uma parceria com a Xamarin, que inclui no Visual Studio uma ferramenta
que converte aplicações . NET para fazê-las rodar em sistemas móveis que não sejam
Windows, ou seja, Android IOS, especificamente. O sistema operacional do Google,
por sinal, ainda ganhou um emulador no IDE que permite aos desenvolvedores testar
aplicações.” (Gustavo Gusmão)
As versões geral do produto do Visual Studio 2015 são as demais:
Visual Studio Community – Ferramentas gratuitas, completas e
extensíveis para desenvolvedores para criar aplicativos não
corporativos;
Visual Studio Professional – Ferramentas de desenvolvedor profissional
e serviços para desenvolvedores individuais ou pequenas equipes;
Visual Studio Enterprise – Soluções de classificação corporativa com
recursos avançados para equipes trabalhando em projetos de qualquer
tamanho ou complexidade, incluindo testes avançados e operações de
desenvolvimento.
Dentre muitas mudanças e ferramentas integradas no Visual Studio 2015, listei
algumas novidades que acho de grande importância para o desenvolvimento atual.
52
Figura 26 (Visual Studio 2015 Community)
Plataforma
O Visual Studio 2015 oferece suporte ao desenvolvimento de dispositivos móveis
compatível com várias plataformas. É possível escrever aplicativos para jogos que
IOS, Android, e Windows compartilhando com base. dentro do Visual Studio IDE.
Xamarin –Xamarin é uma estrutura móvel que permite que você escreva código
em c# que associa nativamente para IOS e Android APIs. Microsoft juntou-se em
conjunto com o Xamarin na sua versão para o Visual Studio, em uma extensão que
permite que você desenvolva para o Windows Phone, iOS, em uma única solução com
código compartilhado. Com o Xamarin, voe usará um idioma com base de código com
o deltas mínimas entre plataformas.Xamarin para o Visual Studio.
Apache Cordova – Visual Studio Tools para Apache Cordova é o resultado da
forte colaboração entre a Microsoft e o código-fonte aberto para o Apache Cordova
comunidade. As ferramentas permitem o desenvolvimento móvel entre plataformas
usando HTML, CSS e Java Script (ou Typescript). Você pode se concentrar em
Windows, iOS, e Android com uma única base de código extraindo a IDE do Visual
Studio e entre outras.
53
C# com Unity – O Unity é uma plataforma amplamente usada para
desenvolvimento de jogos 2D e 3D multiplataforma. Você pode escrever seu jogo em
C# e executá-lo nativamente no iOS, Android, Windows Phone e entre muitas outras
plataformas. O Visual Studio Tools para Unity é uma extensão que integra o Unity
com a IDE do Visual Studio. Com essa extensão, você obtém todos os recursos do
depurador, além dos recursos de produtividade para desenvolvedores do Unity e
Visual Studio IDE.
Web – O ASP.NET 5 é uma atualização importante ao MVC, Web API, SignaIR
e executado no Windows, Mac e Linux ASP.NET 5 foi projetado desde o início para
fornecer a você um .NET Lean e combinável de pilhas para criação de aplicativos
modernos baseados em nuvem.
Git Hub – GitHub é usado para que os desenvolvedores possam hospedar
seus projetos e compartilhar os mesmos. Para controle de versão é usado o Git. O
GitHub costuma ser preferido entre os seus utilizadores por oferecer também alguns
recursos de redes sociais, já que é possível seguir projetos de outros desenvolvedores
e ainda comentar sobre todos eles. Além de ser possível compartilhar fontes de
projetos, trocar idéias, comentar sobre outros códigos e pegar o código de alguém
para modificar. A integração do Visual Studio com o GitHub é possível gerenciar
código-fonte em dispositivos em repositórios Git Hospedados. Ou use o Visual Studio
Team Services para gerenciar o código junto com bugs e itens de trabalho para todo o
projeto.
54
Conclusão
Com a grande expansão no mercado de tecnologia e o rápido crescimento a
procura por softwares que possam suprir as necessidades do cliente, cabe ao papel
do desenvolvedor encontrar meios que possam facilitar seu trabalho e atender tais
necessidades do cliente customizando tempo e esforço. Assim surgem diversas
ferramentas no mercado que tendem a ajudar o desenvolvedor encontrar melhores
soluções para seus problemas e agilizando seu trabalho, desde a ferramentas pagas
quanto a ferramentas gratuitas no mercado.
Eu encontrei na plataforma .NET a facilidade em poder desenvolver minhas
aplicações e enxergar de forma clara e objetiva a IDE do Visual Studio, que desde
aqueles programadores iniciantes aos mais seniores do mercado, tem a facilidade de
escrever seus códigos e poder ver que a cada vez mais, mais e mais melhorias vão
surgindo nesta plataforma. Não, não estou fazendo marketing ou puxando “sardinha”
para Microsoft, meu objetivo é transmitir meu conhecimento naquilo em que pude
aprender a usufruir das melhores formas possíveis, e sendo assim, ajudar aqueles que
pretendem começar deste jeito.
Aqui pude mostrar diversas aplicações que podem ser desenvolvida em .NET e
como é fácil começar aprender. Espero que este artigo ajude-os assim como muitos
outros tem me ajudado na minha busca pelo aprimoramento do conhecimento.