Arquivos

Arquivo para a categoria ‘ASP.NET MVC’

ASP.NET MVC e Open Souce

maio 10, 2012 1 comentário

aspnet-250x250

O MVC para ASP.NET já era Open Souce desde a primeira versão 1.0. Devido a isso não entrei no barulho que foi feito quando anunciaram recentemente que o MVC teria sido colocado sobre licença Open Souce. Fiz minha primeira palestra sobre o MVC no Eco Developers em Junho de 2009, na época ouvi comentários: “Não sei se isso vai pegar”, “Isso é voltar ao ASP3”, “Vou ter mais trabalho com o MVC”. Não sei se virou modinha usar MVC hoje em dia mas os comentários positivos e gurus sobre o assunto crescerem bastante.

Independente das mudanças de comportamento vamos ao que interessa:

  1. O ASP.NET MVC é open source desde a versão 1.0
  2. Outros produtos foram incorporados ao framework, produtos esses também sob licença open source: jQuery, jQuery UI, jQuery Mobile, jQuery Validation, Modernizr.js, NuGet, Knockout.js eJ SON.NET
  3. O que foi públicado recentemente é que o ASP.NET Web API e ASP.NET Web Pages (conhecido como Razor) foram liberados sobre a licença Apache 2.0 e que seus códigos fontes estão publicados no codeplex.

E daí? O que ganho com isso? (Uma vez falei isso em uma lista e tomei muita porrada)

O ASP.NET MVC é ainda um produto suportado pela Microsoft e vai ser liberado em suas entregas do .NET Framework e do Visual Studio, seu desenvolvimento vai ser realizado pelo time da própria Microsoft, no entanto podemos baixar atualizações e correções sem precisar esperar a próxima versão ou update, basta estar ligado no projeto pelo codeplex.

Para conhecer o projeto open souce acesse o codeplex:

http://aspnetwebstack.codeplex.com/

[]´s

Lino

 

Referências:

http://weblogs.asp.net/scottgu/archive/2012/03/27/asp-net-mvc-web-api-razor-and-open-source.aspx

http://www.hanselman.com/blog/ASPNETMVC4

CategoriasASP.NET MVC

ASP.NET MVC4 Beta – Bundling and Minification – Parte 02 – Final

Seguindo o post anterior:

Outro recurso interessante sobre o Bundling e Minification é a capacidade de explorar recursos do browser do cliente para gerar uma cache local dos seus arquivos de estilo e javascript. Ou seja, quando o cliente acessar nosso site pela primeira vez vamos enviar todo conteúdo necessário para apresentação do site, com esse conteúdo o browser vai armazenar localmente na máquina do cliente a versão dos nossos estilos e scripts para que a próxima vez que o site receber essa visita o desempenho vai ser superior, pois não vai ser necessário baixar novamente esse conteúdo.

O Framework 4.5 do ASP.NET e inclusive o MVC 4 possuem esse recurso, para utilizarmos precisamos colocar:

<link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Content/css")" rel="stylesheet" type="text/css" />
 <link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Content/themes/base/css")" rel="stylesheet" type="text/css" />
 <script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Scripts/js")"></script>

O próprio gerente de produto do ASP.NET comentou que é um pouco grande esse helper: System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl Smiley de boca aberta. No entanto ele é o responsável para que a cache seja criada no browser.

Olhando o código fonte da página vamos observar uma string mágica que é um hash dos arquivos que estão sendo feito o Bundling e Minification, esse hash vai ser gerado automaticamente a partir dos arquivos, ou seja, caso alguma modificação seja realizada em qualquer arquivo de estilho ou de script o hash a ser gerado vai ser outro e automaticamente o browser do cliente ao verificar esse hash vai perceber a modificação e então vai baixar os novos arquivos limpando a cache anterior.

Capturar1

Podemos realizar esses mesmos recursos via código para uma maior customização. Veja mais no blog do Scott Guthrie

Veja mais sobre o assunto em:

Referências:

http://weblogs.asp.net/scottgu/archive/2011/11/27/new-bundling-and-minification-support-asp-net-4-5-series.aspx

