O documento fornece informações sobre um mini-curso de programação para web, abordando: 1) objetivos de ensinar linguagens dinâmicas e estáticas e programação em camadas MVC; 2) não se tratar de um curso avançado de algoritmos ou programação; 3) o foco ser compreender o processo de desenvolvimento web de forma ágil.
3. Não é um curso de algoritmo.
Não é um curso de programação.
Não é um curso de Orientação a Objetos.
Não é um curso de estrutura de dados.
Não é um curso de SQL.
Não é um curso de design.
É um curso que engloba todos os ítens
listados acima de forma básica e algumas
coisas a mais.
4. Não é torna-lo um expert em
desenvolvimento para web.
É sim, fazê-lo compreender melhor o
processo de desenvolvimento de
softwares para a internet de forma ágil.
6. Linguagens dinâmicas
Rodam do lado do servidor (Server Side)
Interagem com banco de dados
C#, Java, PHP, Python, Ruby, Lua
Linguagens estáticas
Rodam do lado do cliente (Client Side)
Interagem com o usuário
Javascript, CSS
7. M
Model
Representa o modelo de dados dos objetos
Mantêm as regras de negócios dos objetos
V
View
Representa a parte visual da aplicação
Web, Desktop, Mobile
C
Controller
Controla as ações entre o model e a view
8. Criar banco de dados (1)
Criar tabelas no banco (2)
Criar a solução (3)
Criar um projeto Web Application (4)
Criar um projeto Class Library (DAO) (5)
Criar um projeto Class Library (DCL)(6)
Criar um arquivo dbml (7)
9. Conectar à base de dados (8)
Mapear banco no dbml (9)
Configurar o web.config (10)
Configurar referências (11)
Criar a classe Recursos (DCL) (12)
Criar a BaseDCL.class (13)
Criar a BaseDAO.class (14)
Criar a classe Categoria (DCL) (15)
Criar a classe CategoriaDAO (DAO) (16)
10. Criar a classe Produto (DCL) (17)
Criar a classe ProdutoDAO (DAO) (18)
Criar a master page (19)
Configurar a master page (20)
Criar a página com CRUD da Categoria (21)
Criar a página com CRUD do Produto (22)
Testar a aplicação (23)
Finalizar aplicação (24)
Preparar a publicação (25)
11. 1. Abrir o SQL Management.
2. Em “Security” clicar com botão direito em “Login”
e selecionar “new login”.
3. Criar p usuario “sistemadba” com senha
“515t3m4db4”.
4. Em Databases, clicar com botão direito em “new
database”.
5. Definir “miniCurso” para o nome.
12. 1. Ainda no SQL Management
2. Clique com o botão direito no banco criado e
selecione “New Query”.
3. Copie o conteúdo do arquivo miniCurso.SQL
para a query e execute.
4. Confira se as tabelas foram criadas.
5. Feche o SQL Management.
13. 1. Abra o Visual Studio 2008.
2. Clique em “File->New->Project”.
3. Na guia “Other Project Types” selecione “Visual
Studio Solutions”.
4. Dê o nome de miniCursoSLN.
14. 1. Em “Solution Explorer” clique com o botão direito
na solução e selecione “Add->New Project”.
2. Na guia “Visual C#” selecione “Web->ASP.NET
Web Application” .
3. Dê o nome de “miniCursoAPW”.
15. 1. Em “Solution Explorer” clique com o botão direito
na solução e selecione “Add->New Project”.
2. Na guia “Visual C#” selecione “Windows->Class
Library” .
3. Dê o nome de “miniCursoDAO”.
16. 1. Em “Solution Explorer” clique com o botão direito
na solução e selecione “Add->New Project”.
2. Na guia “Visual C#” selecione “Windows->Class
Library” .
3. Dê o nome de “miniCursoDCL”.
17. 1. Em “Solution Explorer” clique com o botão direito
no projeto “miniCursoDCL” e selecione “Add->
New Item”.
2. Selecione a categoria “Data->LINQ to SQL
CLASSES” .
3. Dê o nome de “miniCurso”.
18. 1. Em “Server Explorer” clique com o botão direito em “Data
Conections” e selecione “Add Conection”.
2. Em “Server name” coloque o nome do servidor de banco
de dados “nomeMaquinaSQLEXPRESS”.
3. Selecione a opção “Use SQL Server Authentication”.
4. Em “User name” coloque “sistemadba”.
5. Em “Password” coloque “515t3m4db4” (Save my
password).
6. Em “Select or enter a database name” digite “miniCurso”.
7. Clique em “Test Connection”
19. 1. Em “Server Explorer” expanda as tabelas do banco
“miniCurso” da conexão criada.
2. Selecione todas as tabelas e arraste para o arquivo
“miniCurso.dbml” aberto.
3. Salve o arquivo “miniCurso.dbml”.
4. Clique em “Build->Rebuild Solution”.
20. 1. Em “Solution Explorer” abrir o arquivo “web.config”
2. Antes de fechar a tag </configSettings> adicione o
conteúdo abaixo:
<sectionGroup name="applicationSettings"
type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="miniCursoAPW.Properties.Settings“
type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
</sectionGroup>
3. Abaixo da tag <system.web> adicionar:
<globalization culture="pt-BR" uiCulture="pt-BR" enableClientBasedCulture="true"/>
22. 5. Na tag <compilation debug> colocar como “true”
6. Na tag <authentication mode> colocar como “Forms”
7. Antes de fechar a tag <httpHandlers> adicionar:
<add path="Reserved.ReportViewerWebControl.axd" verb="*"
type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms,
Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false"/>
8. Antes de fechar a tag </configuration> adicionar:
<appSettings>
<add key="AppAmbiente" value="Desenvolvimento"/>
<add key="VirtualPath" value=""/>
</appSettings>
<system.web>
<httpRuntime maxRequestLength="102400"/>
</system.web>
23. 1. No “Solution Explorer” expanda o projeto miniCursoAPW e
no diretório “References” adicione as seguintes:
AjaxControlToolkit
miniCursoDAO
miniCursoDCL
System.Runtime.Serialization
System.ServiceModel
System.Transactions
2. Expanda agora o projeto miniCursoDAO e adicione as
seguintes referências:
miniCursoDCL
System.configuration
System.Data.Linq
System.Transactions
24. 3. Expanda o projeto miniCursoDCL e adicione as seguintes
referencias:
System.configuration
System.Drawing
System.Web
25. 1. No projeto miniCursoDCL crie uma nova classe com o
nome “Recursos”.
2. Adicione os seguintes “usings”:
using System.Web.UI.WebControls;
using System.IO;
using System.Web;
using System.Configuration;
using System.Web.Security;
3. Torne a classe “Pública”.
26. 4. Crie o seguinte método:
public static string RetornarStringConexao()
{
string AppAmbiente = ConfigurationManager.AppSettings["AppAmbiente"].ToString().ToLower();
string strConexao = string.Empty;
switch (AppAmbiente)
{
case "producao":
strConexao = ConfigurationManager.ConnectionStrings["ConnMiniCursoProducao"].ConnectionString;
break;
case "homologacao":
strConexao = ConfigurationManager.ConnectionStrings["ConnMiniCursoHomologacao"].ConnectionString;
break;
default:
strConexao =
ConfigurationManager.ConnectionStrings["ConnMiniCursoDesenvolvimento"].ConnectionString;
break;
}
return strConexao;
}
27. 4. Dentro do projeto “miniCursoDCL” crie uma classe com o
nome de “BaseDCL”.
5. Adicione os seguintes “usings”:
using System.Runtime.Remoting.Messaging;
using miniCursoDCL;
6. Altere o namespace para “miniCursoBaseDCL”.
7. Altere o tipo da classe para “Publica Abstrata”.
8. Crie a seguinte variavel dentro do método da classe:
internal miniCursoDataContext sdc = (miniCursoDataContext)CallContext.GetData("miniCursoDataContext");
28. 9. Logo abaixo da variável criada, crie o método abaixo:
public BaseDCL()
{
if (sdc == null)
{
sdc = new miniCursoDataContext(Recursos.RetornarStringConexao());
CallContext.SetData("miniCursoDataContext", sdc);
}
}
29. 1. No projeto miniCursoDAO crie uma classe com o nome
“BaseDAO”.
2. Adicione os seguintes “usings”:
using System.Runtime.Remoting.Messaging;
using miniCursoDCL;
3. Mude o namespace para “miniCursoBaseDAO”.
4. Troque o tipo da classe para “Pública Abstrata”.
5. Crie a seguinte variável dentro da classe:
internal miniCursoDataContext dataContext = (miniCursoDataContext)CallContext.GetData("miniCursoDataContext");
30. 6. Crie o seguinte método logo abaixo da variável criada
anteriormente:
public BaseDAO()
{
if (dataContext == null)
{
dataContext = new miniCursoDataContext(Recursos.RetornarStringConexao());
CallContext.SetData("miniCursoDataContext", dataContext);
}
}
31. 1. Dentro do projeto “miniCursoDCL” crie uma classe com o
nome “Categoria”.
2. Adicione o seguinte “using”:
using miniCursoBaseDCL;
3. Mude o tipo da classe para “Pública Parcial” e extenda a
classe “BaseDCL”.
32. 4. Crie o seguinte método dentro da classe:
public bool Validar()
{
try
{
bool flag = true;
if (string.IsNullOrEmpty(this.desCategoria))
{
flag = false;
}
return flag;
}
catch (Exception)
{
throw;
}
}
33. 1. Dentro do projeto “miniCursoDAO” crie uma classe com o
nome “CategoriaDAO”.
2. Adicione os seguintes “usings”
using System.ComponentModel;
using miniCursoBaseDAO;
using miniCursoDCL;
3. Torne a classe “Pública” e extenda a classe
BaseDAO
4. Adicione logo acima do nome da classe o seguinte:
[System.ComponentModel.DataObject]
34. 5. Dentro do projeto “miniCursoDAO” crie uma classe com o
nome “.
6. Crie o seguinte método (Select com filtro):
[DataObjectMethod(DataObjectMethodType.Select, false)]
public List<Categoria> ObterListaComFiltro()
{
var query = (from c in dataContext.Categorias
where c.flaStatus != 'E'
select c);
return query.ToList();
}
35. 7. Crie o seguinte método (Select sem filtro):
[DataObjectMethod(DataObjectMethodType.Select, false)]
public List<Categoria> ObterLista()
{
var query = (from c in dataContext.Categorias
select c);
return query.ToList();
}
36. 7. Crie o seguinte método (Select Por Código):
public Categoria buscaPorChave(int idCategoria)
{
try
{
Categoria tpCategoria = dataContext.Categorias.Where(tr => tr.idCategoria =
idCategoria).SingleOrDefault();
if (tpCategoria != null)
{
return tpCategoria;
}
else
{
return null;
}
}
catch (Exception)
{
throw;
}
}
37. 7. Crie o seguinte método (Insert):
[DataObjectMethod(DataObjectMethodType.Insert, false)]
public void Inserir(Categoria tpCategoria)
{
try
{
if (tpCategoria.Validar())
{
dataContext.Categorias.InsertOnSubmit(tpCategoria);
dataContext.SubmitChanges();
}
}
catch
{
throw;
}
}
38. 7. Crie o seguinte método (Update):
[DataObjectMethod(DataObjectMethodType.Update, false)]
public void Alterar(Categoria tpCategoria)
{
try
{
Categoria categoria = buscaPorChave(tpCategoria.idCategoria);
if (categoria != null)
{
categoria.desCategoria = tpCategoria.desCategoria;
if (categoria.Validar())
{
dataContext.SubmitChanges();
}
}
}
catch (Exception)
{
throw;
}
}
40. 1. No projeto “miniCursoDCL” crie uma classe com o
nome “Produto”.
2. Adicione o seguinte “using”:
using miniCursoBaseDCL;
3. Modifique a classe para “Pública Parcial” e extenda a
classe BaseDCL.
41. 4. Dentro da classe, crie o seguinte método:
public bool Validar()
{
try
{
bool flag = true;
if (string.IsNullOrEmpty(this.desProduto))
{
flag = false;
}
return flag;
}
catch (Exception)
{
throw;
}
}
42. 1. Dentro do projeto “miniCursoDAO” crie a classe
“ProdutoDAO”.
2. Adicione os seguintes “usings”:
using System.ComponentModel;
using miniCursoBaseDAO;
using miniCursoDCL;
3. Modifique o tipo da classe para “Pública” e extenda a
classe “BaseDAO”.
4. Adicione a seguinte linha logo acima do nome da classe:
[System.ComponentModel.DataObject]
43. 5. Crie o seguinte método. (Select com filtro)
[DataObjectMethod(DataObjectMethodType.Select, false)]
public List<Produto> ObterListaComFiltro()
{
var query = (from p in dataContext.Produtos
where p.flaStatus != 'E'
select p);
return query.ToList();
}
44. 5. Crie o seguinte método. (Select sem filtro)
[DataObjectMethod(DataObjectMethodType.Select, false)]
public List<Produto> ObterListaComFiltro()
{
var query = (from p in dataContext.Produtos
select p);
return query.ToList();
}
45. 5. Crie o seguinte método. (Select com join)
[DataObjectMethod(DataObjectMethodType.Select, false)]
public object ObterListaModify()
{
var query = (from p in dataContext.Produtos
join c in dataContext.Produtos on p.idProduto equals c.idProduto
select new
{
idProduto = p.idProduto,
desProduto = p.desProduto,
idCategoria = p.idCategoria,
desCategoria = c.desCategoria,
flaStatus = p.flaStatus
});
return query.ToList();
}
46. 5. Crie o seguinte método. (Select por chave)
public Produto buscaPorChave(int idProduto)
{
try
{
Produto tpProduto = dataContext.Produtos.Where(tr => tr.idProduto == idProduto).SingleOrDefault();
if (tpProduto != null)
{
return tpProduto;
}
else
{
return null;
}
}
catch (Exception)
{
throw;
}
}
47. 5. Crie o seguinte método. (Insert)
[DataObjectMethod(DataObjectMethodType.Insert, false)]
public void Inserir(Produto tpProduto)
{
try
{
if (tpProduto.Validar())
{
dataContext.Produtos.InsertOnSubmit(tpProduto);
dataContext.SubmitChanges();
}
}
catch
{
throw;
}
}
48. 5. Crie o seguinte método. (Update)
[DataObjectMethod(DataObjectMethodType.Update, false)]
public void Alterar(Produto tpProduto)
{
try
{
Produto produto = buscaPorChave(tpProduto.idProduto);
if (produto != null)
{
produto.desProduto = tpProduto.desProduto;
produto.idCategoria = tpProduto.idCategoria;
if (produto.Validar())
{
dataContext.SubmitChanges();
}
}
}
catch (Exception)
{
throw;
}
}
50. 1. No projeto “miniCursoAPW” clique com o botão direito e
selecione “Add->New Item”.
2. Na categoria “Visual C#” selecione Master Page e dê o
nome de “miniCurso”.
51. 1. No projeto “miniCursoAPW” clique com o botão direito e
selecione “Add->New Folder”.
2. Dê o nome de “css”.
3. Crie um novo diretório e chame de “images”.
4. Copie o arquivo “style.css” de dentro do diretório “css” em
“Arquivos Auxiliares” para o diretório “css” do projeto
criado.
5. Copie as imagens do diretório “images” dentro de “Arquivos
Auxiliares” para o diretório “images” do projeto criado.
52. 6. Na página “miniCurso.Master” apague o conteúdo da
segunda linha para baixo.
7. Copie o conteúdo do arquivo “miniCurso.Master.txt” do
diretório “Arquivos Auxiliares” para logo abaixo da primeira
linha da página “miniCurso.Master”.
8. No arquivo “miniCurso.Master.cs” adicione os seguintes
“usings”:
using System.Data;
using AjaxControlToolkit;
using System.Configuration;
using System.Drawing;
using System.Web.UI.HtmlControls;
53. 9. Copie o método do arquivo “miniCurso.Master.cs.txt” que
está dentro do diretório “Arquivos Auxiliares” para o arquivo
“miniCurso.Master.cs” do projeto logo abaixo do método
“Page_Load”.
54. 1. Clique com o botão direito no projeto “miniCursoAPW”,
selecione “Add->New Item”.
2. Dentro da categoria “Visual C#” selecione “Web Content
Form”, dê o nome de “cadCategoria” e selecione a
“miniCurso.Master” como Master Page.
55. 3. Na página “cadCategoria.aspx” dentro do “Content2”
adicione o código abaixo:
* Ver em “cadCategoria_Content2.aspx.txt”
56. 4. Na página “cadCategoria.aspx” dentro do “Content3”
adicione o código abaixo:
* Ver em “cadCategoria_Content3.aspx.txt”
5. Na página “cadCategoria.aspx.cs” adicionar os seguintes
“usings”:
using miniCursoDCL;
using miniCursoDAO;
6. Instancie os seguintes objetos:
Categoria categoria = new Categoria();
CategoriaDAO categoriaDAO = new CategoriaDAO();
57. 7. Ainda na página “cadCategoria.aspx.cs” criar o método
“Cadastrar”.
Ver arquivo “cadCategoria_Cadastrar.aspx.cs.txt”
8. Criar o método “Atualizar”.
Ver arquivo “cadCategoria_Atualizar.aspx.cs.txt”
9. Criar o método “Editar”.
Ver arquivo “cadCategoria_Editar.aspx.cs.txt”
10. Criar o método “Excluir”
Ver arquivo “cadCategoria_Excluir.aspx.cs.txt”
58. 11. Criar o método “limparCampos”.
Ver arquivo “cadCategoria_LimparCampos.aspx.cs.txt”
12. Na página “cadCategoria.aspx” adicione referência aos
métodos da Master Page:
<%@ MasterType VirtualPath="~/miniCurso.Master" %>
59. 1. No projeto “miniCursoAPW” clicar com o botão direito e
selecionar “Add->New Item”.
2. Na categoria “Visual C#” selecione “Web Content Form”, dê
o nome de “cadProduto” e selecione a “miniCurso.Master”
como Master Page.
60. 3. Na página “cadProduto.aspx” dentro do “Content2” adicione
o código abaixo:
* Ver em “cadProduto_Content2.aspx.txt”
61. 4. Na página “cadProduto.aspx” dentro do “Content3” adicione
o código abaixo:
* Ver em “cadProduto_Content3.aspx.txt”
5. Na página “cadProduto.aspx.cs” adicionar os seguintes
“usings”:
using miniCursoDCL;
using miniCursoDAO;
6. Instancie os seguintes objetos:
Produto produto = new Produto();
ProdutoDAO produtoDAO = new ProdutoDAO();
62. 7. Ainda na página “cadProduto.aspx.cs” criar o método
“Cadastrar”.
Ver arquivo “cadProduto_Cadastrar.aspx.cs.txt”
8. Criar o método “Atualizar”.
Ver arquivo “cadProduto_Atualizar.aspx.cs.txt”
9. Criar o método “Editar”.
Ver arquivo “cadProduto_Editar.aspx.cs.txt”
10. Criar o método “Excluir”
Ver arquivo “cadProduto_Excluir.aspx.cs.txt”
63. 11. Criar o método “limparCampos”.
Ver arquivo “cadProduto_LimparCampos.aspx.cs.txt”
12. Na página “cadProduto.aspx” adicione referência para os
métodos da Master Page:
<%@ MasterType VirtualPath="~/miniCurso.Master" %>
64.
65. Criar a classe DCL para Cliente
Criar a classe DAO para Cliente
Criar o CRUD para o Cliente
Criar a classe DCL para Contato
Criar a classe DAO para Contato
Criar o CRUD para o Contato
Testar
66.
67. As empresas vem procurando formas de
desenvolver softwares cada vez mais
rápido.
Por outro lado, os desenvolvedores devem
fazer softwares realmente funcionais,
que ao final realmente atendam os
objetivos do seu cliente.