Zusammenfassung der Ressource
Exam 70-483
- 1 - Manage program flow
Anmerkungen:
- Resumo do capítulo
■ Multithreading pode ajudá-lo a criar programas que são ágeis e escaláveis. Você pode usar TPL, classe Parallel, PLINQ para isso. As novas palavras-chave async / await ajudam você a escrever código assíncrono.
■ Em um ambiente multithread, é importante gerenciar a sincronização de dados compartilhados. Você pode fazer isso usando a instrução lock.
■ C# oferece instruções para: ==> tomada de decisões: if, switch, operador condicional e operador null-coalescing (??) ==> iteração (for, foreach, while, do-while) ==> declarações de salto/jump (breack, continue, goto, return e throw).
■ delegates são objetos que apontam para um método e podem ser utilizados para chamar o método. As expressões lambda são uma sintaxe abreviada para a criação embutida de métodos anônimos .
■ Os eventos são uma camada feita sobre delegates que ajudam com a criação de uma arquitetura de "publicador-assinante".
■ As exceções são a melhor maneira para trabalhar com erros no .NET Framework. Você pode lançar exceções (throw), pegá-las com catch, e executar código em um bloco finally.
Anlagen:
- 1.1 - Implement multithreading and asynchronous processing
Anmerkungen:
- Resumo do Objetivo 1.1
■ Uma thread pode ser visto como uma CPU virtualizada;
■ Utilizar várias threads pode melhorar a capacidade de resposta e permite que você faça uso de múltiplos processadores.
■ A classe Thread pode ser usada se você quiser criar suas próprias threads de forma explícita. Caso contrário, você pode usar o ThreadPool para a fila trabalho e deixar o runtime manipular as coisas;
■ Um objeto Task encapsula um trabalho que tem de ser executado. Tasks são a maneira recomendada para criar código multithreaded.
■ A classe Parallel pode ser usado para executar um código em paralelo.
■ PLINQ é uma extensão do LINQ para executar consultas em paralelo.
■ Os novos operadores async e await podem ser usados para escrever código assíncrono mais facilmente.
■ Coleções concorrentes podem ser usadas para trabalhar com segurança com dados em um ambiente multithreaded (acesso concorrente).
Anlagen:
- Threads
Anmerkungen:
- Thread vs Tasks https://channel9.msdn.com/Blogs/bruceky/How-to-Parallelize-Your-Application-Part-2-Theads-v-Tasks http://www.codeproject.com/Articles/362996/Multi-core-programming-using-Task-Parallel-Library
Anlagen:
- Task (TPL - Task Parallel Library)
Anmerkungen:
- https://channel9.msdn.com/Blogs/bruceky/How-to-Parallelize-Your-Application-Part-2-Theads-v-Tasks
Anlagen:
- Parallel class
Anlagen:
- async and await
Anlagen:
- PLINQ
Anlagen:
- Concurrent collections
Anlagen:
- 1.2 - Manage multithreading
Anmerkungen:
- Embora multithreading pode oferecer uma série de vantagens, não é fácil escrever um aplicativo multithread. Problemas podem acontecer quando diferentes threads acessam alguns dados compartilhados. O que deve acontecer quando mais de uma thread tenta alterar alguma coisa ao mesmo tempo? Para fazer este trabalho com sucesso, a sincronização de recursos (synchronizing resources) é importante.
- Resumo do objetivo 1.2:
■ Ao acessar dados compartilhados em um ambiente multithread, você precisa sincronizar o acesso para evitar erros ou dados corrompidos.
■ Use a instrução de bloqueio lock em um objeto privado para sincronizar o acesso a um pedaço de código.
■ Você pode usar a classe Interlocked para executar operações atômicas simples.
■ Você pode cancelar tarefas usando a classe CancellationTokenSource com um CancellationToken.
Anlagen:
- Synchronizing resources
Anlagen:
- Canceling Tasks
Anlagen:
- 1.3 - Implement program flow
Anmerkungen:
- ■ Expressões booleanas podem usar vários operadores: ==, =, <,>, <=,> =,!. Esses operadores podem ser combinadas usando AND (&&), OR (||) e XOR (^).
■ Você pode usar a instrução if-else para executar código dependendo de uma condição específica.
■ A instrução switch pode ser usado quando um calor combina com algumas opções.
■ O loop for pode ser usado quando ao iterar sobre uma coleção, você sabe o número de iterações com antecedência.
■ Um loop while pode ser usado para executar algum código enquanto uma condição é verdadeira; deve ser utilizado do-while fazer-quando o código deve ser executado pelo menos uma vez.
■ foreach pode ser usado para iterar sobre coleções.
■ Jump, como break, Goto e continue podem ser usados para transferir o controle para outra linha do programa.
Anlagen:
- Boolean expressions
Anlagen:
- Making decisions
Anlagen:
- Iterating across collections
Anlagen:
- 1.4 - Create and implement events and callbacks
Anmerkungen:
- Resumo do objetivo
■ Delegates são um tipo que define uma assinatura de método e pode incluir uma referência a um método.
■ Delegates podem ser instanciados, passado por parametro, e invocada.
■ As expressões lambda, também conhecidas como métodos anônimos, usam o operador => e uma forma compacta de criar métodos inline.
■ Os eventos são uma camada de "açúcar sintático" em cima de delegates para implementar facilmente o padrão de "publicador-assinante".
■ Os eventos podem ser provocados apenas a partir da classe declarante. Usuários de eventos só podem remover e adicionar métodos da lista de invocação.
■ Você pode personalizar eventos, adicionando um accessor evento personalizado e diretamente usando o tipo de delegate subjacente.
Anlagen:
- Delegates
Anlagen:
- Lambda expressions
Anlagen:
- Events
Anlagen:
- 1.5 - Implement exception handling
Anlagen:
- Handling exceptions
Anmerkungen:
- Resumo do Objetivo
■ No .NET Framework, vc deve usar exceções para relatar erros em vez de códigos de erro.
■ As exceções são objetos q contêm dados sobre o motivo da exceção.
■ Vc pode usar um bloco try com um ou mais blocos catch p/ lidar com diferentes tipos de exceções.
■ Vc pode usar um bloco finally p/ especificar o código que deve sempre ser executado após, se uma exceção ocorreu ou não.
■ Vc pode usar a palavra-chave throw p/ gerar uma exceção.
■ Vc pode definir suas próprias exceções personalizadas qdo tiver certeza de q os usuários de seu código vão lidar com isso de uma maneira diferente. Caso contrário, vc deve usar as exceções do .NET Framework padrão.
Anlagen:
- Throwing exceptions
Anlagen:
- Custom exceptions
Anlagen:
- 2 - Create and use Types
Anmerkungen:
- ■ C # usa tipos, tais
como classe, struct, interface e enum. Tipos podem ter membros tais como métodos,
eventos, campos, propriedades, propriedades indexadas e construtores.
■ Ao trabalhar com tipos, às vezes você precisa
fazer conversão (cast) entre eles. Isso pode ser feito de forma implícita ou
explicitamente. Ao criar seus próprios tipos, você pode adicionar suporte para
esses tipos de conversões.
■ Você usa acessores como public, private,
protected, internal e internal protected para impor encapsulamento e
acessibilidade. As propriedades podem ser usadas para encapsular os dados.
■ Uma hierarquia de objeto pode ser criado por
herança, e você pode ter herança de interface e de classe. Marcando membros
como virtual, uma classe derivada pode substituir o membro.
■ Reflection é o processo de inspeção de
metadados em tempo de execução. Os atributos podem ser utilizados para
adicionar a um tipo de metadados.
■ C# é uma linguagem gerenciada, o que significa
que um coletor de lixo certifica-se de que todos os objetos gerenciados são
liberados na memória sempre que eles não estão mais em uso.
■ Strings podem ser usadas para o texto. O tipo
string é imutável. O .NET Framework oferece o StringBuilder para manipular
grandes quantidades de texto. Strings podem ser pesquisadas, enumerado, e
formatado para exibição.
Anlagen:
- 2.1 - Create Types
Anmerkungen:
- Resumo do Objetivo
■ Tipos em C# podem ser um tipo de valor ou um tipo de referência.
■ Tipos genéricos usam um parâmetro de tipo para tornar o código mais flexível.
■ Construtores, métodos, propriedades, campos e as propriedades de indexador pode ser usado para criar um tipo.
■ Parâmetros opcionais e nomeados podem ser usados ao criar e chamar métodos.
■ Métodos de Sobrecarga (overloading) permitem um método aceitar parâmetros diferentes.
■ Os métodos de extensão podem ser usados para adicionar uma nova funcionalidade para um tipo existente.
■ Overriding (passar por cima) permite redefinir um método de uma classe base em uma classe derivada.
Anlagen:
- choosing a type to create and add bahaviors
Anlagen:
- princípios p/ projetar classes
Anlagen:
- generics
Anlagen:
- extending existing types
Anlagen:
- 2.2 - Consume Types
Anmerkungen:
- Resumo do objetivo
■ Boxing ocorre qdo um tipo de valor é tratado como um tipo de referência.
■ Ao converter entre tipos, vc pode ter uma conversão implícita ou explícita.
■ Uma conversão explícita é chamado de casting e requer sintaxe especial.
■Vc pode criar as suas próprias conversões implícias e explícitas definidas pelo usuário.
■ O .NET Framework oferece vários métodos auxiliares para a conversão de tipos. ■ A palavra-chave dynamic pode ser utilizado para facilitar a tipagem estática de C# e melhorar a interoperabilidade com outras linguagens.
Anlagen:
- Box and unbox
Anlagen:
- Convert between different types.
Anlagen:
- dynamic keyword
Anlagen:
- 2.3 - Enforce Encapsulation
Anmerkungen:
- ■ O encapsulamento é importante em software orientado a objetos. Ela esconde detalhes internos e provê a usabilidade de um tipo. ■ Os dados podem ser encapsulados com uma propriedade. ■ Properties pode ter tanto um get e um acessor set que pode executar código adicional, comumente conhecido como getters e setters. ■ Tipos e elementos do tipo pode ter modificadores de acesso para restringir a acessibilidade. ■ Os modificadores de acesso são public, internal, protected, protected internal e private. ■ Implementação explícita da interface pode ser usada para ocultar informações ou para implementar interfaces com assinaturas de membros duplicados.
Anlagen:
- access modifiers
Anlagen:
- properties.
Anlagen:
- explicit interface implementation
Anlagen:
- 2.4 - Create and implement class hierarchy
Anmerkungen:
- ■ Herança é o
processo em que uma classe é derivada de uma outra classe ou de interface.
■ Uma interface
especifica os elementos públicas que um tipo deve implementar.
■ Uma classe pode
implementar várias interfaces.
■ A classe base
pode marcar métodos como virtual; uma classe derivada pode substituir esses
métodos para adicionar ou substituir comportamento.
■ Uma classe pode
ser marcado como abstrata por isso não pode ser instanciado e só pode funcionar
como uma classe base.
■ Uma classe pode
ser marcado como selada e por isso não pode ser herdada.
■ O .NET Framework
oferece interfaces padrão como IComparable, IEnumerable, IDisposable e
IUnknown.
Anlagen:
- design and implement interfaces
Anlagen:
- create and use base classes
Anlagen:
- standard .NET Framework interfaces
Anlagen:
- 2.5 - Find, execute and create types at runtime by using reflection
Anmerkungen:
- Resumo do Objetivo:
■ Assembly C#
armazena tanto código quanto metadados.
■ Attributes são um
tipo de metadados que podem ser aplicados em código e consultados em tempo de execução.
■ Reflection é o
processo de inspecionar os metadados de um aplicativo C#.
■ Através de
Reflection você pode criar tipos, chamadas de métodos , ler as propriedades, e
assim por diante.
■ O CodeDOM pode
ser usado para criar uma unidade de compilação em tempo de execução. Ele pode
ser compilado ou convertido em um arquivo de código fonte.
■ Árvores de
expressão descrevem um pedaço de código. Elas podem ser convertidas para algo mais (por exemplo, SQL) ou eles podem ser compilado e executado.
Anlagen:
- create and use attributes
Anlagen:
- Generate code at runtime
Anlagen:
- reflection to inspect and execute code at runtime
Anlagen:
- 2.6 -Manage the object life cycle
Anlagen:
- Implement and use IDisposable
Anlagen:
- Manage unmanaged resources
Anlagen:
- Understanding garbage collector
Anlagen:
- 2.7 - Manipulate strings
Anmerkungen:
- ■ Uma string é um
tipo de referência imutável.
■ Ao fazer muita
manipulação de string, você deve usar um StringBuilder.
■ A classe String
oferece uma série de métodos para lidar com strings como IndexOf, LastIndexOf,
StartsWith, EndsWith, e Substring.
■ Strings podem ser
enumeradas como um conjunto de caracteres.
■ A formatação é o
processo de exibir um objeto como uma string.
■ Você pode usar
formatação de strings para alterar como um objeto é convertido em uma string.
■ Você pode
implementar formatação para seus próprios tipos.
Anlagen:
- Manipulate strings
Anlagen:
- strings in .Net Framework
Anlagen:
- Format strings
Anlagen:
- 3 - Debug applications and implement security
Anmerkungen:
- Resumo do capítulo
■ Validar entrada de aplicação é importante para garantir a estabilidade e segurança do
seu aplicativo. Você pode usar as funções Parse, TryParse, e Convert para analisar a entrada do usuário. Expressões Regulares podem ser usadas para os
padrões correspondentes.
■ Criptografar utilizando algorigmos simétricos e assimétricos juntamente com hash para proteger os dados.
■ permissões de acesso Código pode ser usado para restringir os tipos de perações de um
programa pode executar.
■ Um assembly é uma
unidade independente que contém o código do aplicativo e metadados. Um assembly
pode ser assinado, com controle de versão, e compartilhada por colocá-lo no GAC.
■ Ao selecionar as configurações de compilação corretas, você pode ter saída de informações adicionais para criar arquivos de banco de programa que pode ser usado para depurar um aplicativo.
■ Ao usar o logging, tracing e contadores de desempenho, você pode monitorar um aplicativo enquanto ele está em produção.
Anlagen:
- 3.1 - Validate application input
Anmerkungen:
- Resumo do Objetivo
■ Validação
de entrada (input) de aplicação é importante para proteger seu aplicativo
contra erros e ataques.
■ A integridade dos
dados deve ser gerenciada tanto pelo seu aplicativo e seu armazenamento de
dados.
■ O Parse, TryParse
e Convert são funções podem ser usadas para converter entre os tipos.
■ As expressões
regulares, ou regex, podem ser usadas para corresponder à entrada contra um
padrão especificado ou substituir caracteres especificados com outros valores.
■ Ao receber
arquivos XML e JSON, é importante para validá-los usando os tipos internos do
.net, tais como com JavaScriptSerializer e XML Schemas.
Anlagen:
- regular expressions for input validation
Anlagen:
- Parse, TryParse, and Convert
Anlagen:
- Manage data integrity
Anlagen:
- why validating application input is important
Anlagen:
- Validating JSON and XML
Anlagen:
- 3.2 - Perform symmetric and asymmetric encryption
Anmerkungen:
- Resumo do Objetivo
■ Um algoritmo simétrico usa a mesma chave para criptografar e descriptografar
dados.
■ Um algoritmo assimétrico usa uma chave pública e privada que são matematicamente ligados.
■ Hashing é o processo de conversão de uma grande quantidade de dados em um código de hash menor.
■ Os certificados digitais podem ser usados para verificar a autenticidade de um autor.
■ CAS são usados para restringir os recursos e operações de um aplicativo pode acessar e executar.
■ System.Security.SecureString pode ser utilizada para manter os dados sensíveis
string na memória.
Anlagen:
- symmetric and asymmetric encryption algorithms
Anlagen:
- encryption in the .NET Framework
Anlagen:
- hashing.
Anlagen:
- Manage and create certificates
Anlagen:
- Secure string data
Anlagen:
- Using code access permissions
Anlagen:
- 3.3 - Manage assemblies
Anmerkungen:
- Resumo do objetivo
■ Um assembly é uma unidade compilada do código que contém metadados.
■ Um assembly pode ser fortemente assinado para se certificar de que ninguém pode mexer com o conteúdo.
■ Assemblies assinados podem ser colocados no GAC.
■ Um assembly pode ser versionado, e aplicações irão utilizar a versão do assembly
que foram desenvolvidos. É possível usar os arquivos de configuração para alterar estas ligações.
■ O assembly WinMD é um tipo especial de assembly que é usado pelo WinRT para mapear linguagens não-nativas para os componentes do WinRT nativas.
Anlagen:
- Version assemblies and implement side-by-side hosting
Anlagen:
- Put an assembly in the GAC
Anlagen:
- Sign assemblies using strong names
Anlagen:
- Explain what an assembly is
Anlagen:
- Create a WinMD assembly
Anlagen:
- 3.4 - Debug an application
Anmerkungen:
- Resumo do objetivo
■ Configurações de build do Visual Studio podem ser usadas para configurar o
compilador.
■ Uma compilação de
Debug (depuração) gera uma versão não otimizada do código que contém instruções
adicionais para ajudar a depuração.
■ Uma releaase build tem código otimizado que pode ser implantado em uma produção ambiente.
■ Diretivas do compilador pode ser usado para dar instruções extras para o compilador. Você
pode usá-los, por exemplo, para incluir o código apenas em determinadas configurações de compilação ou para suprimir certas advertências.
■ Um arquivo program database (PDB) contém informações extras que são necessárias ao depurar um aplicativo.
Anlagen:
- Build configurations
Anlagen:
- Create and manage compiler directives
Anlagen:
- Manage program database files and symbols
Anlagen:
- 3.5 - Implement diagnostics in an application
Anmerkungen:
- Resumo do Objetivo
■ Logging e tracing são importantes para monitorar um aplicativo que está em produção e deve ser implementada desde o
início.
■ Você pode usar as
classes Debug e TraceSource para log e rastrear mensagens. Ao configurar diferentes listeners, você pode configurar seu aplicativo para saber quais dados para enviar para onde.
■ Quando você estiver enfrentando problemas de desempenho, você pode Profiling seu aplicativo
para encontrar a causa raiz e corrigi-lo.
■ Contadores de desempenho podem ser usados para monitorar constantemente a saúde de seus aplicativos.
Anlagen:
- Implement logging and tracing
Anlagen:
- Create and monitor performance counters
Anlagen:
- Profile your applications
Anlagen:
- 4 - Implement data access
Anmerkungen:
- Resumo do capítulo
■ Você pode usar classes como Drive, DriveInfo, Directory, DirectoryInfo, File e FileInfo para trabalhar com o sistema de arquivos. All I / O utilizam Streams, que são
uma abstração sobre uma série de bytes.
■ Asynchronous code é importante para operações de longa duração para melhorar a capacidade de resposta e escalabilidade.
■ Quando se trabalha com um banco de dados, você pode usar ADO.NET para estabelecer uma
conexão, executar comandos, e recuperar os resultados.
■ O .NET Framework tem suporte para trabalhar com XML usando classes tais como
XmlWriter, XmlReader e XmlDocument, ou usando LINQ to XML.
■ LINQ oferece uma maneira uniforme de consultar diferentes fontes de dados. ■ Serialização e desserialização é o processo de transformar um objeto em um arquivo simples ou uma série de bytes, e vice-versa. ■ O .NET Framework oferece um conjunto abrangente de coleções que podem ser usados em diferentes cenários.
Anlagen:
- 4.1 - Perform I/O operations
Anmerkungen:
- Resumo do Objetivo
■ Você pode trabalhar com drives(unidades) usando Drive e DriveInfo.
■ Para pastas(diretórios), você pode usar Directory e DirectoryInfo.
■ File e FileInfo oferecem métodos para trabalhar com arquivos.
■ A classe estática Path pode ajudá-lo na criação e análise de caminhos de arquivo.
■ Streams são uma forma abstrata de trabalhar com uma série de bytes.
■ Há muitas implementações de Stream para lidar com arquivos, operações de rede, e quaisquer outros tipos de I / O.
■ Lembre-se que o sistema de arquivos podem ser acessados e alterados por vários usuários ao mesmo tempo. Você precisa manter isso em mente ao criar aplicativos confiáveis.
■ Ao executar solicitações de rede, você pode usar as classes WebRequest e WebResponse o namespace System.Net.
■ Asynchronous/ podem ajudar a criar uma melhor
experiência do usuário e uma aplicação mais escalável.
Anlagen:
- Work with files and path
Anlagen:
- Work with streams
Anlagen:
- file system / Read and write from the network
Anlagen:
- Implement asynchronous I/O operations
Anlagen:
- Work with directories (folders)
Anlagen:
- 4.2 - Consume data
Anmerkungen:
- Resumo do Objetivo
■ ADO.NET usa um modelo de provedor que permite que você se conecte a diferentes tipos de bancos de dados.
■ Você usar um objeto DbConnection para criar uma conexão com um banco de dados.
■ Você pode executar consultas que criar, atualizar, ler e apagar dados (CRUD) a partir de um banco de dados.
■ Quando a criação de consultas, é importante o uso de consultas com parâmetros para que você evitar a injeção SQL.
■ Você pode consumir um serviço web a partir do seu aplicativo criando um proxy para ele.
■ Você pode trabalhar com XML usando o XmlReader, XmlWriter, XPathNavigator e as classes XmlDocument.
Anlagen:
- Retrieve and update data in a database
Anlagen:
- Consume JSON and XML
Anlagen:
- Access web services
Anlagen:
- working with database
Anlagen:
- 4.3 - Query and manipulate data and objects by using LINQ
Anmerkungen:
- Resumo do objetivo
■ LINQ, que significa Language Integrated Query, é uma maneira uniforme de escrever consultas contra diversas fontes de dados.
■ Recursos de linguagem importantes quando se trabalha com consultas LINQ são tipagem implícita, sintaxe de inicialização de objetos, lambdas, métodos de extensão e tipos anônimos.
■ Você pode usar LINQ com uma sintaxe baseada em método e a sintaxe de consulta.
■ Consultas LINQ são diferidas em execução, o que significa que a consulta é executada quando é
realizada a primeira iteração.
■ Você pode usar o LINQ to XML para consultar, criar e atualizar XML.
Anlagen:
- What is LINQ?
Anlagen:
- Using LINQ queries
Anlagen:
- LINQ to XML
Anlagen:
- 4.4 - Serialize and deserialize data
Anmerkungen:
- Resumo do Objetivo
■ A serialização é o processo de transformar um objeto em um arquivo simples ou uma
série de bytes.
■ Deserialization leva uma série de bytes ou um arquivo simples e transforma-lo em um objeto.
■ Serialização XML
pode ser feito usando o XmlSerializer.
■ Você pode usar
atributos especiais para configurar o XmlSerializer.
■ Serialização binária pode ser feita usando a classe BinaryFormatter.
■ WCF utiliza um outro tipo de serialização que é executada pelo DataContractSerializer.
■ JSON é um formato de texto compacto que pode ser criado usando o DataContractJsonSerializer.
Anlagen:
- serialization and deserialization
Anlagen:
- XmlSerializer
Anlagen:
- Using binary serialization
Anlagen:
- Using a DataContract an JSON
Anlagen:
- 4.5 - Store data and retrieve data from collections
Anmerkungen:
- Resumo do Objetivo
■ O .NET Framework oferece coleções genéricas e não genéricas. Quando possível, você deve usar a versão genérica.
■ Array é o tipo mais básico para armazenar uma quantidade de itens. Ele tem um tamanho fixo.
■ List é uma coleção que pode crescer, quando necessário. É a coleção mais utilizada.
■ Dictionary armazena e acessa itens usando pares de chave / valor.
■ HashSet armazena
itens únicos e oferece operações set que podem ser usados em cima delas.
■ Uma Queue (fila)
é uma coleção first-in, first-out (FIFO).
■ Uma Stack (pilha)
é uma coleção first-in, last-out (FILO).
■ Você pode criar uma coleção personalizada por herança de uma classe de coleção ou herança de
uma das interfaces de coleção.
Anlagen:
- Using arrays
Anlagen:
- generic versus nongeneric / Lists
Anlagen:
- Dictionary / Sets
Anlagen:
- Using queues and stacks
Anlagen:
- Choosing a collection
Anlagen: