UserControl Suite Delphi Experts Consortium Edition

Qualidade: 

Estrela ativaEstrela ativaEstrela ativaEstrela ativaEstrela ativa
 

Muitos devem estar sabendo (e se não sabem que fiquem sabendo agora) que eu baixei a última versão do UserControl e, desde o final de 2015 eu tenho feito inúmeras alterações que consistem de atualizações, padronizações de código, remoção de bugs e remoção de características ambíguas, pouco seguras, inúteis ou defasadas tecnologicamente e com isso eu estou desenvolvendo o UserControl Suite Delphi Experts Consortium Edition, ou simplesmente UCDXCE, para resumir.

Tenho visto por aí algumas pessoas tentando fazer o mesmo, isto é, dar vida nova ao UserControl clássico, no entanto o que eu observei foi que estas versões modificadas são praticamente o mesmo UserControl original, com alguns bugs corrigidos e alguns conectores de banco de dados novos, no entanto, o núcleo do UC parece ser o mesmo. Talvez estes outros desenvolvedores estejam apenas receosos de fazer um "extreme makover" no UC, mas eu penso diferente. Minha intenção é sim, usar o UC clássico como base para entregar algo novo, mais seguro, mais intuitivo e com código-fonte padronizado e refatorado em mais de 90% do suite.

Essa refatoração completa traz estas vantagens mas também trará algumas desvantagens as quais, eu torço para que sejam compensadas pelas vantagens. Vou listar abaixo as desvantagens.

Ele só será compatível com versões de Delphi a partir do Delphi 2006. Eu acho que essa é a principal desvantagem do UCDXCE e motivo disso é simples: a versão mínima de Delphi que eu possuo é a 10 (Delphi 2006) e não, eu não pretendo fazer ports para versões inferiores a esta. Como este será um componente de código aberto, qualquer um poderá fazer seu port não oficial para qualquer versão de Delphi.

A quantidade de conectores foi limitada aos principais componentes de conexão da atualidade. Eu espero que essa desvantagem não seja tão grande assim pois minha intenção foi simplificar o gerenciamento de conectores já que atualmente existem componentes de conexão muito bons e populares. A imagem abaixo mostra o esquema completo do UCDXCE e mostra todos os conectores de dados disponíveis (TUCxxxConn) juntamente com os componentes de conexão correspondentes. A imagem é meramente ilustrativa e poderá não corresponder fielmente ao UCDXCE finalizado.

Quero pedir desculpas pelo spoiler contido nesta imagem e aproveitar pra alertar os "espertinhos": vocês podem até copiar os ícones dos componentes no entanto este site ficará no ar POR MUITO TEMPO pra provar quem foi que os usou dessa forma pela primeira vez ;).

Em suma, a não ser que você use um componente de conexão muito exótico, eu imagino que aqueles que eu vou disponibilizar já cobrem a maior parte de todas as aplicações Delphi (desktop).

Está gostando do que está lendo? Ajude nosso site visitando nossos patrocinadores. Obrigado! :)

Ainda no contexto de bancos de dados, os SGBD suportados serão apenas FireBird, Interbase, MySQL, SQLServer, Oracle e PostgreSQL. Acho que eu não removi suporte a nenhum banco de dados, mas fica aqui a lista como desvantagem, porque eu sei que existem alguns outros SGBD atualmente e que não estão previstos no UCDXCE, tais como SQLite, MongoDB, MariaDB, dentre outros. De todas as características que podem ser adicionadas ao UCDXCE o suporte a um banco de dados específico é a mais simples de todas, claro, depois da arrumada que eu dei a fim de tornar isso simples ;) O suporte a mais bancos de dados, pois, poderá ser incluído sem problemas no futuro.

Não há suporte a compilação de 64 bits, simplesmente porque eu nunca tentei. Pra falar a verdade eu nem sei se há alguma diferença ao programar para geração de pacotes em 64 bits. Não tenho intenção de fazer isso, simplesmente porque não vi necessidade. A grande maioria de nós programa em 32 bits mesmo. E, repito, caso você quiser fazer um port em 64 bits, fique à vontade, mas eu, particularmente não pretendo fazer isso.

Não há suporte a FMX ou programação para dispositivos móveis, simplesmente porque eu não tenho experiência com esse tipo de programação e não sei o que precisaria ser feito para compatibilização do componente. Também nem tenho certeza se o UserControl faz sentido em programas para dispositivos móveis. Se você quiser tentar futuramente, sinta-se à vontade modificando os fontes.

