Quantcast
Channel: TI Selvagem » TI Selvagem - ASP .Net MVC, C#, Entity Framework
Viewing all 61 articles
Browse latest View live

Vídeo-Aula ASP .Net MVC na prática – Parte 4

$
0
0

Esta é a quarta parte da série ASP .Net MVC na prática, que ira abordar os conceitos e práticas que norteiam o desenvolvimento de aplicativos baseado no padrão MVC utilizando o ASP .Net

Lembre-se: você pode baixar o código desta vídeo-aula no meu repositório do GitHub, https://github.com/cleytonferrari/ASPNETmvcNaPratica

Nesta quarta vídeo-aula sobre ASP .Net MVC é abordado:

  • Rotas
  • Criando suas rotas

Durante o decorrer desta vídeo-aula sobre ASP .NET MVC você verá como criar uma listagem de notícias com categorias e aplicar a está listagem rotas personalizadas para exibição de categorias, rotas personalizadas para exibição de titulo da noticia com categoria na URL e rotas para listagem de todas as notícias.

Veja também como aplicar rotas em seus aplicativos MVC e como isso pode ajudar o SEO do seu site.

Ao final desta vídeo-aula você será capaz de criar rotas personalizadas no ASP .NET MVC com um ou vários parâmetros de URL.

Para saber mais:

O post Vídeo-Aula ASP .Net MVC na prática – Parte 4 apareceu primeiro em TI Selvagem.


Vídeo-Aula ASP .Net MVC na prática – Parte 5

$
0
0

Esta é a quinta parte da série ASP .Net MVC na prática, que ira abordar os conceitos e práticas que norteiam o desenvolvimento de aplicativos baseado no padrão MVC utilizando o ASP .Net

Lembre-se: você pode baixar o código desta vídeo-aula no meu repositório do GitHub, https://github.com/cleytonferrari/ASPNETmvcNaPratica

Nesta quinta vídeo-aula sobre ASP.Net MVC é abordado:

  • Bundling
  • Minification

Durante o decorrer desta vídeo-aula sobre ASP.NET MVC você verá como otimizar o seu site utilizando técnicas de agrupamentos de arquivos de CSS e JavaScripts os Bundles e verá também como o recurso de Minifications adicionado no ASP.NET MVC 4 ajuda a reduzir o tamanho dos arquivos de CSS e JS do seu site.

Veja também como ordenar os Bundles, adicionar diretórios inteiros de uma unica vez nos seus Bundles e como excluir arquivos da lista de agrupamento dos seus Bundles.

Ao final desta vídeo-aula você será capaz de criar Bundles e Minificações de códigos utilizando o ASP.NET MVC 4 e saberá as vantens que isso trás para o seu projeto Web.

Para saber mais:

O post Vídeo-Aula ASP .Net MVC na prática – Parte 5 apareceu primeiro em TI Selvagem.

Correios RESTful API

$
0
0

Olá pessoal como podem ver ando meio sem tempo pro blog mas esse tempo está sendo bem gasto, com varias horas de programação hehe, e nesse post venho mostrar um resultado disso. No projeto em que estou trabalhando atualmente surgiu a necessidade daquela funcionalidade de autocompletar um endereço a partir de um cep informado pelo usuário, como os correios não tem uma API pra isso e o banco de dados deles é bem caro resolvi fazer uma API open source para usarmos em nosso projeto e para que outros desenvolvedores também possam usá-la.

O site da API é: http://correiosapi.apphb.com

Para fazer uma pesquisa de CEP tente algo como:

SEO (Search Engine Optimization) para o site da Inprotec

$
0
0
Tive a honra de poder falar de algo que me interessa tanto, a incubadora de tecnologia da FAAr, a criação de nossa incubadora foi, e ainda é, resultado de muito esforço de nossos professores principalmente do nosso coordenador Fábio Rogério Milani e do nosso professor Márcio de Andrade.
Antes que alguém fique com dúvida, quero esclarecer o que é uma incubadora, por exemplo, uma incubadora neonatal para um recém-nascido, é um aparelho que o protege e o fortalece até o ponto que pode encarar o ambiente a sua volta sem risco de vida, uma incubadora de empresa seria uma protetora de empresas recém-criadas, ajudando-as a conhecer o mercado para então poder encara-lo sozinha.
Inprotec é a incubadora de produtos de tecnologia do curso de tecnologia da FAAr, e está ai com o objetivo de incentivar os alunos a implementar suas próprias ideias e formar  empreendedores, já criamos diversos projetos para auxilio da própria instituição e alguns ainda está em fase de criação.
Nosso ultimo trabalho foi a criação do site da Inprotec, é claro que vemos a necessidade de vender os produtos feitos aqui, nesse caso precisamos uma boa visibilidade de Web, para isso foi preciso investir um pouco de trabalho em SEO (otimização de site para mecanismo de busca). SEO não é algo novo, mais sim uma técnica que se renova com muita frequência, pois ela acompanha a tecnologia dos mecanismos de busca, como exemplo o Google que recentemente fez muitas alterações em seu algoritmo de pesquisa e já que quando pensamos em busca pensamos em no “gigante Google”, influenciou a nossa maneira de buscar na Web.
O termo SEO representa as iniciais no nome Search Engine Optimization, que em português quer dizer engenharia de otimização para busca. Quando tratado em Marketing Digital, representa as técnicas utilizadas para um conteúdo de um site aparecer em primeira posição nos ranking de pesquisa. Segundo Fábio Ricotta SEO é um conjunto de técnicas, métodos e/ou estudos que visam melhorar o posicionamento de suas páginas no mecanismo de busca, ou seja, quando um usuário digita no mecanismo de busca uma palavra-chave, o objetivo do SEO é fazer com que uma (ou várias) das páginas do seu website, apareça entre os primeiros resultados da busca orgânica.
De acordo com Eric Enge em seu livro Arte SEO, otimizar um site para mecanismo de busca e criar um conteúdo direcionado a uma palavra-chave ajuda o site a aparecer apara os principais termos de busca, o que normalmente leva a um tráfego direto e a links de referência à medida que mais e mais pessoas encontram, utilizam e desfrutam o que você produziu. Milhares de sites da Web utilizam esse tráfego para oferecer anúncios, monetizando diretamente o tráfego enviado pelos mecanismos.
Nos próximos artigos iremos conhecer melhor esse assunto e descobrir técnicas que todo administrador de site deve utilizar para estar bem posicionado nos mecanismos de pesquisa.
Este artigo foi originalmente publicado em: http://eudoxiamoura.blogspot.com.br

O post SEO (Search Engine Optimization) para o site da Inprotec apareceu primeiro em TI Selvagem.

Vídeo-Aula ASP.Net MVC na prática – Parte 6

$
0
0

Esta é a sexta parte da série ASP .Net MVC na prática, que ira abordar os conceitos e práticas que norteiam o desenvolvimento de aplicativos baseado no padrão MVC utilizando o ASP .Net

Lembre-se: você pode baixar o código desta vídeo-aula no meu repositório do GitHub, https://github.com/cleytonferrari/ASPNETmvcNaPratica