http://weblogs.asp.net/scottgu/archive/2012/02/19/asp-net-mvc-4-beta.aspx

Não deixe de ver esse vídeo:

http://channel9.msdn.com/Events/TechDays/Techdays-2012-the-Netherlands/2364/player?w=956&h=484

Abraço e até a próxima.

Lino

CategoriasASP.NET MVC

ASP.NET MVC4 Beta – Bundling and Minification – Parte 01

março 19, 2012 3 comentários

Pessoal,

O MVC 4 já chegou, está em beta e pode ser baixado e testado publicamente. Para isso aqui vai o link para conhecer mais: http://www.asp.net/mvc/mvc4

Algumas novidades do MVC4 são também novidades do Framework ASP.NET, logo muita coisa que vai vir no ASP.NET 4.5 vai beneficiar tanto os projetos desenvolvidos em MVC ou WebForms.

Um recurso interessante lançado e que podemos já testar é o Bundling and Minification. Uma breve explicação:

Bundling: É o processo de agrupar em apenas um arquivo javascript todos os outros arquivos existentes na solução web, ou seja, se temos dez arquivos javascript que vão ser utilizados no site vamos enviar apenas um com o objetivo de otimizar a solução reduzindo o tempo de envio de arquivos. Serve para folhas de estilo também (css).

Minification: É o processo de remover todos os caracteres em branco (espaços), comentários, quebras de linha. O objetivo para reduzir a quantidade de caracteres e consequentemente o tamanho final do arquivo, com isso otimizar o desempenho de um site reduzindo o tamanho dos arquivos de javascript e estilos (css) enviados ao cliente.

Por que realizar Bundling and Minification?
- Para otimizar o desempenho de recebimento dos arquivos essenciais do site para a máquina do cliente.

Por que otimizar esse envio?
- Para melhorar experiência do usuário e em cenários onde há acessos via smartphones é imprescindível para reduzir o trafego de dados.

Desafios:

  • Automatizar o processo de Bundling and Minification
  • Manter versões reduzidas para o deploy da solução e ao mesmo tempo manter versões em alto nível para facilitar desenvolvimento e manutenção dos códigos pelo time de desenvolvimento.

Com a versão beta do MVC4 já podemos testar e resolver esses desafios de forma nativa. O próprio Visual Studio faz o Bundling and Minification dos arquivos de forma natural e mantêm as versões em alto nível para a equipe de desenvolvimento e desing.

Vamos aos exemplos para demonstrar a otimização de acesso:

O exemplo abaixo foi realizado com o projeto padrão do próprio ASP.NET MVC 4 Beta. Com o novo template que o mesmo trouxe, foi feito acesso a página inicial com o tempo de duração e tamanho dos arquivos necessários para execução da página e estilos. Comparando os resultados observe a melhoria em performance.

imagem01
Imagem 01 – Observem a quantidade de arquivos e o tempo de download dos arquivos.

imagem02
Imagem 02 – Menor quantidade de arquivos, tempo e dados para baixar o mesmo conteúdo

E como usamos o recurso de Bundling and Minification? É simples basta usar a sintaxe a seguir no momento de referenciar os arquivos de javascript e css:

Ao invés de continuar referenciando as folhas de estilo dessa forma:

image_05021144
Imagem 03 – Referência Folha Estilo

Faça:

image_0EE702AF
Imagem 04 – Bundling and Minification com folhas de estilo no MVC 4 Beta

Onde o diretório styles foi mencionado e o conteúdo dele com folhas de estilo css

Da mesma forma para arquivos JavaScript:

image_6DF39007
Imagem 05 – Bundling and Minification com arquivos Javascript

Onde o diretório scripts foi mencionado e conteúdo dele com javascript js

É isso aí espero otimizar os sites de vocês. Smiley de boca aberta

No próximo post vou mostrar como fazer Bundling and Minification e ainda explorar recursos do browser do cliente para fazer cache dos nossos arquivos de javascript e css no browser do cliente. Aguardem…

