Um dia desses na internet (parte 3 – O Retorno)…
Continuando a série “um dias desses na internet“, veja que lindo quando tentei verificar o extrato em um determinando banco..
NBT– Cursos & Palestras
Nos próximos meses a NBT ( do qual sou um dos sócios
) estará lançando vários treinamentos/palestras para a comunidade, alguns serão gratuitos limitado apenas a quantidade de pessoas (na maioria 100), por isso quem tiver interesse entre no site da NBT (seção Cursos) e faça a pré-inscrição para os cursos & palestras. Após a pré-inscrição você receberá um e-mail com o código (guarde esse codigo) do seu treinamento e/ou palestra e em seguida receberá um link para confirmar a inscrição.
Uma das palestras que já estão agendadas é o Cloud Computing, essa palestra tem com objetivo falar sobre o que é Cloud Computing, como surgiu e os modelos de serviço (SAAS, PAAS e IAAS), além de uma breve visão sobre as soluções IBM para Cloud (SmartCloud) e dentre outras.
Espero vocês nos treinamentos/palestras…
Nelson Borges
Um dia desses na internet (parte 2)…
Sei que causei um pouco de desordem com o post “um dia desses na internet..”, agora navegando no site do governo brasileiro (NF Paulista), para consultar um resultado de sorteio, e eis que aparece uma nova pérola, um erro sem tratamento no momento em que seleciono os meus sorteios antigos (2009/2008). Pelo menos gostei de uma coisa no erro, eles estao usando o asp.net 4 :)..
Uma imagem vale mais que mil palavras, segue:
Senhores desenvolvedores, tenham mais cuidado 🙂
Até a proxima “pessoar”..
Um dia desses na internet..
Bom, estava eu navegando em alguns sites de compras (não irei mencionar o nome por questão de ética) e me deparei com uma coisa no minima estranha :(, trata-se de um preço de computador NULL, enfim, vale mais uma imagem do que milhares de palavras. Não que eu goste de causar a desordem, mas é que não consegui comprar o produto, e infelizmente o comercio eletronico é o segmento da empresa 😦
Série EF : Utilizando POCO separação das entidades do Contexto (Parte 2)
Continuando nossa série de artigos, confira aqui parte inicial
Introdução
O que é POCO?
POCO é o acrônimo de Plain Old CLR Object, e esta “técnica” se deriva do POJO, ambas permitem que você escreva sua própria classe de entidade de forma ignorante a persistência de dados, ou seja, você cria sua classe sem nenhuma herança ou implementação de contrato de dados (objetos chamados de estrutura simples), e esta classe é utilizada em ferramentas ORM para persistir os dados em um repositório.
Em resumo o que iremos fazer neste exemplo é criar um projeto chamado entidades, onde este irá conter todas nossas classes de entidades (PESSOA e PROFESSOR) e em outro projeto vamos criar a infra para persistência usando uma ferramenta ORM (Entity Framework), ela receberá as nossas entidades e persistir em um banco de dados SQL Server. A ideia do artigo é mostrar como é simples usar o POCO para separar fisicamente as funcionalidades da solução.
Criando a Solução
Para nosso exemplo utilizaremos uma solução do Visual Studio contendo três projetos, sendo eles:
| Nome | Tipo projeto | Descrição |
| NBSampleEF | Console Application | Projeto Front-End. |
| NBSampleEF.DAL | Class Library | Projeto que irá conter o ObjectContext, responsável por persistir os objetos no banco de dados. |
| NBSampleEF.Entities | Class Library | Projeto que irá conter as entidades de nossa solução. |
Criando as entidades
Abra o projeto NBSampleEF.Entities e crie duas classes para representar nossas entidades, importante que quando usamos o POCO temos algumas restrições, veja algumas delas:
- O Nome da classe precisa ser o mesmo nome da entidade no EDM.
- O Nome e os tipos das propriedades da classe precisam ser iguais aos da entidade no EDM.
Abaixo o código das classes de entidades:
| Entidade ALUNO |
|
namespace NBSampleEF.Entities |
| Entidade PROFESSOR |
|
using System.Collections.Generic; |
Criando a estrutura de persistência de dados
No projeto NBSampleEF.DAL referencie o projeto de entidades através do Add-> References -> NBSample.Entities, posteriormente crie um arquivo do tipo Entity Data Model (.edmx) apontando para seu banco de dados, de o nome do .edmx como ArtigosEFSample. Seu projeto deverá ficar conforme a imagem abaixo:
Nota: Se você expandir o arquivo .edmx, irá ver que existe um arquivo abaixo dele chamado ArtigosEFSample.Designer.cs este arquivo contem as classes do ObjectContext e as classes de entidades mapeadas.
No solution explorer clique com o botão direito ArtigosEFSample.edmx e escolha a opção propriedades (F4). Na tela de propriedades limpe o conteúdo do Custom Tool (propriedade responsável por gerar os códigos automaticamente). Compile a aplicação e verá que nenhum arquivo de designer do ArtigosEFSample.edmx será gerado.
Com isso definimos a estrutura de acesso a dados sem gerar as entidades automaticamente, no entanto, agora se faz necessário criarmos uma classe de persistência de dados, para isso, crie uma nova classe chamada ArtigoObjectContext . Herde a ArtigoObjectContext da classe ObjectContext e modifique o construtor Default, conforme exemplo abaixo:
|
using System.Data.Objects; } } |
Nota: Note que estamos herdando no construtor default o construtor da classe base, e neste passamos a connectionstring chamada artigoEFBlogEntities que se encontra no arquivo app.config. Este arquivo foi criado junto com a parametrização do Modelo.
Agora iremos criar nossos ObjectSet para efetuar as operações de CRUD nas entidades, para isso crie duas propriedades, sendo uma para cada entidade. E inicie ambas no construtor default da classe (criado anteriormente) através do método “base” CreateObjectSet.
|
using System.Data.Objects; namespace NBSampleEF.DAL : base(“name=ArtigoEFBlogEntities”, “ArtigoEFBlogEntities”) |
| Nota: O ObjectSet<T> é uma especialização do ObjectQuery<T> que foi introduzido no EF 4.0 |
Persistindo as entidades no repositório
No projeto NBSampleEF referencie o projeto de entidades através do Add-> References -> NBSample.Entities faça o mesmo para o projeto de acesso a dados, use o Add ->References -> NBSample.DAL, posteriormente copie a connectionstring do arquivo app.config (NBSample.DAL ) para dentro do arquivo de configuração do projeto NBSampleEF, o arquivo app.config do NBSampleEF deverá ficar conforme abaixo:
|
<?xmlversion=“1.0“encoding=“utf-8“?> |
Agora para efetuar os nossos testes, dentro do método Main (método de entrada da aplicação) iremos inserir o código para criar um aluno e um professor e persistir na base de dados e posteriormente iremos pesquisar o mesmo, veja abaixo:
|
staticvoid Main(string[] args) NBSampleEF.DAL.ArtigoObjectContext context = new DAL.ArtigoObjectContext(); using (context) novoAluno.Professor = novoProfessor //Pesquisando as entidades.
foreach (var entity in query) |
Execute o programa, na tela de console deverá aparecer o seguinte resultado:
Com o poco é possível ter seu modelo de entidade e automatizar o CRUD usando o ObjectContext, é importante saber que também existem outras soluções quando falamos de separação física de entidades e repositórios.
Aguarde o proximo post.. tem mais.
[]´s
Nelson Borges
**Ao infinito e além **
Série EF : Utilizando POCO separação das entidades do Contexto (Parte 1)
Neste mês irei lançar aqui no Blog uma série de artigos falando sobre o Entity Framework, eu já havia falado sobre ele em alguns post´s anteriores. No entanto irei focar agora em soluções para o .net Framework 4.0, abaixo uma visão dos tópicos que irei abordar:
Utilizando POCO
CRUD Genérico
Como melhorar a performance do EF
WCF Data Services com EF
Para iniciar nossa série, segue o primeiro artigo onde irei falar sobre como utilizar POCO com EF, para elaboração dos artigos criei um banco de dados simples com duas tabelas, sendo Aluno e Professor.
Estrutura do banco de dados para exemplo
Conforme mencionado acima, para acompanhar este e os próximos exemplos é necessário possuir esta estrutura de banco de dados, pois será em cima desta que iremos fazer os códigos e mapeamentos. O banco de dados contem duas tabelas, sendo Professor e Aluno, veja abaixo:
Caso queira criar esta estrutura, segue o script que esta apontando para uma base de teste chamada “ArtigoEFBlog” (fique a vontade para mudar o nome).
|
— ————————————————– — Entity Designer DDL Script for SQL Server 2005, 2008, and Azure SETQUOTED_IDENTIFIEROFF; IFOBJECT_ID(N'[dbo].[FK_Aluno_Professor]’,‘F’)ISNOTNULL ALTERTABLE[dbo].[Aluno]DROPCONSTRAINT[FK_Aluno_Professor]; IFOBJECT_ID(N'[dbo].[Aluno]’,‘U’)ISNOTNULL CREATETABLE[dbo].[Aluno]( — Creating table ‘Professor’ — Creating primary key on [Id] in table ‘Aluno’ — Creating primary key on [Id] in table ‘Professor’ ALTERTABLE[dbo].[Aluno] — Creating non-clustered index for FOREIGN KEY ‘FK_Aluno_Professor’ CREATEINDEX[IX_FK_Aluno_Professor] — ————————————————– |
| Obs.: Eu gerei este script através da própria opção do EF, para fazer isso acesse seu modelo (.edmx) clique com o botão direito em alguma área em branco e escolha a opção Generate Database from Model, posteriormente siga o wizard, esta opção se deve ao modo de Model-First na versão 4.0. |
Introdução
O que é POCO?
POCO é o acrônimo de Plain Old CLR Object, e esta “técnica” se deriva do POJO, 0ambas permitem que você escreva sua própria classe de entidade de forma ignorante a persistência de dados, ou seja, você cria sua classe sem nenhuma herança ou implementação de contrato de dados (objetos chamados de entidades simples), e esta classe é utilizada em ferramentas ORM para persistir os dados em um repositório.
Em resumo o que iremos fazer neste exemplo é criar um projeto chamado entidades, onde este irá conter todas nossas classes de entidades (PESSOA e PROFESSOR) e em outro projeto vamos criar a infra para persistência usando uma ferramenta ORM (Entity Framework), ela receberá as nossas entidades e deverá persistir as mesmas em um banco de dados SQL Server. A ideia do artigo é mostrar como é simples usar o POCO para separar fisicamente as funcionalidades da solução.
Existe duas formas de se trabalahar com POCO & Entity Framework, a forma com e sem Proxy, abaixo entenderemos ambas.
Criando a Solução
Para nosso exemplo utilizaremos uma solução do Visual Studio contendo três projetos, sendo eles:
| Nome | Tipo projeto | Descrição |
| NBSampleEF | Console Application | Projeto Front-End. |
| NBSampleEF.DAL | Class Library | Projeto que irá conter o ObjectContext, responsável por persistir os objetos no banco de dados. |
| NBSampleEF.Entities | Class Library | Projeto que irá conter as entidades de nossa solução. |
Criando as entidades
Abra o projeto NBSampleEF.Entities e crie duas classes para representar nossas entidades, importante que quando usamos o POCO temos algumas restrições, veja algumas delas:
- O Nome da classe precisa ser o mesmo nome da entidade no EDM.
- O Nome e os tipos das propriedades da classe precisam ser iguais aos da entidade no EDM.
- Abaixo o código das classes de entidades:
| Entidade Aluno |
|
namespace NBSampleEF.Entities |
| Entidade Professor |
|
using System.Collections.Generic; |
Criando a estrutura de persistência de dados
No projeto NBSampleEF.DAL referencie o projeto de entidades através do Add-> References -> NBSample.Entities, posteriormente crie um arquivo do tipo Entity Data Model (.edmx) apontando para seu banco de dados, de o nome do .edmx como ArtigosEFSample. Seu projeto deverá ficar conforme a imagem abaixo:
| Nota: Se você expandir o arquivo .edmx, irá ver que existe um arquivo abaixo dele chamado ArtigosEFSample.Designer.cs este arquivo contem as classes do ObjectContext e as classes de entidades mapeadas. |
No solution explorer clique com o botão direito ArtigosEFSample.edmx e escolha a opção propriedades (F4). Na tela de propriedades limpe o conteúdo do Custom Tool (propriedade responsável por gerar os códigos automaticamente). Compile a aplicação e verá que nenhum arquivo de designer do ArtigosEFSample.edmx será gerado.
Com isso definimos a estrutura de acesso a dados sem gerar as entidades automaticamente, no entanto, agora se faz necessário criarmos uma classe de persistência de dados, para isso, crie uma nova classe chamada ArtigoObjectContext . Herde a ArtigoObjectContext da classe ObjectContext e modifique o construtor Default, conforme exemplo abaixo:
|
using System.Data.Objects; |
| Nota: Note que estamos herdando no construtor default o construtor da classe base, e neste passamos a connectionstring chamada artigoEFBlogEntities que se encontra no arquivo app.config. Este arquivo foi criado junto com a parametrização do Modelo. |
Na próxima parte criaremos os objectSet para cada uma das entidades, isso irá facilitar a navegação dos objetos e a persistencia do mesmo no repositório.
Até a próxima,
Nelson Borges
Melhorando a performance dos Serviços WCF
O WCF é a plataforma unificada de serviço da Microsoft .Net, e é a tecnologia adotada na criação e disponibilização de serviços. Eu já escrevi algumas coisas a respeito do mesmo, veja abaixo:
E hoje nosso foco será entender um pouco de como melhorar a performance do WCF usando as configurações da própria tecnologia:
Concorrência e Instanciação:
O WCF disponibiliza algumas configurações que visam aumentar o rendimento dos serviços e o gerenciamento de memória, iremos ver aqui algumas delas:
InstanceMode: Após a requisição do cliente chegar no serviço, o mesmo poderá ter comportamentos diferentes na instanciação dos objetos dependentes na conversa (Request/Response) com o cliente. O WCF permite configurar a instanciação do serviço de 3 formas, sendo:
- Modo de instanciação por chamada (Per-Call)
- Modo de instanciação por Sessão (Per-Session)
- Modo de instanciação Singleton (Per-Single).
Veja abaixo mais detalhes sobre cada um dos modos de instanciação:
Per-Session: Comportamento default dos serviços, ou seja, quando não há explicitamente um modo de instanciação definido. Uma instancia (criação de objetos) é criado na primeira requisição do cliente, e esses objetos são mantidos enquanto o cliente se comunica com as “N” operações do serviço.
Na imagem acima o Cliente B esta configurado com o instanceMode Per-Session, enquanto os demais não, veja que ele possui uma instancia exclusiva para ele (instance 2) enquanto os demais compartilham a mesma instancia. A instance 2 irá durar enquanto a sessão do cliente estiver ativa, este comportamento é muito parecido com o objeto Session do Asp.Net.
Exemplo de implementação:
| [ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)] public class Service1 : IService |
Per-Call: Indica que cada cliente que solicita o serviço terá seu próprio contexto (operationContext), independente se for a primeira ou a segunda vez que o cliente executa a operação do serviço.
Na imagem acima para cada requisição efetuada ao serviço um novo contexto de objetos é criado e posteriormente liberado no final da requisição, deduz que teremos um aumento no processamento e uma variação nos objetos alocados em memória.
Exemplo de implementação:
| [ServiceBehavior(InstanceContextMode=InstanceContextMode.PerCall)] public class Service1 : IService1 |
Per-Single: Neste cenário, uma única instancia (criação dos objetos) será criado, e esta instancia atenderá todas as requisições lembrando muito o pattern Singleton.
Repare na imagem acima que uma única instancia foi criada e a mesma atende tanto a primeira requisição do cliente A, quanto as demais requisições (cliente B).
Exemplo de implementação:
| [ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)] public class Service1 : IService1 |
ConcurrencyMode: Indica quais tipos de concorrência o serviço irá suportar, ou seja, ao receber a requisição, o serviço deverá suportar o uso de paralelismo ou não para processar a requisição e devolver a resposta. O WCF suporta 3 configurações no comportamento do serviço (ServiceBehavior), são elas:
- Modo de concorrência Single: Comportamento padrão do WCF quando um ConcurrencyMode não foi configurado, esta configuração indica que apenas uma thread por instancia do serviço, com esta configuração não é necessário efetuar nenhuma thread safety.
- Modo de concorrência Reentrant: Indica que uma única thread pode chamar o serviço, no entanto, se esta thread estiver invocando outro serviço ou callback, o serviço poderá suportar outras threads.
- Modo de concorrência Multiple: Indica que mais de uma thread pode chamar o serviço (paralelo).
Configuração de Throttling no web.config: Por default o Service Host do WCF controla automaticamente as instancias possíveis para processar as solicitações do serviço. Em termos de perfomance é interessante deixar os valores default, uma vez que ele escala automaticamente a necessidade do servidor não forçando um estouro de memória ou de CPU no mesmo. Porém caso os valore default não te atendam você poderá altera-los de acordo com sua necessidade, apenas como uma recomendação é interessante considerar a capacidade do servidor em que a aplicação ficará hospedada antes de alterar o throttling do WCF.
O WCF permite a alteração através de uma configuração chamada ServiceThrottling que contêm:
MaxConcurrentInstances – Controla as instancias que podem ser criadas pelo serviço, o valor default é o valor máximo do System.Int32 (int.MaxValue).
MaxConcurrentCall – Define o numero máximo de mensagens que podem ser encaminhadas ao serviço. A recomendação é o valor de 16 vezes o numero de processador da máquina.
MaxConcurrentSession: Usado para controlar o numero de sessões ativas no serviceHost, especialmente no uso de InstaceMode Per-Session. A recomendação é 16 vezes o numero de processador da máquina que esta hospedando o serviço. Se qualquer uma destas definições de limite for atingido, não há nenhuma nova instancia/ thread/criação de sessão até que o anterior seja destruído.
Exemplo de configuração no web.config:
| <serviceBehaviors> <behavior name=”MyService”> <serviceMetadata httpGetEnabled=”true” httpGetUrl=”http://localhost:8000/MyService” /> <serviceDebug includeExceptionDetailInFaults=”true” /> <serviceThrottling maxConcurrentCalls=”16″ maxConcurrentInstances=”26″ maxConcurrentSessions=”10″/> </behavior> </serviceBehaviors> |
Mais referencias:
http://msdn.microsoft.com/en-us/library/ee377061(v=bts.10).aspx
http://blogs.msdn.com/b/wenlong/archive/2008/08/13/orcas-sp1-improvement-asynchronous-wcf-http-module-handler-for-iis7-for-better-server-scalability
WCF – Interop
Como sabem o WCF é uma das tecnologias que mais me fascina no ponto de vista de desenvolvedor. E quando acho que já não tem mais o que fazer, a MS e/ou Comunidade sempre estão lançados mais features do mesmo. Eu já falei no blog sobre o Router Services, e os beneficios dele para ambientes enterprise (ainda mais se hospedado no IIS 7.0 com WAS e AppFabric), se falarmos da questão de centralização e gerenciamento dos serviços da empresa.
Sim, eu concordo o WCF não é um ESB nativo, mas por que não fazer um ESB com ele? Um ponto a se pensar, principalmente em empresas onde não temos ambientes homogêneos. Mas Nelson e se meu ambiente for heterogêneo? Como deixar essa interoperabilidade transparente com WCF?
Interoperabilidade (Oracle Weblogic, Oracle Metro, IBM WebSphere, Apache Axis2)
Quando pensamos em interoperabilidade, logo pensamos nos WS.*, pois foram feitos com o proposito de integrar soluções diferentes (wcf, jms e etc), mas esse tipo de interoperabilidade nem sempre é simples, principalmente se falarmos de segurança, confiança, transação e encoding de diferentes tipos (text/mtom).
Por isso quero compartilhar com vocês, um projeto existente no codeplex que tem justamente o proposito de simplificar a criação de serviços WCF para integração com outras tecnologias visando segurança, confiança e etc, esse projeto chama-se WCF Express Interop Bindings
Quais tecnologias ele facilita a integração:
Oracle Metro (antigo projeto Tango)
Oracle WebLogic
IBM WebSphere (Application Server)
Apache Axis
O WCF Express Interop Bindings ao ser instalado habilita um template com Wizards que vai indicado as configurações necessárias para comunicação com plataformas diferentes, veja a imagem abaixo:
Veja aqui um passo a passo de como instalar e criar um projeto usando o WCF Express Interop.
Saiba mais: http://wcf.codeplex.com/releases/view/68276
Dica: Veja este artigo falando sobre interop .net x java, vale a pena: http://msdn.microsoft.com/en-us/netframework/gg413252
[]´s
Nelson Borges
Tipos de dados .Net
Havia prometido a alguns alunos, apesar de existir no MSDN e no ECMA, enfim, esta ai, pode ser util para alguém.
|
Nome Abreviado |
Classe .NET | Type (Tipo) | Width | Range (BITS) |
| byte | Byte | Inteiro Não Assinado | 8 | 0 to 255 |
| sbyte | SByte | Inteiro Assinado | 8 | -128 to 127 |
| int | Int32 | Inteiro Assinado | 32 | -2.147.483.648 to 2.147.483.647 |
| uint | UInt32 | Inteiro Não Assinado | 32 | 0 to 4294967295 |
| short | Int16 | Inteiro Assinado | 16 | -32.768 to 32.767 |
| ushort | UInt16 | Inteiro Não Assinado | 16 | 0 to 65535 |
| long | Int64 | Inteiro Assinado | 64 | -922337203685477508 to 922337203685477507 |
| ulong | UInt64 | Inteiro Não Assinado | 64 | 0 to 18446744073709551615 |
| float | Single | Tipo ponto flutuante Simples-Precisão | 32 | -3.402823E38 para 3.402823E38 |
| double | Double | Tipo ponto flutuante Dupla-Precisão | 64 | -1.79769313486232e308 para 1.79769313486232e308 |
| char | Char | Caracter simples – Unicode | 16 | Símbolos Unicode Used in Texto |
| bool | Boolean | Booleano | 8 | Verdadeiro or false |
| object | Object | Base de todos outros tipos | ||
| string | String | Uma seqüência de caracteres | ||
| decimal | Decimal | Preciso fracionário ou tipo integral que possa representar decimal números com 29 dígitos significativos |
128 |
10e-28 × ±1.0 para 10e28 × ±7.9 |
Abs,
Microsoft Security Development LifeCycle
Em um processo de desenvolvimento de software se faz necessário à verificação da qualidade do mesmo, ou seja, garantir que seu código seja flexível, reutilizável, seguro e etc. Abaixo eu irei listar algumas ferramentas que podem ser uteis na implementação de um modelo seguro de software:
Antes de mostrar as ferramentas, compartilho uma imagem que demonstra a visão do MSDL (Microsoft Security Development LifeCycle) sobre o ciclo de desenvolvimento de um software seguro:
Code Analysis: Ferramenta de análise estática de código gerenciado que é integrado com o Visual Studio, ideal para verificar se o código esta dentro dos padrões dado um ou mais regras.
Para utilizar o Code Analysis no seu projeto (VS 2010 Ultimate):
1- Solution Explorer do seu projeto, clique com o botão direito em cima do projeto e escolha Properties.
2- Na propriedade escolha a aba Code Analysis.
3- Especifique o tipo de Build (Debug/Release/etc) na opção Configuration.
4- Marque a opção Enable Code Analisys on Build.
5- Escolha a regra que deseja utilizar no campo Run This Rule Set
Nota: Como sugestão, você pode escolher a regra Microsoft Minimum Recommended Rules.
Mais referencias:
http://blogs.msdn.com/b/codeanalysis/archive/tags/code+analysis/
http://archive.msdn.microsoft.com/codeanalysis
Code Analisys Tool (CAT.NET): Ferramenta de linha de comando e/ou plugin do Visual Studio para ajudar a análise de falhas de segurança em aplicativos web e/ou em aplicativos compilados (assemblies). O CAT pode ser utilizado no processo de implementação do desenvolvimento de sua aplicação, ou seja junto com as ferramentas de Code Analysus, Anti-XSS, FX Corp e etc.
Itens que o CAT ajuda a identificar: XSS, Sql Injection, Process Command Injection, File Canonicalization, Exception Information, Ldap Injection, Xpath Injection, Redirection to User Controlled Site.
Utilizando o CAT em seu projeto:
1- Abra o prompt de comando do Visual Studio e navegue até a pasta de instalação do CAT.
2- Digite o seguinte comando “CATNetCmd64.exe /file:”sua.dll” onde o File é sua DLL.
3- Posteriormente você poderá visualizar o relatório gerado pelo CAT.