Nesta sexta vídeo-aula sobre ASP .Net MVC é abordado:

  • Layout
  • Render Page
  • Render Section
  • Partial View
  • Twitter Bootstrap

Durante o decorrer desta vídeo-aula sobre ASP .NET MVC você verá como criar Layouts para o seu site usando RenderPage(), RenderSection() e Html.Partial, também verá como instalar e configurar o Twitter Bootstrap no seu site e criar o seu primeiro Layout usando todos esses recursos juntos.

Veja como é simples separar e organizar seus arquivos HTML e reutilizar o seu código usando os recursos/helpers do ASP .Net MVC em seus Layouts web.

Ao final desta vídeo-aula você será capaz de criar Layouts para sites utilizando os recursos do ASP .NET MVC 4 e saberá como começar a usar o Twitter Bootstrap. Será capaz de instalar via Nuget os pacotes necessários do Twitter Bootstrap.

Para saber mais:

Lembre-se você pode participar da nossa comunidade no Facebook acessando https://www.facebook.com/groups/tiselvagem/

O post Vídeo-Aula ASP.Net MVC na prática – Parte 6 apareceu primeiro em TI Selvagem.

Transferindo dados entre Actions utilizando TempData

$
0
0

Esse post é um snippet para mostrar como utilizar o recurso TempData do Asp.Net MVC para transportar dados entre diferentes Actions.

Imagine que em uma action após fazer um cadastro de usuário você precisa fazer um redirecionamento para a Action  de login e ainda enviar uma mensagem de sucesso.

Veja que aqui estamos na Action Cadastro onde executamos a rotina de cadastro do usuário e logo após iremos redirecionar o usuário para a Action Login enviando uma mensagem utilizando TempData.

Aqui na View Login exibimos a mensagem que veio da Action Cadastro:

O post Transferindo dados entre Actions utilizando TempData apareceu primeiro em TI Selvagem.

Validação de Data e Moeda (ASP.Net MVC + JQuery Validation) em Português

$
0
0

Sempre vejo na internet um monte de solução para a validação de data e moeda em Português (PT-Br) uma mais complicada que a outra. Já se perguntou: isso deveria ser simples? e é super simples, veja como agora.

Validando data e moeda em ASP.Net MVC

Para exemplificar eu criei um projeto “ASP.Net MVC 4 Web Application” e usei o template “Basic”, uma vez criado o projeto foi feito os seguintes passos:

1. Globalizando o ASP.Net MVC para PT-Br

É pouco divulgado, mais existe uma versão do MVC (Microsoft.AspNet.Mvc) em Português, feita pelo pessoal do time do ASP .Net MVC da Microsoft e esta versão traduz para você as mensagens de erro para o português.
Sua instalação é bem simplificada feita usando o pacato de nuget “Microsoft.AspNet.Mvc.pt-br”, para instalar digite o seguinte comando no Package Manager Console (Tools/Library Package Manager/Package Manager Console):

Isto irá instalar o MVC em Português, e atualizar as suas dependências.

2. Globalizando jQuery Validation para PT-Br

O jQuery Valitation é o responsável pela validação do lado do cliente, para globalizar ele para PT-Br precisamos criar um novo arquivo na pasta “Scripts” chamado “methods_pt.js” com o seguinte conteúdo:

Com isso o jQuery Validation passa a validar data no formato “dd/mm/yyyy” e moeda agora usa o separador “,” para as casas decimais e não mais o “.” como é o padrão americano.

3. Atualizando o Bundle do jQueryval

Agora podemos atualizar o Bundle do JQuery Validation “jQueryval”, para isso precisamos abrir o arquivo “BundleConfig.cs” que esta na pasta do seu projeto “App_Start” e alterar o bundle “jqueryval” e adicionar o arquivo “methods_pt.js” criado anteriormente.

Pronto agora é só usar!

4. Testando a validação em Português

Para efeito de teste eu crie um model chamado “Produto.cs” com o seguinte código:

Agora foi só criar um controle “Home” com uma action “Index” e gerar um scafolld para “Create”, veja o código do controle e da view abaixo:

HomeController.cs

e o código da View, Index.cshtml

Como de costume você pode baixar o código no meu GitHub.

Bom pessoal era isso! e ajudem a divulgar se possível!