Abraços

Lino

Referências:

http://weblogs.asp.net/scottgu/archive/2011/11/27/new-bundling-and-minification-support-asp-net-4-5-series.aspx

http://weblogs.asp.net/scottgu/archive/2012/02/19/asp-net-mvc-4-beta.aspx

Dependência de referências para publicar sites em ASP.NET MVC3

janeiro 14, 2012 1 comentário

Pessoal,

Como todos sabem o Visual Studio 2010, seja com o SP1 ou não, tem por padrão instalado o MVC 2.  No entanto, muitos projetos já estão sendo desenvolvidos em MVC 3, devido as várias melhorias e novas funcionalidades (Razor, Global Filters, etc).
Quando precisamos realizar deploy das nossas aplicações encontramos host’s com suporte ao MVC 3, porém esse “suporte” dos servidores não possuem as dll’s globais registradas e utilizadas pelo MVC3.

Para contornar essa situação basta enviar as dll’s com suas versões utilizadas pela versão três e sua aplicação estará funcionando perfeitamente. Incluindo versões mais atualizadas do Entity Framework 4.1.

Você tem duas opções para enviar todas referências necessárias:

1- Tentativa e erro. (Mande as que você acha que são necessárias, colocando “Copy Local = True” e vai evoluindo os erros do server até conseguir, com o risco de enviar coisas desnecessárias e ser considerado um newbie).

2- Ler essa dica e aprender fazer do jeito certo.

Para incluir no seu projeto as “Deployable Dependencies” basta clicar com o botão direito do mouse sobre o seu projeto MVC 3 e selecionar a opção: Add Deployable Dependencies. Ou então no menu do Visual Studio em Project > Add Deployable Dependencies

14-01-2012 09-50-44

Imagem01: Opção do Menu

14-01-2012 09-53-10

Imagem02: Dependências resolvidas e prontas para o deploy.

Referências:

http://haacked.com/archive/2011/05/25/bin-deploying-asp-net-mvc-3.aspx

CategoriasASP.NET MVC

SelectList ASP.NET MVC

agosto 5, 2011 5 comentários

Pessoal,

Como definir um elemento <select>  <option></option>  </select> do HTML conhecido em ASP.NET como DropDownlist tendo como selecionado o item desejado?

Por exemplo, temos duas entidades relacionadas entre si, Produto e Categoria. Cada produto tem então um relacionamento com categoria.

Vamos então imaginar uma View onde vamos editar um Produto. Precisamos oferecer a opção de trocar também a categoria do produto, para isso precisamos informar quais categoria temos cadastradas e o mais importante para usabilidade, pré-selecionar a categoria (dentre as listadas) o qual o produto se relaciona.

Vamos imaginar um produto (Xbox 360) relacionado com uma categoria (Consoles), ao editar esse produto a DropDownList precisa ter todas as categorias e deve estar selecionada a categoria (Consoles), mesmo que não seja ela a primeira da lista.

Se fosse em ASP.NET no code behind iriamos definir o SelectedIndex de acordo com o Id da categoria, o controle DropDownlist iria salvar o dia.

E em ASP.NET MVC?

Temos um extension method definido nos Html Helpers conhecido como Html.DropDownList