Eu limitei a quantidade de idiomas a apenas dois (português e inglês), com o intuito enxugar o código e facilitar a manutenção. Também pretendo alterar completamente a forma como a internacionalização está sendo feita. Farei apenas telas visualizáveis pelos usuários finais traduzíveis. Telas internas do componente e editores de propriedades serão todos em inglês. Nós desenvolvedores somos obrigados a saber inglês, nossos clientes não. Por isso essa questão já está definida.

Nota importante sobre a retrocompatibilidade da estrutura de dados implementada no UCDXCE

A retrocompatibilidade com bancos de dados da versão clássica do UserControl é limitada à versão do banco de dados gerado pela versão 2.31 RC4, disponível em https://sourceforge.net/projects/usercontrol/. Quando eu decidi refatorar e melhorar o UC eu utilizei esta versão a qual considero como sendo a versão final do UC Clássico porque o proprietário do repositório é o desenvolvedor principal (Codinome QmD) desta suite de componentes, logo eu assumi que este é o repositório oficial do UC Clássico e também porque eu não encontrei um site oficial.

Caso sua versão do UserControl Clássico seja esta que foi disponibilizada naquele link do SF ou seja qualquer outra versão baseada nesta, mas que não tenha alterado de nenhuma maneira a forma como os dados são salvos no banco de dados, então o UCDXCE poderá ser usado em substituição à versão clássica do UC com grande vantagem, mediante uma atualização automática de esquema que eu estou implementando.

Se você ficou curioso para saber o que exatamente mudou no banco de dados (estruturalmente falando) do UC Clássico para o UCDXCE, segue uma lista:

  • Utilização de chaves primárias em todas as tabelas, para que, numa versão futura TALVEZ, seja implementada a integridade referencial

  • Utilização de flags de autoincremento para bancos que possuem esta tecnologia (MySQL, SQL Sever), com o intuito de gerar automaticamente as chaves primárias das tabelas

  • Utilização de sequências para bancos de dados que possuem esta tecnologia (Interbase, FireBird, Oracle e PostgreSQL), com o intuito de gerar automaticamente as chaves primárias das tabelas

  • Utilização de tipos de dados corretos para datas e/ou horas em cada banco de dados suportado, evitando assim o salvamento desta informação como string

  • Substituição do campo "Usuário Priviliegiado" da tabela de usuários por um novo campo que permite a mesma funcionalidade do campo original com extrema flexibilidade (não vou dar mais detalhes)

Como se pode ver a lista é pequena e talvez você pense que isso foi fácil, mas não foi. O código do componente original estava tão despadronizado que eu cheguei a encontrar pelo menos duas versões de um mesmo SQL em partes distintas do código, me forçando a estudar uma forma de juntar tudo em um mesmo lugar. Agora está quase tudo centralizado ;)

Conclusão

Como se pode ver esse trabalho que eu venho executando desde o final de 2015 não é simples. Tenho visto o surgimento de algumas versões do UC por aí e tenho também ficado chateado comigo mesmo por estar tão atrasado no desenvolvimento de minha versão. Meu tempo livre atualmente nem é limitado, mas nele eu gosto de desopilar, vendo TV ou jogando XONE. Apesar de ficar chateado por estar em último lugar na corrida dos ports para o UC eu tenho plena convicção de que a versão final do UCDXCE será sufientemente boa para cair no gosto de todos nós, programadores, que gostamos de componentes bem feitos, com recursos interessantes, úteis e sem gambiarras. 

Alguém poderia dizer "porque você não pede ajuda?". A resposta é simples: por ora eu não vou querer ajuda para codificação pois quero entregar um código o mais limpo possível e também porque eu preciso entender todos os pormenores deste componente a fim de poder modificá-lo da melhor forma possível. Introduzir mais pessoas nessa equipe eventualmente iria fazer o código "virar macarrão" novamente e isso eu não quero. No futuro, após o lançamento do UCDXCE eu vou convidar pessoas para me ajudar, principalmente para que sejam feitos alguns dos ports que eu citei.

Por ora é isso pessoal, eu dei uma pausa na programação do UCDXCE hoje à tarde apenas para fazer esta primeira postagem-notícia, porque eu estou meio sem cabeça pra programar hoje. Fiquem ligados pois podem surgir mais novidades em breve ;)

Está gostando do que está lendo? Ajude nosso site visitando nossos patrocinadores. Obrigado! :)
Ajude nosso site visitando nossos patrocinadores!

Temos 11 visitantes e Nenhum membro online nos últimos 10 minutos (1.1 visitantes por minuto).