Desenvolvimento para Windows Phone 7 – Introdução

Desenvolvimento para Windows Phone 7 – Introdução

Criado por Vítor M. em 24 de Janeiro de 2011 | 13 comentários

Por Helder Ferreira para o PPLWARE.COM
Como Developer por profissão, mais orientado às plataformas de desenvolvimento Microsoft nomeadamente ASP.Net, Silverlight e mais recentemente em Windows Phone 7, tracei o objectivo de dinamizar uma nova secção sobre “desenvolvimento para Windows Phone 7″. Vamos debruçar na configuração do sistema para dar início a esse desenvolvimento e criação de aplicações para o mesmo.

Visão Geral

Muitos consideram o Windows Phone 7 como sendo o sucessor do Windows Mobile 6.5, e mesmo que o seja em termos de ciclo de vida do produto, são fundamentalmente completamente distintos do ponto de vista operativo.

No “velhinho” Windows Mobile tínhamos a vantagem do sistema ser extremamente personalizável mas em muitos casos isso criava instabilidade obrigando-nos muitas vezes ao conhecido “soft reset”.

No extremo oposto temos agora o Windows Phone 7, um sistema WYSIWYG “what you see is what you get”, que por si torna o sistema menos flexível mas ganha em termos de estabilidade e velocidade desde o momento que ligamos o dispositivo e mesmo após várias horas de uso intensivo do mesmo. Esta questão é um ponto de viragem com o passado, o facto de aplicação após aplicação o sistema mantém a velocidade sempre a um nível espantoso.

É claro que muitos podem afirmar que o sistema está limitado a uma resolução, a um interface, a um teclado, e a requisitos de hardware estabelecidos pela empresa de Seattle, mas ao fazer isto a Microsoft acaba por controlar a experiência do utilizador e manter um nível de utilização uniforme e controlado.

As ferramentas de desenvolvimento

Neste ponto a Microsoft investiu bastante na criação de um ambiente integrado para o desenvolvimento de aplicações para o novo sistema, para além de serem ferramentas que a maior parte dos programadores. Net já estarem perfeitamente ambientados.

Existe mesmo um pack, gratuito, que instala todas as ferramentas necessárias para o início do desenvolvimento, “The Windows Phone Developer Tools” inclui o seguinte:

  • Visual Studio 2010 Express for Windows Phone
  • Windows Phone Emulator Resources
  • Silverlight 4 Tools For Visual Studio
  • XNA Game Studio 4.0
  • Microsoft Expression Blend for Windows Phone

Estas ferramentas permitem desde a criação, codificação, testes e até um tratamento do aspecto gráfico da aplicação com o “Expresion Blend”. Estão disponíveis em inglês, francês, Italiano, alemão, e espanhol, infelizmente neste momento ainda não estão disponíveis em português.

Todos os links para o download destas ferramentas encontram-se no final do artigo.

Tecnologia de programação

A plataforma de programação permite a utilização de duas plataformas para o desenvolvimento de aplicações:

  • Silverlight – Ideal para a criação de Rich Internet Applications, ideal para a criação de aplicações mais rapidamente, com controlos disponibilizados pela framework que assegura a integração com o sistema a nível visual.
    Suporta a criação de aplicações em C# ou VB.
  • XNA Framework – mais vocacionada para a criação de jogos para a plataforma gaming da Microsoft.

É de notar que esta nova plataforma não é compatível com a plataforma Windows mobile 6.x, ou seja, quem já tinha desenvolvido aplicações para a versão anterior tem que efectuar a migração.

Este ponto é controverso, pois quem já tinha investido na criação de aplicações para a plataforma móvel Windows, tem agora que disponibilizar mais tempo para as adaptar a estas novas plataformas.

Conclusão

A Microsoft renova assim a sua proposta a nível móvel, introduzindo conceitos completamente novos em comparação com a entrega anterior, mudando até completamente, o rumo seguido até agora.

A utilização de ferramentas de desenvolvimento já muito conhecidas na criação de aplicações para a plataforma Windows faz com que a curva de aprendizagem seja bastante pequena, permitindo o foco na idealização e maturação das aplicações. A utilização nas aplicações dos novos conceitos disponibilizados pelos equipamentos mais recentes, geolocalização por exemplo, é efectuada de uma forma muito mais simplificada relativamente à proposta anterior.

Nos próximos artigos irei aprofundar alguns destes conceitos falados anteriormente, e após uma breve apresentação das ferramentas de desenvolvimento, vamos colocar as “mãos na massa” e começar a desenvolver aplicações para esta nova plataforma.

Não hesitem a enviar sugestões e as vossas opiniões.

Links

Ferramentas de programação: App Hub Tools
Página do portal de desenvolvimento: App Hub

DevCheats – Cheat Sheets de programação no Android

DevCheats – Cheat Sheets de programação no Android

Criado por Pedro Pinto em 19 de Janeiro de 2011 | 12 comentários

