7 de mai. de 2009

Importância da customização de controles(.NET)

Controles customizados, geralmente, são deixados de lado pelos arquitetos, pois nem sempre é evidente que futuramente, possa haver uma adição funcional no Control Padrão.

Com o avanço das tecnologias e a Orientação a Objetos, vemos a oportunidade de criar controles com certa simplicidade e produtividade.

Mas o que justificaria customizar controles já prontos, como o TextBox, ListBox, DropDownList?

Este é o assunto que irei abordar nesta postagem.

OBS: usarei aqui como base os controles do ".NET" como base, pois não tenho conhecimento a fundo de outras tecnologias.


Justificativas

Os controles do .NET são bastante funcionais e todos eles herdam de uma única classe base(Control).

Vamos usar o TextBox(WebControl) para exemplificar as justificativas.

Supondo que tenha desenvolvido um sistema que da e-commerce, e para isto eu tenha utilizado um controle do tipo TextBox para o que o usuário possa digitar a quantidade de em determinado item do pedido.
Que problemas podem ocorrer com o uso do TextBox do .NET?

Bom, este controle é ótimo, mas não possuí um bloqueio ou máscara para impedir o usuario de digitar um caracter inválido no conteúdo do componente. E que talvez este bloqueio fosse importante para os usuários(Clientes), até para que antes de clicar em comprar isto seja impedido ao invés de validado.

Quando isso for alterado, se não tiver sido criado um controle customizado, teríamos que criar uma função javascript e adicioná-la em cada página, seja com um arquivo js ou uma função adicionada diretamente na página, e ainda teríamos que, em todos os TextBox que necessitam desta validação, adicionar o atributo com a chamada para a função. E tudo isso com muita separação, dificultando a manutenção do código.

Desta maneira você gera mais demanda para a empresa ? Gera mais valor ? Pois é será que a manutenção de aplicativos é rentável? Esta é uma grande pergunta, mas também é assunto para outra postagem.

Mas para seguirmos as melhores práticas adotaremos a resposta de que não seria rentável.

E ai teríamos que criar um time ou uma quantidade de horas absurda para fazer a mesma alteração em lugares diferente, para uma evolução tão simples como mudar um campo de Texto que permita o tratamento de alfanuméricos.

Sendo que a criação de ou apenas a herança de alguns componentes é tão produtivo quanto é recomendável, vale a pena, principalmente, em um projeto de médio a grande porte a Customização de controles.

Abaixo alguns códigos de exemplo:
//Exemplo Simples
public class SimpleCompositeControlDesigner : CompositeControlDesigner
{
public override bool AllowResize
{
get
{
return false; }
}
}

//Exemplo simples de herança
public class SimpleText : TextBox
{
}

6 de mai. de 2009

Aplicações On-line ou Off-line?

Como defensor das ferramentas web, poderia enumerar aqui as vantagens de se utilizar ferramentas tão poderosas quanto a do GMail, Twiter, Meebo entre outros. Pois é, são provas infalíveis de que a Web é altamente poderosa, em inúmeros sentidos e vários quesitos, mas ainda existem problemas a se considerar.


Todos os exemplos que utilizei acima são de aplicativos bastante interessantes que somente disponibilizam serviços que necessitam de acesso a internet para que sua existência faça sentido, em sua maioria são aplicações de comunicação e no inicio era esta a intenção da internet, disseminar conhecimento e estabelecer formas de comunicação mais baratas, pois a internet a anos já alcançou este objetivo, e agora uma nova era vem a tona, a era da "externalização de aplicativos".

Tem coisa pior para o usuário do que ele pegar aquele CD, DVD, BlueRay, HD-DVD, Disquete, Pen Drive, Link de Download, mandar rodar e clicar em Próximo...Próximo e Fim?

De inicio podemos ficar um tanto quanto inconformados com esta condição, mas os clientes e usuários de sistemas não querem mais gastar seus precisos 350 Gigabytes da HD para que o programa/software simplesmente fique instalado e o usuário só vai abrir e usar em 10% do seu tempo. É... é muito difícil aceitar mas o mundo mudou, as pessoas mudaram, e a "'Informática' evoluiu e virou 'Tecnologia de informação'".

Poucas empresas se prestaram a inovar a Web, isso para não dizer que pessoas isoladamente se dedicaram a este tipo de inovação. Mas mesmo com essas pessoas os aplicativos ainda necessitam de muitos ajustes.
Mas e ai, já tem como usar estas aplicações on-line? Elas são realmente seguras?
A resposta para as duas perguntas é positiva, mas eu vou explicar um pouco mais a causa.
As empresas de TI(Tecnologia de Informação), que tem como produtos finais serviços, como e-mail, mensagens, blog, fotolog, sites, entre outros... trabalham com um acordo de nível de serviço que garante que o serviço fornecido fique disponível por exemplo 99% durante o ano, e isso garante que nós usuário teremos o serviço disponível a maior parte das vezes que tentarmos acessa-lo.
Outro recurso existente é o termo de uso do aplicativo, nele possui todos os seus direitos e deveres. E a política de privacidade dos serviços garante que nossas informações sejam guardadas a sete chaves e garantindo a segurança de nossas informações.
Por estes motivos digo que a Web é um local seguro se usado com prudência, assim como um motorista que não usa o cinto de segurança esta correndo um risco, não muito visível, pois o motorista não acredita que ele possa bater o carro, mas o risco existe. Com a web a história é a mesma, como eu posso estar recebendo um e-mail de cobrança de passagens aéreas se eu não comprei nada pela internet, ou eu nunca fui viajar para a Carochinha do Sul, nem abra o link.
Porém as aplicações web do tipo Google Docs, por exemplo, podem ser úteis, mas imagine que você precise editar um arquivo e não esteja na internet, e ai?
Hoje os serviços não disponibilizam nenhum tipo de utilização Off-line, eles até tem sim uma maneira, mas não é muito inteligente, por isso, acho que ainda existem falhas.
Mas as coisas estão evoluindo, as aplicações web estão ficando cada vez mais poderosas, porém acredito que o ideal é unir os dois mundos, até por efeito de backup, é muito interessante nos resguardarmos quando falamos de documentos e informações importantes.
Podemos chegar a conclusão de que as aplicações Web ajudam bastante no dia-a-dia, porém ainda existem alguns problemas nas aplicações, que com o tempo serão melhorados ou corrigidos.