Mais referencias:
http://msdn.microsoft.com/en-us/security/Video/gg6750097
Anti-XSS: Uma biblioteca e um modulo HTTP que podem ser adicionados a aplicação web para evitar ataques de Cross-Site-Scripting, que é a pratica de explorar vulnerabilidades em aplicativos baseados na WEB que não validam corretamente as entradas de usuário, permitindo aos usuários mal intencionados injetarem scripts do lado do cliente em dados de resposta do servidor de sua aplicação.
Para maiores detalhes veja:
http://msdn.microsoft.com/en-us/library/aa973813.aspx
Application Verifier: Ferramenta dinâmica que verifica vazamentos de memória e recursos. Pode ser usada com código não gerenciado (escrito fora da plataforma .Net).
Para utilizar esta ferramenta siga os passos:
1- Instale a ferramenta em seu computador.
2- Abra a interface do Application Verifier.

3- No file aponte para o caminho de sua aplicação.
4- Clique em Save.
5- Clique com o botão direito em cima de sua aplicação na área Applications.
6- Escolha a opção Run Test.
Saiba mais:
http://msdn.microsoft.com/pt-br/library/ms220948(v=vs.90).aspx
http://technet.microsoft.com/en-us/library/bb457063.aspx
PreFast: Ferramenta de análise estática de código C++ que é utilizado através de linha de comando.
Mais: http://msdn.microsoft.com/en-us/library/aa449786.aspx
Safe CRT Libraries: Uma biblioteca de Runtime de C/C++ mais segura que foi incluída no Visual Studio 2005.
Veja mais: http://msdn.microsoft.com/pt-br/magazine/cc163794(en-us).aspx
Mais sobre segurança:
Microsoft Development Security LifeCycle:
http://www.microsoft.com/security/sdl/default.aspx
Developer Center (Segurança):
http://msdn.microsoft.com/pt-br/security/bb896640
Videos sobre Developer Center:
http://msdn.microsoft.com/pt-br/security/Video/gg558144








![image_2[1]](https://nelsonborges.wordpress.com/wp-content/uploads/2011/08/image_21.png?w=595)




