Visual Studio 2010 e C# 4

Post on 10-May-2015

1.932 views 0 download

Transcript of Visual Studio 2010 e C# 4

Visual Studio 2010 e C# 4.0

Carlos dos Santoscds@cds-software.com.br

Blog: www.carloscds.netTwitter: @cdssoftware

Microsoft MVP C#CDS Informática Ltda.

Microsoft Gold Certified Partner Microsoft Visual Studio Team System Inner Circle Partner

*Agenda

*Um pouco de história...

*Novidades do Visual Studio 2010

*Objetos Tipados Dinamicamente

*Parâmetros Opcionais e Nomeados

*Programação Paralela

*Entity Framework 4

*WPF

*Silverlight

.NET 1.0 .NET 1.1 .NET 2.0

3.0

3.5

.NET 4

200213 de Fevereiro

20033 de Abril

2008 CTP2005-08

CLR 1.0 CLR 1.1 CLR 2.0 CLR 4

SP1

*Um pouco de história…

*O que é a plataforma .Net

Base Class Libraries

CLRJIT & NGEN

Garbage Collector

Security Model

Exception Handling

Loader & Binder

WPF Win Forms DLR ASP.NET WCF E muito

mais!LINQ

*Quais são as novidades?• Breakpoint Grouping• Visual Enhancements• Dynamic Data Tooling• WPF-based Editor• Breakpoint Labeling• Call Hierarchy• Improved WPF Tooling• Historical Debugging• Inline Call Tree• Quick Search• Concurrency Profiler• Breakpoint

Import/Export• Document Map Margin• Parallel Stacks Window• Improved Multi-Monitor• Parallel Tasks Window• Extensible Test Runner• Generate From Usage

• Highlight References• Click-Once Enchacements for

Office• Web Deploy• SharePoint Tooling• Minidump Debugging• JQuery Intellisense• 64-bit Mixed-Mode• HTML Snippets• Web.config Transformation• Code Contracts• Parallel Extensions• BigInteger• Variance Annotations• Tuples• DLR• SortedSet• F#• Memory Mapped Files• Registry Improvements

• Globalization data updated to unicode 5.1• Resource Managed Improvements• Compression Improvements• PLINQ• Parallel Task• Velocity• WCF4• WF4• WPF4• ADO.NET Data Services 1.5• ASP.NET Ajax 4.0• ASP.NET MVC• ASP.NET WebForms 4.0• CLR4• C# 4.0• VB10• MEF• Entity Framework 4.0• MEF

PythonBinder

RubyBinder

COMBinder

JavaScript

Binder

ObjectBinder

*Programação Dinâmica .NET

Dynamic Language Runtime

Expression TreesDynamic Dispatch

Call Site Caching

IronPython

IronRuby C# VB.NET Outros…

* Entendendo o Dynamic

*Tipos são “estaticamente tipados como dinâmicos”

*Tipo dinâmicos são System.Object (cuidado com boxing e unboxing)

*Tipos dinâmicos se propagam nas chamadas

*Tipo dinâmicos não possuem checagem em tempo de compilação e nem Intelisence

*Como o Dynamic funciona:

CLR

ExeCompile

RunBind call

Expression Tree

Dynamic Call

Delegate

DLR Cac

he

COM Binder

IronPython Binder

C# Runtime Binder

*Objetos Tipados Dinamicamente

Calculator calc = GetCalculator();int sum = calc.Add(10, 20);

object calc = GetCalculator();Type calcType = calc.GetType();object res = calcType.InvokeMember("Add", BindingFlags.InvokeMethod, null, new object[] { 10, 20 });int sum = Convert.ToInt32(res);

ScriptObject calc = GetCalculator();object res = calc.Invoke("Add", 10, 20);int sum = Convert.ToInt32(res);

dynamic calc = GetCalculator();int sum = calc.Add(10, 20);

Estaticamente tipado como

dinâmico

Invocação dinâmica de

método

Conversão dinâmica

*Objetos Tipados Dinamicamente

dynamic x = 1;dynamic y = "Hello";dynamic z = new List<int> { 1, 2, 3 };

Tipo em tempo de compilação:

dynamic

Tipo em tempo de execução:

System.Int32

Quando operandos são dynamic…• Seleção do membro adiado para tempo de execução• Em tempo de execução, os tipos são subtituídos• O tipo estático resultante da operação é dynamic

public static class Math{ public static decimal Abs(decimal value); public static double Abs(double value); public static float Abs(float value); public static int Abs(int value); public static long Abs(long value); public static sbyte Abs(sbyte value); public static short Abs(short value); ...}

double x = 1.75;double y = Math.Abs(x);

dynamic x = 1.75;dynamic y = Math.Abs(x);