[Post originalmente publicado em http://cleytonferrari.com/validacao-de-data-e-moeda-asp-net-mvc-jquery-validation-em-portugues/ em 31/01/2013]

O post Validação de Data e Moeda (ASP.Net MVC + JQuery Validation) em Português apareceu primeiro em TI Selvagem.

Redirecionamento com o Heroku

$
0
0

Quando se utiliza o Heroku para hospedar suas apps é necessário fazer algumas configurações de DNS para que ela fique disponível em seu domínio. No início tive muitas dificuldades para conseguir fazer as configurações de um modo geral, pois maioria do material se encontra em inglês ou esta totalmente espalhados pela net principalmente se tratando dos redirecionamentos na hospedagem padrão.

Obs.: Não abordarei quanto a criação de uma app e nem sobre deploys com o Heroku por não ser o objetivo desse post.

 1. Configurando Heroku.

No Heroku é necessário adicionar os domínios que poderão exibir sua aplicação. Para isso clique em “settings” na app desejada.heroku_apps

Depois role a página até a seção “Domains” e adicione os domínios desejados. No meu caso eu adicione os domínios “*.requestdev.com.br” e “*.requestdev.com” pois desejo q minha aplicação esteja acessível de qualquer subdominio que eu configurar no meu servidor de hospedagem.

domains

 2. Configurando o servidor de hospedagem.

Agora vamos configurar a nossa hospedagem para poder visualizar nossa app. Para isso basta acessar o painel de controle da sua hospedagem e entrar nas configurações de DNS (ou subdominio ou redirecionamentos, dependendo do seu servidor) e criar os CNAMEs que desejarmos (basta clicar no botão “Quick Add”):

cnames_gaodday

Para exemplificar eu adicionei 4 subdominios diferentes (www, portal, site e loja), então se acessarmos o endereço www.requestdev.com.br, portal.requestdev.com.br, site.requestdev.com.br ou loja.requestdev.com.br estariamos visualizando a nossa app.

Obs.: Eu particularmente utilizo o Godaddy como servidor de hospedagem mais caso sua hospedagem não te permita criar os CNAMEs entre em contato com o suporte e solicite-a.

Vantagens:

Uma das grandes vantagens de se utilizar os CNAMES é que podemos acessar diversas apps com um mesmo domínio, bastante apenas especificar o subdominio. Outra vantagem é que a aplicação roda em um Cloud, onde agente pode adicionar e remover recursos com muita facilidade e baixo custo.

Desvantagem:

Como tudo na vida não são apenas rosas, caso necessitarmos que nossa app seja a página principal do domínio precisamos configurar o mesmo para redirecionar para o subdominio, e esse redirecionamento muitas vezes é um tanto quanto chato de se fazer.

Redirecionamento:

Existem varias formas de se fazer esse redirecionamento, algumas delas são:

- Criar uma página de abertura com um link;

- Criar uma página que redireciona automaticamente.

- Criar arquivos de configurações no servidor para que o mesmo faça o redirecionamento.

Dentre as opções a mais recomendada é a criação dos arquivos de configurações do servidor que em hospedagem Windows é o web.config e Linux o .htaccess. A criação desses arquivos vamos deixar para um outro artigo que assim que possível estarei publicando aqui no TI Selvagem.

REFERÊNCIA:

https://devcenter.heroku.com/articles/custom-domains

http://defidelis.com/hospedagem-heroku-e-godaddy/

O post Redirecionamento com o Heroku apareceu primeiro em TI Selvagem.


Caixas de diálogos em Windows Forms C# MessageBox

$
0
0

Caixas de diálogos são partes vitais em aplicações do Windows. Um diálogo típico comum fornece uma funcionalidade interna para fora-da-caixa semelhante aos diálogos comuns encontradas no sistema operacional Windows. Conhecer a estrutura das caixas de diálogos é fundamental para o desenvolvimento de aplicações Windows, pois o uso correto deste recurso possibilita uma forma de comunicação com o usuário.

Neste artigo vou demonstrar uma das caixas de diálogos mais comuns e como utilizá-los em aplicações do Windows.

Abordarei neste texto como usar a caixa de diálogos MessageBox que normalmente é disparada por um evento da aplicação exibindo uma mensagem com o texto especificado. Uma caixa de mensagem pode ter algumas opções adicionais, incluindo uma legenda, ícone e botões de ajuda.

A classe MessageBox possui um método Show sobrecarregado estático que é usado para exibir uma mensagem. Aqui estão a maioria das formas de MessageBox.

MessageBox simples

A forma mais simples de um MessageBox é um diálogo com um botão de texto e OK. A seguir criaremos um MessageBox simples.

Crie um projeto no Visual Studio 2012 (funciona também em versões anteriores) do tipo WindowsFormsApplication e arrastei um Button para o Formulário, em seguida dê um duplo clique sobre o botão e codifique.

fig1

Primeiro declaramos uma variável mensagem do tipo string e atribuímos o conteúdo “Exemplo MessageBox” e em seguida chamamos a classe MessageBox e o método Show para exibir o valor da variável. F5 para compilar o projeto e clique sobre o botão.

fig2

Para personalizar a MessageBox com um título basta declarar uma nova variável e passar como parâmetro para o método Show.

fig3

Compilando e clicando no botão teremos a MessageBox com um título.

fig4

MessageBox com botões

Um MessageBox pode ter diferentes tipos de combinação de botões, como Yes, No  ou OK,Cancel.  A enumeração MessageBoxButtons representa os botões a serem exibidos em uma MessageBox e tem os seguintes valores.

OK
OKCancel
AbortRetryIgnore
YesNoCancel
YesNo
RetryCancel

Para exemplificar vou alterar o nosso código para usar a enumeração MessageBoxButtons

fig5

O trecho de código cria um MessageBox com um título e botões Sim e Não. Este é um típico MessageBox você pode chamar quando você quiser fechar uma aplicação. Se o botão Sim é clicado, o aplicativo será fechado. O método Show retorna uma enumeração DialogResult.

fig6

MessageBox com Ícone

Um MessageBox pode exibir um ícone no diálogo. A enumeração MessageBoxIcons representa um ícone a ser exibido em um MessageBox e tem seguintes valores.

Nenhum
Mão
Pergunta
Exclamação
Asterisk
Parar
erro
Aviso
Informação

O trecho de código a seguir cria um MessageBox com um título, botões, e um ícone.

fig14

Salve, compile e execute e o resultado será.

fig15

MessageBox com botão padrão (Default)

  • Nós também podemos definir o botão padrão em um MessageBox. Por padrão, o primeiro botão é o botão padrão.  A enumeração MessageBoxDefaultButton é utilizado para este fim e que tem as seguintes três valores.
  • Button1
  • Button2
  • Button3

O trecho de código a seguir cria um MessageBox com um título, botões, e um ícone e define segundo botão como um botão padrão (Default).

fig9

Executando o código o segundo botão iniciará selecionado como padrão.

fig10

MessageBox com opções de mensagens

  • A enumeração MessageBoxOptions representa várias opções e tem os seguintes valores.
  • ServiceNotification
  • DefaultDesktopOnly
  • RightAlign
  • RtlReading

O trecho de código a seguir cria um MessageBox com várias opções.

fig12

Note que agora estamos manipulando o alinhamento da caixa de diálogo.

fig13

Neste artigo, discutimos sobre como criar e usar um MessageBox em um aplicativo Windows Forms.

Perceba que nos exemplos eu fui atribuindo parâmetros passando para a variável resultado.

Desenvolver aplicações em .Net é uma questão de conhecer as classes e saber como tirar proveito dos seus métodos e atributos.

Por hoje é só. Bons códigos.

O post Caixas de diálogos em Windows Forms C# MessageBox apareceu primeiro em TI Selvagem.

Mockups com Twitter Bootstrap UI e PowerPoint

$
0
0

Olá pessoal, esta semana precisei fazer Mockups de algumas telas para o nosso time de desenvolvedores implementarem, abri o PowerPoint e comecei a desenhar usando o Storyboarding que o Visual Studio 2012 instala, porém estamos utilizando o Twitter Bootstrap UI e os elementos do PowerPoint do Storyboarding não se parecem com os do Bootstrap, como Resolver?

Numa rápida busca na internet encontrei o site da Keynotopia, o qual possuem vários layouts prontos para PowerPoint.

Mockups do Twitter Bootstrap

Como fazer Mockups do Twitter Bootstrap no PowerPoint

Primeiro você vai precisar baixar o pacote de ppt do Twitter Bootstrap da Keynotopia, o que é um pouco chato, cheio de links confusos, e ainda precisar dar uma twittada para liberar o download, o link é este http://keynotopia.com/bootstrap/.

Uma vez baixado dentro do arquivo do download você irá encontrar modelos para PowerPoint, OpenOffice e Apple Keynote, abra no caso o do PowerPoint e você verá todos os modelos de componentes disponiveis, basta criar novos slides e copiar os modelos para estes slides. Simples não?

Só lembrando que eles possuem uma infinidade de temas, a maioria pago, mais que pode dar um upgrade legal no seu projeto e simplificar muito o entendimento do seu software a um custo muito reduzido!

O que você achou? qual você utiliza? comenta ai!

O post Mockups com Twitter Bootstrap UI e PowerPoint apareceu primeiro em TI Selvagem.

Neo4j – Banco de Dados orientado a Grafos

$
0
0

Se você conhece banco de dados estruturados (SQL Server, ORACLE, PostGree. MySQL, etc.. ), seja bem vindo a um novo paradigma, o Neo4j. O objetivo deste artigo é apresentar de forma simples esta tecnologia. O Neo4j é um banco de dados Open Source baseado no conceito NoSQL (Banco de Dados que não utiliza os conceitos estruturados).  As informações não são armazenadas em tabelas, mas sim na forma de Grafos e suas estruturas são representadas de forma que o conhecimento é representado pelos conceitos matemáticos da Teoria de Grafos.

A teoria de grafos é uma ferramenta simples, acessível e poderosa para construção de modelos para inúmeros problemas que requerem a construção de sistemas complexos que vão desde o mapeamento de processos industriais, logística, sistemas de comunicação, fluxo de redes, escolha de rotas… e possui ampla aplicação em diversas áreas do conhecimento, tais como, engenharias, computação, genética, física, química, antropologia, linguística, etc.

A ideia de Grafo surgiu independente das diversas áreas de conhecimento, no entanto é considerada como uma área da matemática aplicada. A mais antiga menção sobre o assunto ocorreu no trabalho de Euler (pronuncia-se Óiler), no ano de 1736 para modelar e explicar um problema chamado “Pontes de Königsberg.

Diagrama de Euler

Diagrama de Euler

O problema consistia em verificar se seria possível percorrer todas as sete pontes da cidade passando uma única vez em cada ponte.

Euler verificou (e provou) através de um diagrama associando nós (vértices) e arcos (arestas) que não havia solução para o problema. É justamente este o conceito simples a essência usado pelo Neo4j.

Neste tipo de Banco de Dados, os registros são gravados em vértices (nós) que possuem propriedades definidas conforme a necessidade. Estes vértices por sua vez se relacionam com outros vértices através de arestas (arcos) que se interligam criando caminhos entre os vértices de maneira organizada com relações explicitas.

Para experimentar o Neo4j em seu computador é necessário estar com o JDK instalado (http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html) e baixar a versão conforme o seu Sistema Operacional em http://www.neo4j.org/download. Faça o Download e descompacte em uma pasta.

No caso, criei um diretório chamado “neo4j” no disco C:\neo4j

As informações para a instalação podem ser encontradas em http://docs.neo4j.org/chunked/stable/server-installation.html

A principal fonte de informações sobre este assunto pode ser encontrada em  http://www.neo4j.org/

Considerando que você tenha instalado o Neo4j em seu computador, vou demonstrar o uso do Neo4j usando uma linguagem chamada Gremlin na criação de um Grafo (estou usando o Windows 8). Acione o Prompt de Comando.

prompt

Digite a seguir o seguinte comando.

cd\neo4j\bin

Precione Enter

No subdiretório bin iremos executar a chamada do servidor local. Digite neo4j e pressione Enter

neo4j2

A seguir irão ser carregadas diversas diretivas e serviços que irão instanciar o servidor.

neo4j3

Abra seu Browser e digite a URL http://localhost:7474/

O servidor Web será iniciado e por padrão será usada a porta 7474.

 Servidor neo4j

Há diversas formas de manipular os dados neste servidor. Neo4j Shell, Gremlin, http… Iremos usar a linguagem Gremlin, um outro projeto Open Source que possui uma forma bem simples e amigável de criar Grafos.

Clique em Power Tool Console e em seguida em Gremlin

Gremlin

Para adicionarmos um vértice digite o comando g.addVertex([nome:"Maria", idade:33]) e pressione Enter.

Os comandos da linguagem sempre iniciam pela letra g.

addVertex informa que queremos adicionar um vértice e os valores nome: e idade: são os parâmetros equivalentes as colunas do nosso banco de dados. “Maria” (entre aspas especifica que é uma cadeia de strings) e 33 (número) são os valores armazenados no vértice.

Crie um outro vértice usando a mesma estrutura.

g.addVertex([nome:"Joana", idade:16])

Para ver os vértices digite g.V e pressione Enter. Serão listados os vértices existentes.

Para mapear os vértices criados digite g.V.map e pressione Enter. Serão exibidos os atributos dos vértices.

No minha tela foram criados os vértices 26 e 27, pois eu já tinha alguns outros vértices criados.

neo4j6

Agora iremos criar uma aresta entre os dois vértices.

Digite o seguinte comando g.addEdge(g.v(26), g.v(27), ‘conhece’)

g.addEdge cria a aresta entre os vértices g.v(26) e g.v(27) indica o relacionamento e o atributo ‘conhece’ descreve a relação entre os vértices.

Traduzindo seria o mesmo que dizer que Maria conhece Joana.

Para listar as arestas digite o comando g.E

Como resultado teremos a listagem das arestas criadas (no meu caso serão listados todos os relacionamentos).

listagem aresta

Para visualizar de forma gráfica o que fizemos clique na aba Data Browser 

Data Browser

Clique no botão Switch View Mode e apague os dados do campo de busca.

Digite  rels: e o número do vértice no (meu caso 27) e clique no ícone de pesquisa ( a lupa)

rels: 27

Será exibido o relacionamento entre os  vértices 26 e 27  (26 conhece 27).

Desta forma o modelo de Grafo do banco de dados Neo4j começa a ser criado.

Representação gráfica

Antes que alguém me questione “onde usar isso?”. Pare e pense um pouco na era de redes sociais (Face Book, Twitter) que estamos vivendo atualmente. Como podemos perceber, o conceito não é novo, é apenas uma abordagem diferente que nos possibilita criar banco de dados. Há casos (na grande maioria) em que  precisaremos usar a abordagem estruturada. Há muita pesquisa e aos poucos este tipo de tecnologia vai ganhando reconhecimento pela  forma diferenciada de abordar o assunto banco de dados (infelizmente não há ainda publicações em português).

BIBLIOGRAFIA

GERSTING, Judith L. Fundamentos Matemáticos para a  Ciência da Computação 3ª Edição. LTC Editora, Rio de Janeiro

RABUSKE, Marcia Aguiar. Introdução a Teoria de Grafos. Editora da UFSC, Florianópolis

NEO4J. Disponível em  <http://www.neo4j.org>. Acesso em 03 mai. 2013.

GREMLIN. Disponível em <http://gremlin.tinkerpop.com/>. Acesso em 03 mai. 2013.

O post Neo4j – Banco de Dados orientado a Grafos apareceu primeiro em TI Selvagem.

Arquivos CSV com C# no ASP .Net MVC 4

$
0
0

Existem várias formas de armazenar seus dados, uma delas é utilizar arquivos CSV, que são arquivos de textos que usam algum separador para seus campos, vamos ver como consumir esses arquivos em nossa aplicação em ASP .Net MVC.

Veja uma demonstração da aplicação utilizado como exemplo em http://cid.apphb.com/

A motivação deste post veio da necessidade de importar os dados do CID (Cadastro internacional de Doenças) do DataSUS, eles fornecem os arquivos em CSV com o cadastro das Doenças catalogadas em Capítulos, Grupos, Categorias e Subcategorias, veja abaixo um pequeno trecho de um dos arquivos:

1
2
3
4
5
NUMCAP;CATINIC;CATFIM;DESCRICAO;DESCRABREV;
1;A00;B99;Capítulo I - Algumas doenças infecciosas e parasitárias;I.  Algumas doenças infecciosas e parasitárias;
2;C00;D48;Capítulo II - Neoplasias [tumores];II.  Neoplasias (tumores);
3;D50;D89;Capítulo III  - Doenças do sangue e dos órgãos hematopoéticos e alguns transtornos imunitários;III. Doenças sangue órgãos hemat e transt imunitár;
4;E00;E90;Capítulo IV - Doenças endócrinas, nutricionais e metabólicas;IV.  Doenças endócrinas nutricionais e metabólicas;

Reparem como funciona a estrutura dos arquivos CSV, na primeira linha temos o nome dos campos (colunas) e as demais linhas são os dados, para estes arquivos foi utilizado o “;” como separador.
Todos os demais arquivos seguem esta mesma estrutura, sabendo disto temos como fazer um parse neste arquivos e depois manipula-los em memória.

Lendo o arquivos CSV em C#

Você pode armazenar estes arquivos para a leitura em uma pasta, ou dentro do próprio projeto usando o resources, neste caso utilizei os resources.
Antes de continuar precisamos instalar um pacote do nuget chamado CsvHelper.

1
PM> Install-Package CsvHelper

Uma vez instalado foi criado uma classe genérica para a leitura destes arquivos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System.Collections.Generic;
using System.IO;
using CsvHelper;
using CsvHelper.Configuration;
 
namespace Repositorio
{
    public class LerCsv<T> where T : class
    {
        public IEnumerable<T> Ler(string csv)
        {
            if (csv == null) return null;
            var configuracaoCsv = new CsvConfiguration { Delimiter = ";" };
            var csvReader = new CsvReader(new StringReader(csv), configuracaoCsv);
            return csvReader.GetRecords<T>();
        }
    }
}

Dentro desta classe foi criado um método Ler que recebe como parâmetro o conteúdo do arquivo CSV e retorna uma Lista de objetos que representam as linhas deste arquivo.
Uma vez criado o método genérico que fara a leitura do conteúdo do arquivo CSV qualquer objeto que for passado para este método será utilizado como estrutura que representa o arquivo CSV, para exemplificar reparem o código da classe que representa o arquivo de capítulos.csv, chamada ViewModelCapitulo.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class ViewModelCapitulo
    {
        //NUMCAP: número do capítulo (em numeração arábica); se igual a zero, indica o capítulo que contém os códigos não oficialmente pertinentes à CID-10;
        [CsvField(Name = "NUMCAP")]
        public string NumeroCapitulo { get; set; }
 
        //CATINIC: código da primeira categoria do capítulo;
        [CsvField(Name = "CATINIC")]
        public string CategoriaInicial { get; set; }
 
        [CsvField(Ignore = true)]
        public int CategoriaInicialCodigo
        {
            get { return Ferramentas.TrocaLetraPorNumero(CategoriaInicial); }
        }
 
        //CATFIM: código da última categoria do capítulo;
        [CsvField(Name = "CATFIM")]
        public string CategoriaFinal { get; set; }
 
        [CsvField(Ignore = true)]
        public int CategoriaFinalCodigo
        {
            get { return Ferramentas.TrocaLetraPorNumero(CategoriaFinal); }
        }
 
        //DESCRICAO: descrição (nome) do capítulo; e
        [CsvField(Name = "DESCRICAO")]
        public string Descricao { get; set; }
 
        //DESCRABREV: descrição (nome) abreviado do capítulo, com até 50 caracteres.
        [CsvField(Name = "DESCRABREV")]
        public string DescricaoAbreviada { get; set; }
    }

Reparem que a mesma estrutura (colunas) do arquivo csv foi representada na classe usando data annotations que vem com o CsvHelper (CsvField), no exemplo a propriedade da classe “NumeroCapitulo” representa a coluna “NUNCAP” do arquivo CSV, o que significa que o valor da coluna NUNCAP será carregada para a propriedade NumeroCapitulo.
As demais propriedades seguem o mesmo modelo, exceto é claro a propriedade “CategoriaInicialCodigo” que não representa nenhuma coluna do arquivo CSV de capítulos, uma vez que foi utilizado o data annotation “[CsvField(Ignore = true)]“.

Listando os dados de um arquivo CSV em C#

Uma vez criado as classes que serão utilizadas como base para os nossos arquivos CSV, precisamos utiliza-las através do nosso método “Ler” da classe “LerCsv.cs” como mostra o código da classe abaixo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
using System.Collections.Generic;
 
namespace Repositorio
{
    public class Repositorio
    {
        public IEnumerable<ViewModelCapitulo> ListarCapitulos()
        {
            var recurso = Properties.Resources.CID_10_CAPITULOS;
            return new LerCsv<ViewModelCapitulo>().Ler(recurso);
        }
 
        public IEnumerable<ViewModelGrupo> ListarGrupos()
        {
            var recurso = Properties.Resources.CID_10_GRUPOS;
            return new LerCsv<ViewModelGrupo>().Ler(recurso);
        }
 
        public IEnumerable<ViewModelCategoria> ListarCategorias()
        {
            var recurso = Properties.Resources.CID_10_CATEGORIAS;
            return new LerCsv<ViewModelCategoria>().Ler(recurso);
        }
 
        public IEnumerable<ViewModelSubCategoria> ListarSubCategorias()
        {
            var recurso = Properties.Resources.CID_10_SUBCATEGORIAS;
            return new LerCsv<ViewModelSubCategoria>().Ler(recurso);
        }
 
        public IEnumerable<ViewModelGrupoCid0> ListarGruposCid0()
        {
            var recurso = Properties.Resources.CID_O_GRUPOS;
            return new LerCsv<ViewModelGrupoCid0>().Ler(recurso);
        }
 
        public IEnumerable<ViewModelCategoriaCid0> ListarCateogiasCid0()
        {
            var recurso = Properties.Resources.CID_O_CATEGORIAS;
            return new LerCsv<ViewModelCategoriaCid0>().Ler(recurso);
        }
    }
}

Reparem o método “ListarCapitulos” ele nos retorna uma lista (IEnumerable) de objetos da classe ViewModelCapitulo.cs, para isso foi utilizado um arquivo CSV no resources chamado “CID_10_CAPITULOS”, e o valor deste arquivo (uma string) foi passada para a nossa classe genérica “LerCsv” através do método “Ler(recurso)” o mesmo se segue para os demais arquivos CSV e métodos.

Mostrando os dados do arquivo CSV no ASP .Net MVC

Agora que temos nossa estrutura toda montada, baste chamar os métodos de nossa classe repositório dentro das actions de nossos controller em ASP .Net MVC, como mostra o código do controller Home;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
using System.Linq;
using System.Web.Mvc;
using Repositorio;
 
namespace UI.Web.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            var repositorio = new Repositorio.Repositorio();
            var capitulos = repositorio.ListarCapitulos().ToList();
            return View(capitulos);
        }
 
        public ActionResult Capitulo(string id)
        {
            var repositorio = new Repositorio.Repositorio();
            var capitulo = repositorio.ListarCapitulos().FirstOrDefault(x => x.NumeroCapitulo == id);
            ViewBag.capitulo = capitulo;
            var grupos = repositorio.ListarGrupos().Where(x =>
                x.CategoriaInicialCodigo >= capitulo.CategoriaInicialCodigo &&
                x.CategoriaFinalCodigo <= capitulo.CategoriaFinalCodigo
                ).ToList();
            return View(grupos);
        }
 
        public ActionResult Grupo(string categoriaInicial, string categoriaFinal)
        {
            var repositorio = new Repositorio.Repositorio();
            var grupo = repositorio.ListarGrupos().FirstOrDefault(x => x.CategoriaInicial == categoriaInicial && x.CategoriaFinal == categoriaFinal);
            ViewBag.grupo = grupo;
            var capitulo = repositorio.ListarCapitulos().FirstOrDefault(x =>
                    grupo.CategoriaInicialCodigo >= x.CategoriaInicialCodigo &&
                    grupo.CategoriaFinalCodigo <= x.CategoriaFinalCodigo
                    );
 
            ViewBag.capitulo = capitulo;
 
            var categorias = repositorio.ListarCategorias().Where(x =>
                x.CodigoDaCategoriaCodigo >= grupo.CategoriaInicialCodigo &&
                x.CodigoDaCategoriaCodigo <= grupo.CategoriaFinalCodigo
                ).ToList();
 
            return View(categorias);
        }
 
        public ActionResult Categoria(string codigoDaCategoria)
        {
            var repositorio = new Repositorio.Repositorio();
 
            var categoria = repositorio.ListarCategorias().FirstOrDefault(x => x.CodigoDaCategoria == codigoDaCategoria);
 
            var subCategorias = repositorio.ListarSubCategorias().Where(x =>
               x.CodigoDaCategoria == codigoDaCategoria).ToList();
 
            categoria.ListaDeSubCategorias = subCategorias;
 
            var grupo = repositorio.ListarGrupos().FirstOrDefault(x => categoria.CodigoDaCategoriaCodigo >= x.CategoriaInicialCodigo && categoria.CodigoDaCategoriaCodigo <= x.CategoriaFinalCodigo);
            ViewBag.grupo = grupo;
 
            var capitulo = repositorio.ListarCapitulos().FirstOrDefault(x =>
                    grupo.CategoriaInicialCodigo >= x.CategoriaInicialCodigo &&
                    grupo.CategoriaFinalCodigo <= x.CategoriaFinalCodigo
                    );
 
            ViewBag.capitulo = capitulo;
 
            return View(categoria);
        }
 
        public ActionResult Detalhe(string codigo)
        {
            var repositorio = new Repositorio.Repositorio();
            var subcategoria = repositorio.ListarSubCategorias().FirstOrDefault(x => x.CodigoDaSubCategoria == codigo);
 
            return View(subcategoria);
        }
 
        public ActionResult Busca (string busca)
        {
 
            busca = Ferramentas.SubstituiAcentos(busca);
            var repositorio = new Repositorio.Repositorio();
            var subCategorias = repositorio.ListarSubCategorias().Where(x => x.DescricaoSemAcentos.ToLower().Contains(busca.ToLower())).ToList();
            ViewBag.busca = busca;
            return View(subCategorias);
        }
    }
}