O mesmo tem uma implementação que espera um SelectList (veja mais sobre SelectList em: MSDN Library http://msdn.microsoft.com/en-us/library/system.web.mvc.selectlist.aspx ).

Ficou simples agora, precisamos então criar uma SelectList e retornar para a View a mesma, para que o Helper crie o elemento <select> e possa selecionar a opção desejada.

Mas como?

Esse mesmo helper espera um item presente na ViewData do MVC com um identificador contendo a lista de itens e o qual deles é o selecionado. Então vamos aos exemplos:

No controller você vai selecionar todos os registros existentes de categorias e informar quais são as propriedades que possuem o valor e o texto a ser apresentado no <select> e também qual o item a ser selecionado. E ao mesmo tempo retornar isso para ViewData, nesse caso utilizando o dinâmico ViewBag.

Exemplo:

ViewBag.Categoria = new SelectList(negocioCategoria.Listar(), "CategoriaId", "Nome", entidade.Categoria.CategoriaId);

  • O primeiro parâmetro desse construtor recebe um IEnumerable com todos elementos, ou seja, são todas as minhas categorias.
  • O segundo parâmetro recebe qual propriedade vai conter o Valor do <select>
  • O terceiro recebe qual propriedade vai conter o texto desse valor
  • O quarto e último recebe qual código é o selecionado, ou seja, aquele que esta relacionado com o produto no caso. Nesse exemplo o objeto entidade já foi preenchido e já tem o objeto relacionado também preenchido.

Depois disso na View precisamos apenas chamar o nosso Helper e passar para ele o campo dinâmico que criamos na ViewBag, aqui no exemplo ViewBag.Categoria. Exemplo:

@Html.DropDownList("Categoria", string.Empty)

Espero que ajudem os desenvolvedores leitores desse blog.

Aguardo feedback.

[]´s

Lino

HandleErrorAttribute – ASP.NET MVC

Pessoal,

Como realizar o handle de exceptions de suas actions presentes nos controles do ASP.NET MVC?

Podemos herdar o HandleErrorAttribute e criar nosso próprio atributo. E podemos então sobrepor o evento OnException e codificar o que devemos ou não fazer com a exceção que foi disparada.

Abaixo um exemplo de código onde faço a herança e implemento o evento. O seu conteúdo está usando o Enterprise Library para tomar outras ações como registrar log e informar ao usuário mensagens amigáveis e não de sistema. Outro post comentamos sobre o EL.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MensagemException;
using Microsoft.Practices.EnterpriseLibrary.ExceptionHandling;

namespace ViewMvc
{
    public class ErroSistema : HandleErrorAttribute
    {
        public override void OnException(ExceptionContext filterContext)
        {
            Exception erro = filterContext.Exception;
            Exception novoErro;
            bool rethrow = ExceptionPolicy.HandleException(erro, "Policy", out novoErro);

            base.OnException(filterContext);
        }
    }
}

Para utilizar o atributo basta ir à declaração da Action e colocar a declaração do atributo:

        [HttpPost]
        [ErroSistema]
        public ActionResult Novo(FormCollection colecao, Contato entidade)
        {
           // Aqui tem código...
           // ....
        }

Ou então se estiver usando o MVC 3 pode registrar esse atributo para toda aplicação devido aos Global Filters presente no seu Global.asax Exemplo:

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    //filters.Add(new HandleErrorAttribute());
    filters.Add(new ErroSistema { View = "Error" });
}

Lembre-se: Sempre colocar o web.config para mostrar custom errors e não aquela página de erro tradicional do .net.

<customErrors mode="RemoteOnly" />

ECO Developers 2010–Goiânia

novembro 7, 2010 5 comentários

Pessoal,

Venho convocar os profissionais de tecnologia do estado de Goiás a comparecerem no Castro’s Hotel no próximo dia 24/11/2010 as 08:00 até as 18:00 para um super evento.

Para mais detalhes, local, inscrição entre no site do ECODevelopers em Goiânia.
Para outras cidades veja se a sua esta no roteiro: ECODevelopers

[História]
O Eco surgiu em Goiânia em 2009 e foi idealizado pelo DevGoiás. Depois desse primeiro evento onde até mudas de árvores foram distribuídas a onda verde se espalhou pelo Brasil, primeiro foi Brasília e Natal que realizaram suas edições.

[Meu Histórico]
A primeira edição em Goiânia eu fui apresentar o ASP.NET MVC para o público, nessa época pouco se falava do MVC para ASP.NET e me lembro de comentários como: “Não sei se isso vai pegar”, “Isso é voltar no tempo”. Hoje o padrão já virou até modinha, então quem estava já ligado nessas novidades naquela época já está passos a frente da maioria hoje em dia. Veja mais nesse post e fotos desse evento