Actualmente são muitas as linguagens de programação que um utilizador tem à disposição para realizar as suas próprias aplicações/scripts. Para quem costuma programar em mais do que uma linguagem, às vezes torna-se difícil lembrar-se de todas as funções e respectivos parâmetros. É claro que podemos sempre consultar o “inteligente” google e tirar as nossas dúvidas mas, através da aplicação DevCheats, podemos também consultar o nosso Android.

cheat_00

O DevCheats é uma pequena aplicação para Android, que funciona com uma “bíblia” das principais funções associadas às linguagens de programação e plataformas.

Cheat Sheets disponibilizadas:

  • Apache
  • Bash
  • C++
  • Drupal
  • GCC
  • GDB
  • HTML5
  • JavaScript
  • jQuery
  • Microformats
  • MySQL
  • PHP
  • PostgreeSQL
  • Python
  • Regular Expressions
  • Ruby on Rails
  • SEO
  • SVN
  • WordPress

cheat_01

Como instalar o Cheat Sheets no Android?

Caso queiram experimentar esta aplicação, basta que apontem o vosso leitor de códigos QR para a imagem abaixo, e serão encaminhados para a aplicação no Android Market.

qr_cheat

Em Resumo

Pessoalmente gostei bastante desta aplicação uma vez que me permite ter no meu smartphone uns “resumos” das principais funções que estão disponíveis nas linguagens de programação. O DevCheats pode ser também uma aplicação interessante para alunos e programadores, que assim podem trazer todos os guias no bolso.

ASP.NET–Início do Projecto GoodToWork

ASP.NET – Inicio do Projecto “GoodToWork”

Criado por Henrique Graça em 21 de Dezembro de 2010 | 16 comentários

Estamos de volta com mais um tutorial sobre ASP.NET. Hoje iremos começar a construir a nossa aplicação. Fiquem atentos e participem neste brainstorming de programação.

1. Inicio

O Site que iremos construir irá permitir aos utilizadores avaliar empresas em que trabalham ou trabalharam, em termos de condições, ambiente, salário, etc. Com estes dados iremos ter um repositório que poderá ajudar outros utilizadores a escolher o seu próximo emprego.

Para tal vamos precisar de um modelo de dados, que iremos construir neste turorial (o modelo pode sofrer alterações).

Este modelo será criado com a ajuda do editor gráfico da Entity Framework.

Para iniciar a nossa aplicação vamos executar o Visual Studio e criar um novo projecto como mostra a figura.

Este projecto inclui muitas das funcionalidades do ASP.NET, MasterPages, Menus, Membership. Vem também com estilos CSS e com scripts de javascript (Jquery).

Podemos ver o resultado imediatamente, executando o projecto (F5 ou ctrl + F5)

2. Arquitectura de 3 camadas

O desenho de aplicações estruturados em camadas é extremamente popular e recomendado. Esta arquitectura permite incrementar a performance da aplicação, a sua escalabilidade, flexibilidade, re-utilização de código e ter uma panóplia de outros beneficios.

Existem  vários desenho mas, nós iremos utilzar a arquitectura de 3 camadas, o que significa que a nossa aplicação será dividida em 3 grandes áreas de funcionalidade

  • Data Layer, permite gerir a base de dados e aceder a dados nela contidos
  • Business Layer, permite gerir as regras e lógica de negócio
  • Presentation Layer, é a camada de visualização (User Interface)

Em baixo podemos ver uma imagem de uma arquitectura de 3 camadas em ASP.NET

3. Data Access Layer (DAL)

Como vimos anteriormente, nesta camada fica a Base de Dados e o acesso à mesma.

Para conseguirmos esse objectivo, vamos criar um novo projecto do tipo “Class Library”, na nossa aplicação. Como mostra a figura em baixo.

De seguida vamos apagar o ficheiro “Class1″ criado neste novo projecto e vamos adicionar uma Entity Data Model.

Criamos um projecto vazio

4. Criar a Base de dados

Depois de adicionada a Entidade temos de criar as tabelas e as respectivas associações.

Para isso carregamos no botao direito do rato em cima do Entity Data Model Designer.

Depois de criada a tabela, temos de criar as colunas (propriedades). Como mostra em baixo. Ou carregando na tecla “Enter”, quando se tem uma tabela seleccionada

Não esquecer de definir as propriedades de cada coluna no ecrã de propriedades.

4.1 Associações e Cardinalidade

Ao criar modelos geralmente temos diversas entidades cada uma com diversos atributos que podem ser relacionados entre si.

Um relacionamento pode ser entendido como uma associação entre instâncias de Entidades devido a regras de negócio. Normalmente ocorre entre instâncias de duas ou mais Entidades, podendo ocorrer entre instâncias da mesma Entidade (auto-relacionamento).

Para definir o número de ocorrências de uma entidade usamos o conceito de Cardinalidade.

A Cardinalidade indica quantas ocorrências de uma Entidade participam no mínimo e no máxima do relacionamento.

Cardinalidade UM para UM, UM para N e N para N.

Na imagem em baixo, criamos uma associação entre Empresas e Localidades de UM para N.

Uma Empresa pertence a uma Localidade, uma Localidade possui nenhuma ou muitas Empresas.

O resultado ficará visivel no editor