Reparem a action Index e veja como foi simples listar todos os dados do capítulos de doenças utilizando a estrutura montada, bastou chamar o método “ListarCapitulos” da classe repositório e passar os valores para a View “Index.cshtml”, veja seu código.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@model List<Repositorio.ViewModelCapitulo>
@{
    ViewBag.Title = "W7SAUDE";
}
<h2>Busca CID</h2>
<div class="span12" style="margin-left: 0">
    @Html.Partial("_formBusca")
    <div class="span9">
        @foreach (var capitulo in Model)
        {
            <div class="span6" style="margin-left: 0; height: 110px; padding: 5px;">
                @{
            var titulo = capitulo.Descricao.Split('-');
            titulo[0] = titulo[0].Trim();
            titulo[1] = titulo[1].Trim();
                }
                <h2><a href="~/Home/Capitulo/@capitulo.NumeroCapitulo">@titulo[0]</a></h2>
                <p>@titulo[1]</p>
            </div>
        }
    </div>
</div>

Veja como manipular arquivos CSV se torna fácil utilizando o CsvHelper e uma classe genérica para fazer o trabalho de mapeamento para objetos.

Aproveite e veja o exemplo deste código rodando em http://cid.apphb.com/, ou baixe este código completo no meu GitHub no repositório CidDataSus.
Até breve pessoal!