Depois recebi o convite para ir para Brasília e dessa vez eu fui apresentar junto ao Kenj o Windows Azure. Foi um evento bem bacana, com uma estrutura muito maior que de Goiânia e foi muito bacana estar em outra cidade realizando um evento idealizado aqui na minha cidade e com meus amigos de comunidade. Veja fotos desse evento.

[Atualidade]
Hoje o ECODevelopers é um evento de comunidade, qualquer uma pode realizar o mesmo desde que siga as regras públicas definidas e compartilhadas através do Creative Commons, para realizar na sua cidade procure o pessoal da organização.

Hoje são 11 (onze) cidades já confirmadas em vários estados e tudo começou em Goiânia, muito bacana isso!

Irei novamente apresentar o MVC  só que dessa vez irei falar da nova versão 3 que está no preview 1. Irei mostrar as novidades dessa versão e também reforçar a necessidade de aprender fazer certo. Vai ser uma apresentação direta no ponto principal do MVC na minha humilde opinião: “Alguns desenvolvedores não sabem programar para web.”

[Convite]
Venho reforçar o convite e pedir que compareçam no evento do próximo dia 24 e fiquem para minha apresentação, por favor já estudem o assunto antes e cheguem com dúvidas e questionamentos, vamos descobrir toda a verdade, somente a verdade. (Gravem essa frase para o dia do evento).

ASP.NET MVC–Sebrae–Comtec–Goiás

outubro 20, 2010 1 comentário

O pessoal do Sebrae e da Comtec organizaram um evento junto com o DevGoiás para trazer ao pessoal de Goiânia e região algumas novidades que foram apresentadas no Teched 2010. Como todos não tiveram a oportunidade de viajar a São Paulo para conferir no próprio TechEd foi uma excelente oportunidade de se atualizarem em alguns assuntos.

Minha missão foi o ASP.NET MVC 3 Preview 1, outros colegas como o Kono falou sobre o IE9 e HTML5, o Alliston sobre C# 4.0 e F#. O Marcelo Paiva sobre Windows Azure e a Sara sobre BPOS.

Foi bacana o evento, tivemos a oportunidade além de discutir sobre tecnologia também de integração entre os participantes aumentando nosso networking.

Grande abraço ao pessoal que esteve presente e meu muito obrigado ao pessoal do Sebrae e Comtec por mais essa oportunidade.

[]’s

Lino

DSC06705DSC06709

ASP.NET MVC–Workshop Politec Goiânia

No último dia 18/10/2010 estive no meu trabalho apresentando e discutindo sobre desenvolvimento para web e com isso mostrando como fazer certo utilizando ASP.NET MVC.

Peço desculpas por ter esquecido de registrar esse momento com fotos, mas foi um excelente evento. Foi inicialmente movido pelas minhas palavras e depois virou um bate-papo de várias perguntas e respostas do pessoal tirando dúvidas e explorando o máximo do que o MVC pode oferecer.

Foi bacana ver colegas que trabalham com Java vendo com é o nosso mundo no .NET e também analistas querendo conhecer melhor a parte técnica para escreverem melhor seus documentos.

Fica registro o evento.

Abraço

Agenda Palestras sobre ASP.NET MVC

Pessoal,

Gostaria de compartilhar minha agenda para essa semana, tenho dois eventos a realizar:

1- Workshop sobre ASP.NET MVC – Esse workshop vai ser realizado nas instalações da Politec (onde trabalho) para seus colaboradores, irei apresentar e orientar meus colegas sobre esse novo modo de desenvolvimento para web para quem trabalha com ASP.NET

2- Ciclo de palestras pós TechEd. O pessoal do Sebrae e Comtec estão organizando um ciclo de palestras sobre assuntos que foram passados ao público na última edição do TechEd Brasil. Minha missão novamente será o ASP.NET MVC 3 Preview 1 mostrando suas novidades aos desenvolvedores. Para realizar sua inscrição clique aqui.

Fiquem ligados que ainda temos o EcoDevelopers vindo aí, mais sobre o MVC.

Grande abraço.

Lino

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Join 490 other followers