*Objetos Tipados Dinamicamente

Método escolhido em tempo de compilação:

double Abs(double x)

Método escolhido em tempo de

execução: double Abs(double

x)

dynamic x = 2;dynamic y = Math.Abs(x);

Método escolhido em tempo de

execução: int Abs(int x)

12

*Objetos Tipados Dinamicamente

demo

*Parâmetros Opcionais e Nomeados

public StreamReader OpenTextFile( string path, Encoding encoding, bool detectEncoding, int bufferSize);

public StreamReader OpenTextFile( string path, Encoding encoding, bool detectEncoding);

public StreamReader OpenTextFile( string path, Encoding encoding);

public StreamReader OpenTextFile( string path);

Método principal

Overloads secundários

Chama o método principal com

valores default

*Parâmetros Opcionais e Nomeados

public StreamReader OpenTextFile( string path, Encoding encoding, bool detectEncoding, int bufferSize);

public StreamReader OpenTextFile( string path, Encoding encoding = null, bool detectEncoding = true, int bufferSize = 1024);

Parâmetros opcionais

OpenTextFile("foo.txt", Encoding.UTF8);OpenTextFile("foo.txt", Encoding.UTF8, bufferSize: 4096);

Argumento nomeado

OpenTextFile( bufferSize: 4096, path: "foo.txt", detectEncoding: false);

Argumentos nomeados devem

vir por último

Argumentos não-opcionais DEVEM ser especificados

Argumentos avaliados na ordem

escrita

Argumentos nomeados podem

aparecer em qualquer ordem

*Programação Paralela

*Aproveitar a capacidade dos processadores com vários núcleos

*Suporte do .Net Framework 4.0:* Parallel For / ForEach

* Task Parallel Library (TPL)* System.Threading

* System.Treading.Task

* Parallel Linq (PLINQ)

* Estururas de dados em: * System.Collections.Concurrent

16

*Programação Paralela

demo

*Programação Orientada a Teste (TDD)

*Escreva os testes antes do código

*Aprovar, Refactorizar

*Ajuda do Intellisense

*Geração do Código da Classe

*Geração dos Metodos

18

*Test Driven Development

demo

*Entity Framework 4

SQL Provider Oracle Provider ...

Entity Provider

Modelo Conceitual

Modelo Físico

Mapeamento

ADO.NET API ORM API

Connection

Command

DataReader

ObjectContext

ObjectQuery

*ADO.NET x Entity Framework

ADO.Net

Entity Framework

*Entity Framework 4.0

*Ferramenta de designer melhorada (VS2010)

*Mais controle e flexibilidade;

*POCO (Plan Old CLR Objects - persistence Ignorance);

*Desenvolvimento N-Tier (em camadas);

*Lazy Loading (dados carregados por demanda);

22

*Entity Framework 4

demo

*WPF *Desenvolva aplicações com visual incrível

*Total liberdade para o designer

*Integração entre o designer e o desenvolvedor

*Ferramentas específicas para o designer: Expression Blend

*Visual criado usando XAML

24

*WPF

demo

*Silverlight*Aplicações web com visual incrível

*Poder do XAML aplicado a web

*Smooth Streaming – alta qualidade nos vídeos (http://www.iis.net/media/experiencesmoothstreaming)

*Aceleração via GPU (usa processamento local do usuário)

*Instalação no client (out of browser)

*Obtenha feedback do cliente sem escrever a aplicação (Sketch Flow)

26

*Silverlight

demo

*Produtividade

Entendendo

Navegando

Testando Depurando

Modificando

Escrevendo

Analyze relationships and structure

Quick information

Symbol navigation

File navigation

Code generation

Consume first development

Refactor code

Organize code

Stepping behavior

LINQ debugging

Unit testing

TDD

*O que mais?

*Managed Extensibility Framework?

*WPF / Silverlight

*ADO.NET Data Services

*Azure

*Domain Specific Language

*Visual Studio Team System

*Links Úteis

C# 4.0 Samples and Whitepaper

http://code.msdn.microsoft.com/csharpfutureVisual C# Developer Center

http://csharp.net

SharpCode

http://www.sharpcode.com.br

Meu Blog

http://www.carloscds.net

*Quer usar a plataforma .Net ?

• Temos consultoria especializada em treinamento para equipes de desenvolvimento;

• Migração de Delphi para C#;• Migração de PHP para Asp.Net;• Migraçao de WebServices para WCF;• Implementação de Visual Studio Team System;• Desenvolvimento Asp.Net, Silverlight,

Windows Mobile;

www.cds-software.com.br

Perguntas ?

Carlos dos Santoscds@cds-software.com.br

www.carloscds.net

@cdssoftware