[Post originalmente publicado em http://cleytonferrari.com/arquivos-csv-com-c-no-asp-net-mvc-4/ em 19/02/2013]

O post Arquivos CSV com C# no ASP .Net MVC 4 apareceu primeiro em TI Selvagem.

Domínio Fake, Alias de domínio e Binding de domínios no IISExpress

$
0
0

Já precisou criar uns domínios fake para teste em sua máquina de desenvolvimento? Ou melhor criar alias para domínios de teste. Na verdade o nome correto é Binding Domain, ou ligações de domínios, vamos ver como é simples criar nossos binding para domínios.

A motivação deste post: Aqui na empresa estamos criando um sistema para gerenciamento de prestações de contas para Câmaras Municipais, ai resolvemos criar um único sistema que basta trocar o template baseado no domínio que solicita, ou seja, baseado no domínio que é usado fornecemos os dados e o template do mesmo.

Criando o projeto para teste do Binding de Dominio

Para este exemplo foi criado um projeto em ASP .Net MVC chamado “MeusAliasDeUrl”, como template Basic, e adicionado um controller Home e uma View Index, como mostra o código abaixo.

HomeController.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
using System.Web.Mvc;
using MeusAliasDeUrl.Models;
 
namespace MeusAliasDeUrl.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ViewBag.Host = GetHost.Pegar();
            return View();
        }
    }
}