4.2 Modelo Final (está sujeito a alteração)

Em baixo está o resultado do nosso modelo até à data.

5. Conclusão

Por hoje damos o tutorial por terminado. Para a semana vamos falar do Membership, como criar e gerir utilizadores. Em baixo podem fazer download do projecto (Visual Studio 2010). Caso tenham alguma questão já sabem, deixem um comentário em baixo.

Download: GoodToWork [ 225Kb ]

ASP.NET–State Management

ASP.NET – State Management

Criado por Henrique Graça em 14 de Dezembro de 2010 | 9 comentários

Estamos de volta com mais um tutorial sobre ASP.NET. Hoje iremos falar sobre State Management numa aplicação ASP.NET. Fiquem atentos e participem neste brainstorming de programação.

1. State Management

Nenhuma framework Web, por muito avançada que seja, pode alterar o facto de o protocolo HTTP ser stateless (não guarda o estado entre Requests). Depois de cada Request, o cliente desliga-se do servidor e o ASP.NET descarta os objectos que foram criados para a página. Esta arquitectura garante que as aplicações Web podem servir milhares de Requests simultaneos, sem que o servidor fique sem memória. A desvantagem é que precisamos de outras tecnicas para garantir que a informação das páginas se mantém entre Requests e possa ser utilizada quando necessário.
O ASP.NET, inclui uma grande variedade de opções no que toca a State Management. A opção correcta depende do tipo de dados que queremos guardar, onde queremos guardar, se está disponivel para um ou mais utilizadores, o nivel de segurança e performance que queremos obter.
Em baixo podem ver um quadro com as várias opções e qual o seu contexto de utilização.

Como podem ver existem muitas opções, felizmente, o ASP.NET fornece um modo de trabalhar semelhante para todas elas. Se estas formas de State Management não forem suficientes, podemos criar o nosso próprio mecanismo de State Management. Em baixo, veremos mais em pormenor estas ferramentas.

2. ViewState

Deve ser a nossa primeira escolha para guardar informação no contexto de uma única página. O View State é utilizado internamente pelo ASP.NET para guardar o estado dos controlos da página entre PostBacks.

O ViewState permite guardar todos os tipos de Objectos de .NET e as nossas próprias classes, desde que estajam marcadas com o atributo [Serializable].

O ViewState pode ser desactivado por controlo, por página ou por Site.

Para guardar dados no View State utilizamos a propriedade:

ViewState["NomeIdenfificativo"] = "Valor";

Para aceder ao View State:

string ValorViewState = ViewState["NomeIdenfificativo"].ToString();

Lembrar que o ViewState retorna um objecto, logo temos de fazer um “cast” para o tipo de objecto que queremos.

3. QueryString

Uma das desvantagens do ViewState, é o facto de só existir no contexto de uma página. Aqui entram as QueryStrings, permitem enviar informação entre páginas.

Este mecanismo é muito utilizado, por exemplo em motores de busca.

http://www.google.pt/search?q=pplware

A QueryString é o pedaço de texto a seguir ao “?”. Neste caso define uma única variável “q”, que contém o valor “pplware”.

A vantagem da QueryString é ser leve e não trazer nenhum fardo para o servidor. A desvantagem é os valores estarem visiveis para o utilizador e podem ser alterados.

Utilizar a QueryString:

string valor = "teste";   Response.Redirect("pagina.aspx?variavel=" + valor);

Receber valores de QueryString:

string valor = Request.QueryString["variavel"];
4. Cookies

São pequenos ficheiros que são criados no disco do cliente(ou na memória do Browser se forem temporários). As vantagens dos Cookies, podem ser utilizados por qualquer página do site e podem ser mantidos entre visitas. Estão limitados em termos de tamanho e de tipo de objectos que se pode guardar (string). Tem de se ter muita atenção, especialmente agora que estão cada vez mais a ser utilizados smartphones para aceder à internet, pois estes não permitem cookies.

Para utilizar os Cookies, usamos o Request para aceder e o Response para guardar.

HttpCookie cookie = new HttpCookie("Preferencias");   cookie["Lingua"] ="PT";   cookie["Pais"] ="PT";   Response.Cookies.Add(cookie);

Um cookie adicionado desta maneira, persiste até o browser ser encerrado. Para persistir tem de se definir a propriedade:

cookie.Expires = DateTime.Days.Add(1);

Para aceder a um cookie:

HttpCookie cookie = Reques.Cookie["Preferencias"];   string Pais = cookie["Pais"];

Para remover um cookie definimos a propriedade “Expires” com uma data que já passou.

5. Session

É o peso pesado do State Management. Permite que as informações persistam em todas as páginas do site. Cada utilizador que entra no site tem um SessionId diferente o que permite guardar informações por utilizador. A Session tem um peso grande para a memória do servidor.

Para guardar o SessionId entre Requests é utilizado um cookie chamado “ASP.NET_SESSIONID”. Se o browser não suportar cookies, é utilizado QueryString.

Este cookie só é criado quando guardamos algo na sessão, até lá, é sempre gerado um novo SessionId a cada Request.

Utilizar Session:

