Num site ASP.NET, o URL estava quase sempre mapeado com um ficheiro em disco. O mais normal é este mapeamento ser para um ficheiro .aspx, que contém estrutura de html e código para ser executado aquando do pedido.
Na framework ASP.NET MVC, em vez de o URL mapear um ficheiro em disco, este mapeia uma ação de um controlador. O controlador é responsável por tratar as interações do utilizador e executar a lógica apropriada para esse pedido. No final, chama uma vista para que esta gere o HTML correto da resposta.
Este mapeamento entre o URL e o controlador é gerido pelo motor de encaminhamento. Este motor tem uma série de rotas (regras que especificam como é que os segmentos do URL devem de estar estruturados) que permite atribuir um controlador a um determinado URL. O motor de encaminhamento também pode extrair valores de variáveis, especificadas no URL, e passá-los para as ações do controlador como parâmetros.
As rotas são carregadas no Application Start do global.asax
e estão definidas no ficheiro RouteConfig que se encontra na pasta App_Start.
Por defeito, são criadas logo 2 regras de encaminhamento. A primeira rota indica que os URLs de pedidos com a extensão .axd (como ScriptResource.axd e WebResource.axd) são ignorados pelo motor de encaminhamento e são tratados pelos handlers correspondentes. A segunda rota é uma regra padrão para todo o site em que define que os URLs vão ter no primeiro segmento o nome do controlador, no segundo segmento e nome da ação desse controlador e no terceiro segmento um identificador (que é uma variável a ser passada para um das ações do controlador e que pode ser opcional). Assim, para o URL /Projects/List, o motor de encaminhamento executaria a ação List do controlador Projects. Se o URL for /Projects/Details/1, será executada a ação Details do controlador Projects e a ação Details teria 1 como valor da variável Id, podendo assim ser apresentado o detalhe do primeiro projeto.
Também se pode definir os valores por defeito de cada uma das variáveis de uma regra. Assim, para a rota Default, está especificado que caso não seja especificado uma ação, o valor por defeito será Index e caso não seja especificado o controlador, o valor por defeito será Home. Isto faz com que o motor de encaminhamento, ao tratar o URL /Projects execute a ação Index do controlador Projects.
Esta rota pode ser alterada ou pode-se acrescentar mais rotas para responder às necessidades do site. Por exemplo, para um site que tenha uma área privada para administração de dados pode-se adicionar uma rota com um dos segmentos fixo:
routes.MapRoute(
name: "Administration",
url: "Administracao/{controller}/{action}/{id}",
defaults: new { controller = "HomeAdmin", action = "Index", id = UrlParameter.Optional }
);
Com esta rota, já se conseguiria responder ao URL /Administracao/ProjectAdmin/Add. O motor de encaminhamento iria executar a ação Add que estava no controlador ProjectAdmin.
Uma outra rota que se poderia adicionar, e para fazer um site multi-idioma, seria:
routes.MapRoute(
name: "MultiCulture",
url: "{culture}/{controller}/{action}/{id}",
defaults: new {culture = "en-GB", controller = "HomeAdmin", action = "Index", id = UrlParameter.Optional }
);
O culture passa a ser uma variável que será tratada, a nível do controlador, para apresentar a página no idioma correto. Assim, a mesma rota poderia responder ao URL /pt-PT/Projects/List, /en-GB/Projects/List e /fr-FR/Projects/List, executando a ação List do controlador Projects mas apresentando a página no idioma português, inglês e francês correspondentemente.
Na procura da rota correspondente para um URL, o motor de encaminhamento acede à tabela de rotas e seleciona a primeira rota para a qual o URL cumpre a regra nela especificada. O não cumprimento da regra pode ser por não existir o controlador, por não existir a ação ou por a assinatura do método da ação não corresponder com as variáveis da rota. No caso de não encontrar qualquer regra válida rerá retornado um erro 404.
segunda-feira, 24 de junho de 2013
segunda-feira, 17 de junho de 2013
A estrutura de um projeto ASP.NET MVC
Após a criação de um projeto ASP.NET MVC 4 Web Application, este apresenta, por defeito, a seguinte estrutura:
Como é um projeto MVC, existem pastas para o Models, Views e Controllers, bem como mais algumas pastas adicionais.
- App_Data - é a pasta que contem os dados locais da aplicação, sendo comum ter nesta pasta ficheiros de base de dados (.mdf) ou de xml;
- App_Start - nesta pasta fica todo o código que configura o comportamento da aplicação ASP.NET MVC. Nas versões anteriores, todo este código estava inserido diretamente no ficheiro Global.asax;
- Content - vai conter todos os ficheiros de cascading style sheet ou outros ficheiros estáticos que definam o aspeto gráfico da aplicação;
- Controllers - pasta recomendada para armazenar todos os ficheiros de controladores. Estes ficheiros têm sempre o seu nome a terminar com "Controller" (por exemplo, HomeController);
- Filters - aqui vamos ter todos as definições de filtros que se podem atribuir às ações dos controladores. Estes filtros são pedaços de código que serão executados antes e depois da execução do código da ação (por exemplo, filtro para output caching);
- Images - local indicado para armazenar todas as imagens do site;
- Model - contem todas classes que representam o modelo de dados da aplicação. Estas classes vão definir objetos e lógica que interage com os dados da aplicação;
- Scripts - pasta específica para conter todo o javascript que suporta a aplicação;
- Views - vai conter todas as vistas. Podem ser ViewPage (.aspx), ViewUserControl (.ascx) e ViewMasterPage (.master). As extensões dos ficheiros podem mudar caso o motor de vistas seja diferente de WebFormViewEngine. Por exemplo, com o motor de vistas Razor, todos os ficheiros têm extensão .cshtm. A pasta Views vai ter uma pasta por cada controlador, sendo o nome da pasta o prefixo do controlador (por exemplo, para o controlador HomeController, a pasta das vistas será Home). Por defeito, também existe uma pasta com o nome Shared que serve para armazenar as vistas que são partilhadas entre vários controladores (por exemplo, a master page).
quinta-feira, 13 de junho de 2013
ASP.NET MVC
O QUE É ASP.NET MVC
ASP.NET é uma framework de programação para a criação de sites que suporta 3 modelos de desenvolvimento: Web Pages, Web Forms e MVC.
Destes 3 modelos o que me dá mais prazer é, sem dúvida, o MVC. O MVC é um padrão de arquitetura que já existia há algum tempo, mas só foi introduzido na camada ASP.NET nos finais de 2007 como CTP. Neste momento já se encontra na versão 4.0.
Este modelo de arquitetura separa a aplicação em 3 componentes principais: model (modelo), view (vista) e controller (controlador). Daí a sigla MVC.
E para que serve cada um destes componentes?
Model - é a parte da aplicação que trata a lógica dos dados. O mais comum é ter a lógica para obter e manter dados de uma base de dados.
View - é a parte da aplicação que trata da apresentação dos dados.
Controller - é a parte da aplicação que trata as interações do utilizador, fazendo a ponte entre o model e a view. Por exemplo, para um pedido do utilizador, o controlador vai obter os dados do modelo e seleciona a vista correta para os apresentar.
As grandes vantagens deste modelo são:
- separação de conceitos - devido à sua arquitetura, cada aspeto da aplicação tem a sua área: a lógica de UI está na vista, a lógica de interação está no controlador e a lógica de negócio está no modelo;
- altamente testável - como a dependência entre as camadas é uma dependência pouco vincada, a aplicação pode ser facilmente testada;
- performance - não utiliza o ViewState para gestão automática de estados o que faz com que o tamanho das páginas seja menor, fazendo com que sejam mais rápidas a descarregar;
- melhor gestão do projeto - devido à separação de conceitos pode-se estruturar as esquipas de trabalho de forma a trabalharem em paralelo.
Esta framework também possui um componente mapeador de endereços, permitindo que o url seja mais user friendly e mais legíveis, sendo assim melhor para SEO.
COMO CRIAR UM SITE ASP.NET MVC
Para criar uma aplicação ASP.NET MVC é necessário o Visual Studio (existe a versão Virtual Studio Express que é uma versão gratuita).
Depois de abrir uma instância do Visual Studio, clica-se em New Project... da página de arranque ou através do menu File > New > Project. Na janela de diálogo, seleciona-se do lado esquerdo a template Web, do lado direito ASP.NET MVC 4 Web Application e em baixo define-se o nome da aplicação a criar.
Surge uma nova janela de diálogo em que podemos especificar que tipo de aplicação ASP.NET MVC é que queremos criar. Seleciona-se a opção Internet Application pois esta template já tem algumas páginas e fica mais fácil de ver a potencialidade da aplicação. Na opção View Engine pode-se escolher o motor das Views. Pode-se escolher entre APSX ou Razor.
Ao fazer OK o Visual Studio cria uma aplicação "Hello World", com toda a estrutura MVC. Este é um bom começo para uma aplicação.
Executar a aplicação, carregando em F5 ou através do menu Debug > Start Debugging, vai fazer com que o Visual Studio arranque com o IIS Express e lança uma janela do explorador para visualizar o site criado.
Esta aplicação cria, logo à cabeça, algumas páginas que depois podem ser personalizadas (Home, About e Contact).
Subscrever:
Comentários (Atom)