Index.cshtml

1
2
3
4
@ {
    ViewBag.Title = "Exemplo de Bindig de Dominio";
}
<h2>@ ViewBag.Host</h2>

Também foi criado um classe com o método que retorna qual domínio está solicitando a requisição, como mostra a classe abaixo.

GetHost.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
using System.Web;
 
namespace MeusAliasDeUrl.Models
{
    public class GetHost
    {
        public static string Pegar()
        {
            var url = HttpContext.Current.Request.Url.Host;   
            return url;
        }
    }
}

Configurando o Binding no IISExpress

Para configurar o alias para o nossos domínios fakes basta abrir o arquivo “applicationhost.config” que fica na pasta “Documents/IISExpress/config” do seu usuário do Windows.
No meu caso o caminho completo você pode ver abaixo.

1
c:\Users\Cleyton\Documents\IISExpress\config\applicationhost.config

Uma vez aberto o arquivo “applicationhost.config” basta procurar o nome do seu projeto dentro do arquivo, neste caso o projeto chama “MeusAliasDeUrl”, você vai encontrar as configurações deste seu projeto, procure a tag “binding” baseado no atributo já existente para “localhost”, crie quantos mais forem necessários, no meu caso, eu criei mais 3 domínios fakes.

1
2
3
4
5
6
7
8
9
10
11
<site name="MeusAliasDeUrl" id="55">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
         <virtualDirectory path="/" physicalPath="C:\Users\Cleyton\Documents\Visual Studio 2012\Projects\MeusAliasDeUrl\MeusAliasDeUrl" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:16529:localhost" />
        <binding protocol="http" bindingInformation="*:16529:dominiofake.com" />
        <binding protocol="http" bindingInformation="*:16529:camaraaltoparaiso.com" />
        <binding protocol="http" bindingInformation="*:16529:camaraariquemes.com" />
    </bindings>