Session["Variavel"] ="valor";   string valor = Session["Variavel"].ToString();

É sempre necessário fazer “cast” para o tipo de objecto.

A sessão é global para toda a aplicação por utilizador. A sessão perde-se quando o utilizador fechar o browser, a aplicação fizer Restart ou terminar a sessão utilizando o método Session.Abandon();

Podemos configurar o comportamento da Sessão no Web.config. No atributo “SessionState”, podemos definir o timeout, o modo de guardar a sessão (memória do servidor, sql server, state server), se utiliza cookies, etc.

6. Application

Semelhante à Session mas, permite que os valores guardados sejam acedidos por qualquer utilizador da nossa aplicação. Esses valores perdem-se quando a aplicação fizer um Restart à pool.

Uma utilização corrente é contabilizar quantos utilizadores estão a utilizar a aplicação nesse momento, utilizando o global.asax.

Para utilizar a Application:

Application["Variavel"] = "valor";   string valor = Application["Variavel"].ToString();
7. Resumo

O State Management é a arte de reter informação entre Requests. Geralmente a informação é “user-specific” como por exemplo, items do carrinho de compras, username, nivel de acesso), mas por vezes pode ser global, como estatisticas que fazemos track no decorrer da aplicação. Como o ASP.NET utiliza uma arquitectura desconectada, é sempre preciso implicitamente indicar que queremos guardar/receber a informação a cada Request.

A ferramente que escolhemos para guardar estado pode ter um grande impacto na escalabilidade, performance e segurança da nossa aplicação.

Por hoje damos o tutorial por terminado. Para a semana vamos começar a desenhar a nossa aplicação. Caso tenham alguma questão já sabem, deixem um comentário em baixo.

ASP.NET–Anatomia de uma aplicação

ASP.NET – Anatomia de uma aplicação

Criado por Henrique Graça em 7 de Dezembro de 2010 | 9 comentários

Estamos de volta com mais um tutorial sobre ASP.NET. Hoje iremos falar sobre os componentes que fazem parte de uma aplicação ASP.NET. Fiquem atentos e participem neste brainstorming de programação.

1. Anatomia

Uma das funcionalidades mais notáveis do modelo de execução do ASP.NET, é o facto de ser possível  fazer update à aplicação, sem que seja preciso fazer restart ao Servidor e nem preocupar com um possível prejuízo aos utilizadores da aplicação. Isto significa que podemos adicionar, alterar e remover ficheiros na directoria virtual a qualquer momento, sem qualquer impacto.

Depois de fazer uma alteração, o processo de migração para uma nova “Application Domain” é executado. Este processo faz um restart seguro à aplicação e substitui os ficheiros da directoria temporária do ASP.NET. Até uma simples alteração ao WEB.CONFIG obriga a um restart seguro da aplicação.

Estrutura de directorias:

  • BIN – Esta directoria contém todas as DLL que a aplicação utiliza. Se criarmos um WebProject no Visual Studio, esta directoria irá também conter o código compilado da nossa aplicação.
  • APP_CODE – Nesta directoria ficam todas as classes compiladas dinamicamente. Se criarmos um WebProject no Visual Studio, esta directoria não será necessária.
  • APP_GLOBALRESOURCES – Esta directoria contém recursos globais que são utilizados por todas as páginas da aplicação.
  • APP_LOCALRESOURCES – Como a directoria GlobalResources, esta pasta guarda recursos mas, apenas para a página associada.
  • APP_WEBREFERENCES – Esta directoria guarda referências de WebServices que a aplicação utilize.
  • APP_DATA – Esta directoria está reservada para “Data Storage”, como bases de dados SQL Express ou ficheiros XML. Claro que, podemos colocá-los noutra directoria.
  • APP_BROWSERS – Esta directoria contém ficheiros XML com definições de Browsers, o que torna possível várias renderizações entre Browsers.
  • APP_THEMES – Esta directoria contém os Temas utilizados na aplicação.
2. Global.asax

O ficheiro Global.asax, permite escrever código que reage a eventos globais da aplicação. Não é possivel fazer o request directo ao Global.asax, ao invés o ficheiro Global.asax é executado automáticamente em responsta a diferentes eventos da aplicação.

O ficheiro Global.asax é opcional, só é possivel ter um por aplicação e tem de estar na root.

Lista de eventos da aplicação

  • Application_BeginRequest() – Este método é chamado a cada novo Request.
  • Application_EndRequest() – Este método é chamado no fim de cada Request
  • Application_Start() – Este método é invocado sempre que a aplicação é iniciada.
  • Session_Start() – Este método é invocado no inicio de cada nova sessão.
  • Application_Error() – Este método é invocada quando uma excepção não controlada acontece na aplicação
  • Session_End() – Este método é invocado quando uma sessão do utilizador termina. Uma sessão pode terminar, forçando a mesma ou por timeout, normalmente 20 minutos.
  • Application_End() – Este método é invocado quando uma aplicação termina.
3.  Configurações ASP.NET

As configurações de uma aplicação ASP.NET são efectuadas em ficheiros XML. As grande vantagens deste mecanismo são, os ficheiros nunca ficam bloqueados, são de fácil acesso, leitura, alteração e replicação.

