introdução a plataforma

54
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!

Upload: jessica-nathany-carvalho-freitas

Post on 12-Apr-2017

1.111 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Introdução a plataforma

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!

Page 2: Introdução a plataforma

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

Page 3: Introdução a plataforma

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

Page 4: Introdução a plataforma

4

26 .......................................... Visual Studio 2015 Community

Page 5: Introdução a plataforma

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

Page 6: Introdução a plataforma

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)

Page 7: Introdução a plataforma

7

Page 8: Introdução a plataforma

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.

Page 9: Introdução a plataforma

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.

Page 10: Introdução a plataforma

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.

Page 11: Introdução a plataforma

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.

Page 12: Introdução a plataforma

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.

Page 13: Introdução a plataforma

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.

Page 14: Introdução a plataforma

14

Figura 1 (Namespace)

Page 15: Introdução a plataforma

15

Figura 2 (Plataforma .NET Framework)

Page 16: Introdução a plataforma

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)

Page 17: Introdução a plataforma

17

Figura 4 (Código da Tela de Cadastro Windows Form)

Page 18: Introdução a plataforma

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)

Page 19: Introdução a plataforma

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

Page 20: Introdução a plataforma

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

Page 21: Introdução a plataforma

21

Figura 8 (Estrutura de ficheiro de uma aplicação web)

Page 22: Introdução a plataforma

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)

Page 23: Introdução a plataforma

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

Page 24: Introdução a plataforma

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.

Page 25: Introdução a plataforma

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)

Page 26: Introdução a plataforma

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

Page 27: Introdução a plataforma

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)

Page 28: Introdução a plataforma

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)

Page 29: Introdução a plataforma

29

Figura 16 (ASPX e Razor)

Page 30: Introdução a plataforma

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)

Page 31: Introdução a plataforma

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)

Page 32: Introdução a plataforma

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.

Page 33: Introdução a plataforma

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)

Page 34: Introdução a plataforma

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.

Page 35: Introdução a plataforma

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.

Page 36: Introdução a plataforma

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.

Page 37: Introdução a plataforma

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)

Page 38: Introdução a plataforma

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)

Page 39: Introdução a plataforma

39

Figura 21 (Estrutura JSON string)

Figura 22 (Estrutura JSON number)

Conforme as imagens acima, podemos entender que o JSON é estruturado da

seguinte maneira:

Page 40: Introdução a plataforma

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;

Page 41: Introdução a plataforma

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.

Page 42: Introdução a plataforma

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;

Page 43: Introdução a plataforma

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

Page 44: Introdução a plataforma

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)

Page 45: Introdução a plataforma

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 é

Page 46: Introdução a plataforma

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.

Page 47: Introdução a plataforma

47

Figura 24 (serviços e aplicativos acessíveis pela internet)

Page 48: Introdução a plataforma

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

Page 49: Introdução a plataforma

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

Page 50: Introdução a plataforma

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.

Page 51: Introdução a plataforma

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.

Page 52: Introdução a plataforma

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.

Page 53: Introdução a plataforma

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.

Page 54: Introdução a plataforma

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.