</site>

Veja como é simples! Lembre-se de manter a porta padrão que o IISExpress gerou para o seu site, no meu caso foi a porta 16529, é logico que caso queira simular sua aplicação para que ela responda por outra porta basta trocar o numero da porta!

Configurando o Host da máquina local

Agora precisamos apontar nossos bindings de domínios para o ip da nossa máquina local, para isso precisamos editar o arquivos “c:\Windows\System32\Drivers\etc\hosts” lembre-se de abrir o editor como administrador, caso contrário você não conseguirá salvar as alterações neste arquivo.
Veja como ficou o meu arquivo Hosts.

1
2
3
4
5
...
127.0.0.1       dominiofake.com
127.0.0.1       camaraaltoparaiso.com
127.0.0.1       camaraariquemes.com
...

Testando os bidings de domínios

Agora basta rodar nossa aplicação em ASP .Net MVC, lembre-se de executar o Visual Studio como Administrador, caso contrário ele não terá permissão para acessar os nosso bindings.

Ao executar o Visual Studio ira chamar por padrão a url “http://localhost:16529″, basta digitar os outros domínios fakes no browser para testar a nossa aplicação.

dominios

Espero que tenham gostado desta dica ela é bastante útil quando você quer testar como sua aplicação vai se comportar com um domínio real, ou se quiser enganar algum serviço para teste, como por exemplo, ao testar aplicativos que se autenticam via Twitter por exemplo, ele não aceita o domínio localhost, ai você pode usar esta técnica de binding de domínios para testar na sua máquina a autenticação do twitter sem ter que publicar sua aplicação primeiro.
Até a próxima pessoal.