As configurações começam num ficheiro chamado, machine.config. Este ficheiro encontra-se na directoria “c:\windows\microsoft.net\framework\[versão]\config”. Este é o primeiro ficheiro de configuração de ASP.NET e contém as configurações mais criticas da aplicação.

<MachineKey> – Esta elemento na configuração do ficheiro machine.config, é responsável pela encriptação das aplicações ASP.NET. Protege os cookies de sessão e pode proteger também o ViewState.

Na mesma pasta do ficheiro machine.config, existe outro ficheiro web.config, que contém mais configurações.

Apesar de existirem estes ficheiros de configuração globais (utilizados em todas as aplicações ASP.NET no servidor), normalmente as configurações são efecutadas por aplicação, com um ou mais, ficheiros Web.config.

No ficheiro de configuração podemos, guardar ligações a bases de dados e configurações particulares de cada aplicação.

Dentro do ficheiro Web.config, um dos atributos mais importantes é o <system.web>, dentro deste atributo existem muitas configurações que podemos costumizar.

  • authentication – este elemento configura a autenticação na aplicação.
  • compilation – este elemento identifica a versão da framework .NET. Também será aqui que indicamos se queremos ou não fazer debug na aplicação.
  • customErrors – este elemento permite definir URL para reencaminhar um pedido, quando um determinado erro ocorre.
  • membership – este elemento permite configurar a funcionaliade de gestão de utilizadores do ASP.NET
  • pages – este elemento define definições para as páginas
  • profile – este elemento permite configurar o mecanismo de profiles do ASP.NET
  • sessionState – este elemento permite alterar as configurações de como é guardada e gerida a Sessão.
  • trace – este elemento configura o tracing na aplicação.

Além de configurar tudo manualmente o ASP.NET fornece uma ferramenta visual para fazer alterações no Web.config. Através desta aplicação, podemos configurar utilizadores, settings, email.

Para aceder a esta aplicação carregamos no botão que podemos observar na imagem em baixo.

Depois de carregar no botão, entramos na aplicação e podemos alterar as configurações da nossa aplicação.

4. Page Class

Todas as páginas ASP.NET são derivadas do objecto Page. Este é dos objectos mais importante e com mais funcionalidades do ASP.NET.

Request: Este objecto representa os valores e propriedades do Request Http que causou o carregamento da nossa página. Contém todos os parâmetros de URL e todas as informações enviadas pelo cliente.

  • Cookies – contém uma colecção de Cookies enviados com o Request.
  • Headers e ServerVariables – providenciam uma colecção de HTTP Headers e variáveis de servidor. São informações Low-Level do Request.
  • IsAuthenticated – Verifica se o utilizador está autenticado.
  • IsLocal – Verifica se o Request foi feito do Servidor.
  • QueryString – Disponibiliza os parâmetros que foram passados no URL.

Response: Este objecto representa a resposta do Servidor a um Request do cliente.

  • Cookies – contém uma colecção de Cookies enviados com o Response. Podemos usar este objecto para criar Cookies.
  • Redirect() – este método dá instruções ao Browser para pedir um novo URL.
  • Write() – este método permite escrever no output stream.

Server: Este objecto é uma classe de utilidades, disponibiliza muitos métodos e propriedades.

  • MachineName – Nome da máquina em que a aplicação está ser executada.
  • GetLastError() – Método que permite obter o último, muito utilizado no global.asax no método Application_Error().
  • HtmlEncode() e HtmlDecode() – Altera o valor para HTML e vice-versa.
  • MapPath() – Devolve o caminho físico que corresponde a uma pasta virtual.
  • Transfer() – Redirecciona o pedido para outra página. Semelhante ao Response.Redirect mas mais rápido, pois o pedido é logo executado no servidor.

Neste tutorial incidimos sobre os componentes que fazem parte da anatomia de uma aplicação  ASP.NET. No próximo tutorial vamos falar sobre state management (View State, Cookies, Session, Application).

Caso tenham alguma questão, coloquem nos comentários, terei todo o gosto em responder.

ASP.NET–Introdução e Conceitos

ASP.NET – Introdução e conceitos

Criado por Henrique Graça em 30 de Novembro de 2010 | 40 comentários

Estamos de volta com mais uma temporada de guia práticos sobre ASP.NET, conforme a escolha dos nossos visitantes. Hoje começo com uma overview à tecnologia ASP.NET. Fiquem atentos e participem neste brainstorming de programação.

1. O que é ASP.NET?

ASP.NET é uma tecnologia de scripting do lado do servidor, esta tecnologia permite colocar numa página web, scripts que irão ser executados por um servidor.

ASP.NET é uma tecnologia de scripting do lado do servidor, esta tecnologia permite colocar numa página web, scripts que irão ser executados por um servidor.

  • ASP, significa Active Server Pages
  • ASP.NET, corre no servidor de IIS
  • IIS (Internet Information Services), é um servidor de internet da Microsoft
  • IIS vem instalado e é gratuito nos servidores Windows ( inclui Windows 2000 e Windows XP Professional)