[Post originalmente publicado em http://cleytonferrari.com/dominio-fake-alias-de-dominio-e-binding-de-dominios-no-iisexpress em 24/02/2013]

O post Domínio Fake, Alias de domínio e Binding de domínios no IISExpress apareceu primeiro em TI Selvagem.

Vídeo-Aula ASP.Net MVC na prática – Parte 7

$
0
0

Esta é a sétima parte da série ASP .Net MVC na prática, que ira abordar os conceitos e práticas que norteiam o desenvolvimento de aplicativos baseado no padrão MVC utilizando o ASP .Net

Lembre-se: você pode baixar o código desta vídeo-aula no meu repositório do GitHub, https://github.com/cleytonferrari/ASPNETmvcNaPratica

Nesta sétima vídeo-aula sobre ASP .Net MVC é abordado:

  • Áreas
  • Criando controller com o mesmo nome

Durante o decorrer desta vídeo-aula sobre ASP .NET MVC você verá como criar Áreas e como usa-las para separar fisica e logicamente seu site/aplicativo, entenderá como corrigir o erro de controllers com o mesmo nome e aprenderá a criar links que aponte para as novas áreas.

Ao final desta vídeo-aula você será capaz de criar separações físicas para áreas administrativas ou de conteúdo em seu site ou aplicativo.

Para saber mais:

Lembre-se você pode participar da nossa comunidade no Facebook acessando https://www.facebook.com/groups/tiselvagem/

[Post originalmente publicado em http://cleytonferrari.com/video-aula-asp-net-mvc-na-pratica-parte-7/ em 01/04/2013]

O post Vídeo-Aula ASP.Net MVC na prática – Parte 7 apareceu primeiro em TI Selvagem.

Vídeo-Aula ASP.Net MVC na prática – Parte 8.1

$
0
0

Esta é a oitava parte da série ASP.Net MVC na prática, que ira abordar os conceitos e práticas que norteiam o desenvolvimento de aplicativos baseado no padrão MVC utilizando o ASP .Net

Lembre-se: você pode baixar o código desta vídeo-aula no meu repositório do GitHub, https://github.com/cleytonferrari/ASPNETmvcNaPratica

Nesta oitava vídeo-aula sobre ASP.Net MVC é abordado:

  • ADO .Net

Durante o decorrer desta vídeo-aula sobre ASP .NET MVC você verá como criar um banco de dados usando o SQL Server 2012 utilizando o Microsoft SQL Server Management Studio, vera como é simples criar uma entidade (tabela) e povoa-la. Nesta vídeo-aula ainda é demonstrado o uso dos comandos básicos: SELECT, INSERT, UPDATE e DELETE.

Ao final desta vídeo-aula você será capaz de criar um banco de dados simples e também criar entidades neste banco de dados assim como povoa-lo.

Para saber mais:

Lembre-se você pode participar da nossa comunidade no Facebook acessando https://www.facebook.com/groups/tiselvagem/

[Post originalmente publicado em cleytonferrari.com/video-aula-asp-net-mvc-na-pratica-parte-8 em 01/06/2013]

O post Vídeo-Aula ASP.Net MVC na prática – Parte 8.1 apareceu primeiro em TI Selvagem.


Vídeo-Aula ASP.Net MVC na prática – Parte 8.2

$
0
0

Esta é a oitava vídeo-aula parte 2 da série ASP.Net MVC na prática, que ira abordar os conceitos e práticas que norteiam o desenvolvimento de aplicativos baseado no padrão MVC utilizando o ASP .Net

Lembre-se: você pode baixar o código desta vídeo-aula no meu repositório do GitHub, https://github.com/cleytonferrari/ASPNETmvcNaPratica

Nesta oitava vídeo-aula parte 2 sobre ASP.Net MVC é abordado:

  • ADO .Net

Durante o decorrer desta vídeo-aula sobre ASP .NET MVC você verá como conectar sua aplicação com um banco de dados SQL Server, também é abordado um simples CRUD usando o console application para demonstrar os conceitos por trás da tecnologia ADO.Net.

Ao final desta vídeo-aula você será capaz de criar um simples aplicativo que se conecta a um banco de dados e realiza os comandos básicos para inserir, alterar, pesquisar e excluir um registro.

Para saber mais:

Lembre-se você pode participar da nossa comunidade no Facebook acessando https://www.facebook.com/groups/tiselvagem/

[Post originalmente publicado em cleytonferrari.com/video-aula-asp-net-mvc-na-pratica-parte-8-2 em 0/06/2013]

O post Vídeo-Aula ASP.Net MVC na prática – Parte 8.2 apareceu primeiro em TI Selvagem.

Vídeo-Aula ASP.Net MVC na prática – Parte 8.3

$
0
0

Esta é a oitava vídeo-aula parte 3 da série ASP.Net MVC na prática, que ira abordar os conceitos e práticas que norteiam o desenvolvimento de aplicativos baseado no padrão MVC utilizando o ASP .Net

Lembre-se: você pode baixar o código desta vídeo-aula no meu repositório do GitHub, https://github.com/cleytonferrari/ASPNETmvcNaPratica

Nesta oitava vídeo-aula parte 3 sobre ASP.Net MVC é abordado:

  • ADO .Net

Durante o decorrer desta vídeo-aula sobre ASP .NET MVC você verá como criar uma classe para encapsular os métodos para conexão com banco de dados SQL Server, método para executar um comando SQL no Banco de Dados e outro método para executar um comando no banco de dados que retorne os valores (SELECT) usando o console application para demonstrar os conceitos por trás da tecnologia ADO.Net.

Ao final desta vídeo-aula você será capaz de criar um simples aplicativo que se conecta a um banco de dados e realiza os comandos básicos para inserir, alterar, pesquisar e excluir um registro.

Para saber mais:

Lembre-se você pode participar da nossa comunidade no Facebook acessando https://www.facebook.com/groups/tiselvagem/

O post Vídeo-Aula ASP.Net MVC na prática – Parte 8.3 apareceu primeiro em TI Selvagem.

Vídeo-Aula ASP.Net MVC na prática – Parte 8.4

$
0
0

Esta é a oitava vídeo-aula parte 4 da série ASP.Net MVC na prática, que ira abordar os conceitos e práticas que norteiam o desenvolvimento de aplicativos baseado no padrão MVC utilizando o ASP .Net

Lembre-se: você pode baixar o código desta vídeo-aula no meu repositório do GitHub, https://github.com/cleytonferrari/ASPNETmvcNaPratica

Nesta oitava vídeo-aula parte 4 sobre ASP.Net MVC é abordado:

  • ADO .Net

Durante o decorrer desta vídeo-aula sobre ASP .NET MVC você verá como criar uma classe para encapsular os métodos para inserir, alterar e excluir um registro no banco de dados, também é mostrado o uso de uma classe para representar a entidade do banco de dados.

Ao final desta vídeo-aula você será capaz de refatorar o seu código para criar um simples aplicativo que se conecta a um banco de dados e realiza os comandos básicos para inserir, alterar, pesquisar e excluir um registro, usando os conceitos de reuso do seu código em orientação objeto.

Para saber mais:

Lembre-se você pode participar da nossa comunidade no Facebook acessando https://www.facebook.com/groups/tiselvagem/

[Post originalmente publicado em http://cleytonferrari.com/video-aula-asp-net-mvc-na-pratica-parte-8-4/ em 15/06/2013]

O post Vídeo-Aula ASP.Net MVC na prática – Parte 8.4 apareceu primeiro em TI Selvagem.

Vídeo-Aula ASP.Net MVC na prática – Parte 8.5

$
0
0

Esta é a oitava vídeo-aula parte 5 da série ASP.Net MVC na prática, que ira abordar os conceitos e práticas que norteiam o desenvolvimento de aplicativos baseado no padrão MVC utilizando o ASP .Net

Lembre-se: você pode baixar o código desta vídeo-aula no meu repositório do GitHub, https://github.com/cleytonferrari/ASPNETmvcNaPratica

Nesta oitava vídeo-aula parte 5 sobre ASP.Net MVC é abordado:

  • ADO .Net

Durante o decorrer desta vídeo-aula sobre ASP .NET MVC você verá como criar uma classe para encapsular os métodos para listar todos os registros de um banco de dados convertendo os registro para uma lista de objetos, através do uso do SQLDataReader.

Ao final desta vídeo-aula você será capaz de criar um CRUD (Create, Reader, Update e Delete), usando uma simples classe para encapsular todos as suas regras para montar comando SQL.

Para saber mais:

Lembre-se você pode participar da nossa comunidade no Facebook acessando https://www.facebook.com/groups/tiselvagem/

[Post originalmente publicado em http://cleytonferrari.com/video-aula-asp-net-mvc-na-pratica-parte-8-5/ em 23/06/2013]

O post Vídeo-Aula ASP.Net MVC na prática – Parte 8.5 apareceu primeiro em TI Selvagem.

Implementando um Value Object em CSharp

$
0
0

Bom pessoal neste post vou tentar explicar um pouco sobre Value Objects ou Objetos de Valor e demonstrar a implementação de um objeto de valor em CSharp.

Muitos objetos não possuem nenhuma identidade conceitual. Esses objetos descrevem alguma característica de alguma coisa. – Eric Evans

Ainda citando Eric Evans no livro Domain Driven Design,

Quando uma criança está desenhando, ela está preocupada com a cor da caneta que vai escolher, e pode estar preocupada com a espessura da ponta. Mas se houver duas canetas da mesma cor e de mesmo formato, ela provavelmente não vai se importar em qual delas está utilizando. Se uma caneta se perder e for substituída por outra da mesma cor tirada de uma nova embalagem, ela pode recomeçar o seu trabalho sem se preocupar com a troca.

Objetos de valor representam um aspecto descritivo do domínio, não sendo necessária nenhuma identidade conceitual. Uma instancia de um objeto de valor que tenha as mesmas características de uma segunda instância do mesmo objeto não devem ser diferenciadas por identidades únicas, pois, afinal o que importa são suas características. Um exemplo simples de objetos de valor, são as cores, não importa onde você utilize uma instancia de Vermelho em seu domínio, o vermelho será sempre vermelho, diferente de uma entidade onde, por mais que tenham características parecidas, sua identidade é diferente e importa para o domínio.

Vou utilizar um case da vida real para tentar explicar melhor. Em um software que estou trabalhando atualmente, nosso domínio tem por exemplo, Terrenos e Edificações como entidades. Todo Terreno tem uma Area, assim como toda Edificação. Em alguns módulos do sistema precisamos utilizar um Terreno com uma Area em Hectares, já a Edificação em Metros Quadrados. Ou em alguns casos mais específicos alguns Terrenos tem sua Area especificada em Alqueires ou Acres. O fato é que o sistema precisa fazer cálculos entre Áreas de Terrenos e Edificações, em alguns lugares precisaremos da Área de um Terreno em metros quadrados, em outros precisaremos da área em Hectares ou Alqueires.

Para resolver esse problema, criamos um Tipo chamado Area e esse tipo implementa todas as características de um Objeto de Valor. Então imaginemos o seguinte, um Terreno que tem uma Area especificada em metros quadrados e um segundo terreno que tem uma Area especificada em Hectares.

Terreno1 = 10.000m²
Terreno2 = 1hectare

O nosso design deve permitir a comparação entre as áreas desses terrenos, e mais, para o sistema a área dos dois terrenos deve ser a mesma, pois 1 hectare corresponde exatamente a 10.000 metros quadrados. Sendo assim temos aqui a configuração de um objeto de valor.

Primeiro, vejamos os testes necessários para o nosso objeto de valor Area:

E segundo, a implementação de Area:

Bem, não vou explicar com detalhes a implementação pois os testes já fazem isso, como resultado final poderemos por exemplo comparar as áreas de dois terrenos sem importar-se com a conversão de Metros pra Hectares, ou Alqueires, etc. O código completo demonstrado nesse post pode ser encontrado aqui no meu github:

https://github.com/emersonsoares/ValueObjectCSharp

Este post também se encontra em meu blog: http://emersonsoares.me/implementando-value-object-csharp/

O post Implementando um Value Object em CSharp apareceu primeiro em TI Selvagem.

Viewing all 61 articles
Browse latest View live