ASP.NET é compilado não é interpretado:

ASP.NET bem como todas as aplicações .NET, são compiladas. É impossivel correr código C# ou VB sem que esteja compilado.
Felizmente as aplicações ASP.NET não precisam de ser compiladas todas as vezes que são executadas, em vez disso o código “IL” é criado uma vez e actualizado apenas quando o source code é alterado.
Os ficheiros ficam em cache no servidor na directoria “c:\windows\microsoft.net\framework\[versão]\temporary asp.net files”.

Esta afirmação depende do tipo de projecto que escolhemos. Se optarmos por um Web Project o código é todo compilado quando compilamos o projecto. Caso a opção seja um simples Web Site, cada página é compilada assim que for feito o “Request”.

2. Web Forms

As páginas ASP.NET ( conhecidas como Web Forms) são uma parte vital de uma aplicação ASP.NET, pois providenciam o output para o browser depois de o cliente ter feito o “Request”.

Este conceito foi criado para facilitar a migração de programadores das tecnologias de cliente (Windows Forms) para a Web, usando as mesmas facilidades do interface windows, como arrastar botões.

Uma página ASP.NET é:

  • Ígual a uma página HTML
  • Pode conter HTML, XML e scripts
  • Os scripts são executados no Servidor
  • Tem a extensão “aspx”
  • Todos os controlos têm de estar contidos dentro de um “<form>”
  • A “<form>” tem de conter uma tag “runat=server”
  • O atributo “runat=server”, este atributo significa que a form deve ser processada no lado do servidor. Também indica que os controlos incluidos nesta form estão assecíveis do lado do script.
3.  Como funciona?

Recordar que:

  • As aplicações são executadas no servidor: Imagine que tem uma página em que possibilita que os clientes gravem comentários. O utilizador faz estas operações no browser, mas para gravar o comentário precisamos de fazer um update na base de dados, para isso o nosso código tem de correr no servidor. O ASP.NET trata destes eventos com uma técnica chamada PostBack, que envia a página (Form) quando certas acções são executadas. Quando o ASP.NET recebe a página, pode executar os eventos correspondentes do lado do servidor.
  • As aplicações Web são “stateless” (não guardam estado): Por outras palavras, assim que uma página é renderizada em HTML, os objectos são destruidos e todas as informações do cliente são descartadas. Este modelo é muito bom para aumentar a escalabilidade e o tráfego das aplicações, mas causa alguns problemas para oferecer uma experiência semelhante a uma aplicação Windows. Para colmatar esta lacuna o ASP.NET oferece várias ferramentas, a mais notável é o mecanismo chamado View State, que automáticamente coloca informação na página num “hidden field”, falaremos melhor desta e outras ferramentas.

ASP.NET utiliza um modelo de eventos, neste modelo, adicionamos controlos à página e escolhemos que eventos queremos responder. Cada “event handler” é um método discreto que mantêm o código limpo e arrumado.

Como funcionam os eventos?

  1. A nossa página corre pela primeira vez. ASP.NET cria a página e controlos associados, o código de inicialização é executado, a página é renderizada em HTML e retornada para o cliente. Os objectos são também libertados da memória do servidor.
  2. Numa determinada altura o utilizador executa uma acção que origina um PostBack, como clicar num botão. Toda a informação da página é enviada para o servidor.
  3. O ASP.NET intercepta a página e cria de novo os objectos no servidor, colocando-os no estado em que estavam a ultima vez que foram enviados para o cliente.
  4. Depois o ASP.NET verifica qual foi o evento causador do PostBack e dispara o evento correspondente. Nesta altura executamos o código associado ao evento e actualizamos a informação referente aos objectos.
  5. A página modificada é renderizada em HTML e devolvida ao cliente com os novos dados. Os objectos são retirados da memória do servidor.
4. Page Lifecycle

Existem dois tipos de eventos que originam um PostBack:

  1. Immediate Response Events : Executados sempre que carregamos num botão ou utilizamos a função Javascript “__DoPostBack()”
  2. Change Events: Sempre que seja alterado o estado de um controlo, como alterar o valor de uma checkbox ou textbox. Se a propriedade AutoPostBack estiver activa o evento é executado imediatamente, caso contrário é executado no próximo PostBack da página.

Imaginemos que temos um página com um botão de submit e uma textbox sem a propriedade AutoPostBack activa. Alteramos o texto e carregamos no botão. O que acontece?

O ASP.NET executa estes eventos, por ordem:

  1. Page.Init
  2. Page.Load
  3. TextBox.TexChanged
  4. Button.Click
  5. Page.PreRender
  6. Page.Unload

Existem mais eventos, mas para já apenas precisamos de saber estes.

Exercicio: Testar os eventos.

Vamos criar um novo projecto, uma aplicação ASP.NET vazia.

Adicionamos uma nova WebForm:

Adicionamos um botão e uma label. A label tem a propriedade “EnableViewState = False”, para não incrementar o valor sempre que é feito um novo PostBack. Por defeito esta propriedade está activa, é uma das formas mencionadas para guardar o estado dos controlos entre cada PostBack.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   <html xmlns="http://www.w3.org/1999/xhtml">   <head runat="server">   <title></title>   </head>   <body>   <form id="form1" runat="server">   
     
     
   </form>   </body>   </html>

Carregamos na nova página com o botão direito do rato e escolhemos “View Code”

Adicionamos os eventos que queremos “tratar”. Os eventos da página têm o prefixo “page”, desta forma o ASP.NET sabe que são metodos especificos que tem de executar. Esta associação é feita pelo atributo “AutoEventWireup=true” na página. Para adicionar um evento ao botão podemos ir ao design da página e clicar duas vezes no botão.

using System;   using System.Collections.Generic;   using System.Linq;   using System.Web;   using System.Web.UI;   using System.Web.UI.WebControls;   namespace WebApplication1   {   public partial class WebForm1 : System.Web.UI.Page   {   protected void Page_Load(object sender, EventArgs e)   {   Label1.Text += "Evento Page_Load <br/>";   if (Page.IsPostBack) // Metodo utilizado para saber se é a primeira vez que a página é processada   {                    // ou se é um PostBack   Label1.Text += "Não é a primeira vez que executamos a página <br/>";   }   }   protected void Page_Init(object sender, EventArgs e)   {   Label1.Text += "Evento Page_Init <br/>";   }   protected void Page_PreRender(object sender, EventArgs e)   {   Label1.Text += "Evento Page_PreRender <br/>";   }    protected void Page_Unload(object sender, EventArgs e)   {   //Este texto nunca aparece pois o HTML nesta altura já foi renderizado   Label1.Text += "Evento Page_Unload <br/>";   }   protected void Button1_Click(object sender, EventArgs e)   {   Label1.Text += "Evento do botão <br/>";   }   }   }

De seguida executamos o projecto ( F5 ou ctrl + F5). Este será o resultado.

Primeira execução:

Como podemos observar os eventos são executados pela ordem que já referimos.

Segunda execução:

Depois de clicar no botão, é executado o PostBack. Como podemos ver a propriedade Page.IsPostBack é verdadeira, logo sabemos que não é a primeira execução da página. Depois do evento Page_Load são executados os eventos do controlo que originou o PostBack.

Por hoje terminámos. Neste tutorial incidimos sobre alguns dos conceitos de ASP.NET. No próximo tutorial vamos falar sobre os objectos Request, Response e sobre state management (View State, Cookies, Session, Application).

Caso tenham alguma questão, coloquem nos comentários, terei todo o gosto em responder.

Criar uma loja online com o Vendder

Crie a sua loja online com o Vendder

Criado por Pedro Simões em 4 de Dezembro de 2010 | 26 comentários

Pequenos comerciantes sentem muitas vezes que o seu mercado local se encontra saturado ou tem capacidade insuficiente para absorver todas as suas ofertas. Apostar na Internet viabiliza a descoberta de novos mercados e permite atingir um novo público alvo.

No entanto, o comércio electrónico continua a custar muito às empresas. Os gastos incluem a contratação de uma empresa para o desenvolvimento, configuração e manutenção de servidor, instalação de um pacote de software, design, entre outros. Isso faz com que qualquer novo comerciante online pense duas vezes antes de começar a vender na Internet. Foi para suprir essas necessidades que o Vendder foi criado.

O Vendder permite a criação de uma loja online instantaneamente. Basta configurar o catálogo de produtos, métodos e taxas de envio, bem como processamento de pagamentos. De uma forma fácil e intuitiva, o comércio electrónico fica acessível a qualquer pequeno comerciante que queira vender pela Internet.

A seguir, as principais funcionalidades do Vendder:

Software como serviço

Configurar servidores é caro e gera constante dor de cabeça. O Vendder garante o cuidado com a infra-estrutura para que os comerciantes se concentrem em promover seu negócio.

Integração com outros websites

Se já tem um site pode facilmente incorporar a loja virtual e melhor aproveitar o esforço feito no seu website actual.

Gestão de Catálogo

Controle de todos os produtos no mesmo lugar. Divisão dos produtos por várias categorias e gestão do inventário.

Tradução para outras línguas

Tradução do conteúdo pode ser feita manualmente ou automaticamente.

Integração com Sistemas de Pagamento

Pode receber pagamentos com Paypal, cartões de crédito ou outro método manual, como transferência bancária ou vale postal.

Portes de Envio

É possível definir portes de envio e impostos para todos os países e regiões.

Dashboard

Controle de todas as actividades da sua loja num único local. Se isso não for suficiente, o Vendder está integrado com o Google Analytics para controlar melhor a actividades dos seus clientes e referências.

Gestor de Conteúdos

Crie conteúdo para melhor informar os seus clientes e melhorar sua visibilidade nos motores de pesquisa.

A última novidade do Vendder é a possibilidade de customização completa do aspecto da loja. Se o utilizador tiver conhecimentos de HTML/CSS ou se quiser contractar um designer pode facilmente modificar a aparência da loja para se adaptar ao seu gosto.

O Vendder conta com 3 planos diferentes: um grátis até 30 produtos, um plano Plus por 19€ mês e um plano Bundle que inclui 1 ano do plano Plus e um tema feito à medida.

Homepage: Vendder

15 Fresh Jquery Slides

15 Fresh Jquery Slides

December 1st, 2010 in Inspiration web, Inspiration websites, Tca Inspired, web blogs by gsinspired

31

Using a jquery slide effect is getting very popular. We have choose the best one and the most complete for you. Each one of them has different options and funcionalities. Take a look at them!

 

Nivo

 

Slidesjs

 

Hevoq

 

jqfancytransitions

 

Orbit

 

Animate Panning

 

yoxview

 

quicksand

 

viewbook

 

Slide Deck

Tutorial C#–Inserção de dados em MySQL

Tutorial C# – Inserção de dados em MySQL

Criado por Hélio Moreira em 4 de Novembro de 2010 | 15 comentários

Na sequência de tutoriais anteriores, em que demonstrei como efectuar ligações entre o C# e bases de dados, hoje irei mostrar como inserir dados numa base de dados MySQL. Apesar de a ligação C# – MySQL não ser a mais utilizada, visto o C# ser uma linguagem mais orientada para o ambiente Windows, e o MySQL orientado para a Web, irão poder verificar que não existe nenhum “segredo”, e é até bastante simples a inserção de dados.

Antes de começar a ler este tutorial, é muito importante que tenha compreendido o anterior tutorial relacionado com este tema (Tutorial C# – Ligação a Base de Dados MySQL), visto que os primeiros passos são iguais.

Primeiro criamos uma base de dados no phpMyAdmin. Neste caso criei a base de dados com o nomepplware_bd.

Esta base de dados, terá uma tabela com o nome tabela_dados, com três campos:

  • id (INT (5), AUTO_INCREMENT, Chave Primária)
  • titulo (VARCHAR(25))
  • descricao (VARCHAR(100))

Para que seja possível inserir dados numa base de dados MySql em C#, é necessário adicionar a referência MySql.Data. Para isso é necessário efectuar o download do mysql-connector-net-6.2.3. Depois é só correr o setup. (No fim é necessário reiniciar o Visual Studio)

Para adicionar uma referência:

  • Clicar com o botão direito em Referência e fazer “Add Reference”.

  • Seleccionar na lista MySql.Data no separador .NET

  • Como a referência já está adicionada, temos de a inserir no código.
using MySql.Data.MySqlClient;

Agora vamos ao código

1º – Temos de adicionar um MySqlConnection, MySqlDataAdapter e um DataSet.

private MySqlConnection mConn;
private MySqlDataAdapter mAdapter;
private DataSet mDataSet;

O MySqlConnection, MySqlDataAdapter e o DataSet, são necessários para a conexão e leitura da base de dados.

2º – Criar o “layout” da mini aplicação.

3º – Código do botão “Gravar”

private void bt_Gravar_Click(object sender, EventArgs e)
{
	// Início da Conexão com indicação de qual o servidor, nome de base de dados e utilizar   /* É aconselhável criar um utilizador com password. Para acrescentar a password é somente
	necessário acrescentar o seguinte código a seguir ao uid=root;password=xxxxx*/   mConn = new MySqlConnection("Persist Security Info=False; server=localhost;database=pplware_bd;uid=root");   // Abre a conexão
	mConn.Open();   //Query SQL
	MySqlCommand command = new MySqlCommand("INSERT INTO tabela_dados (titulo,descricao)"+
	"VALUES('" + tb_titulo.Text + "','" + tb_descricao.Text + "')", mConn);   //Executa a Query SQL
	command.ExecuteNonQuery();   // Fecha a conexão
	mConn.Close();   //Mensagem de Sucesso
	MessageBox.Show("Gravado com Sucesso!","Informação",MessageBoxButtons.OK,MessageBoxIcon.Information);   // Método criado para que quando o registo é gravado, automaticamente a dataGridView efectue um "Refresh"
	mostraResultados();
}

4º – Código do método de visualização de dados

private void mostraResultados()
{
	mDataSet = new DataSet();
	mConn = new MySqlConnection("Persist Security Info=False; server=localhost;database=pplware_bd;uid=root");
    mConn.Open();   //cria um adapter utilizando a instrução SQL para aceder à tabela
    mAdapter = new MySqlDataAdapter("SELECT * FROM tabela_dados ORDER BY id", mConn);   //preenche o dataset através do adapter
    mAdapter.Fill(mDataSet, "tabela_dados");   //atribui o resultado à propriedade DataSource da dataGridView
    dataGridView1.DataSource = mDataSet;
    dataGridView1.DataMember = "tabela_dados";
}

Este método será “chamado” no botão Visualizar, como exemplificado na imagem abaixo.

private void bt_visualizar_Click(object sender, EventArgs e)
{
	mostraResultados();
}

E o resultado será:

E assim finalizamos este tutorial.

Como certamente verificaram, é extremamente simples fazer uma ligação e inserção com MySQL utilizando C#.
Espero que tenham gostado.

Download: Mysql Connector Net (6.2.3)
Homepage: MySql