Blog de acompanhamento ao projecto de 3º ano de NTC, no ano lectivo de 2010/2011.
18
Mar 11

Tecnologias Client-Side - APIs


Independentemente do CMS escolhido, ou mesmo se optarmos pela construção de raiz, teremos sempre em conta que este projecto irá utilizar uma ferramenta de edição vectorial online. Criar uma de raiz foi um desafio que foi já posto de parte. Sendo assim, foi feito uma pesquisa no sentido de encontrar soluções possíveis de serem implementadas na aplicação. As opções que temos neste aspecto são:


SVG-EDIT:





AVIARY:




Ambas as ferramentas cumprem os nossos requisitos funcionais e têm uma facilidade de integração relativamente semelhante.


Se optarmos pelo svg-edit, teremos acesso a todo o código da ferramenta (desenvolvido em Javascript e open source) e o controlo completo da sua implementação, funcionalidades e interacção com o resto da aplicação. Há o senão de não haver nenhum módulo, em qualquer dos CMS considerados, que faça a integração com este API, ficando a mesma a nosso cargo.


Com o Aviary, estaríamos a utilizar uma ferramenta proprietária e desenvolvida em Flash. Isto levanta vários problemas: os documentos vectoriais gravados seriam armazenados na base de dados da Aviary - seria necessária a conexão entre as contas do Aviary e as contas de utilizadores da nossa plataforma. Também há o aspecto de utilizar funcionalidades de um aplicação efectivamente “concorrente”, que iria guardar na sua base de dados todas as criações dos nossos potenciais utilizadores, com potencial desvio de parte do nosso público-alvo para uma aplicação concorrente. Essa dependência também significa a perca de controlo de um dos pilares da nossa aplicação: a existir, por exemplo, uma falha na aplicação do Aviary, a nossa aplicação ficaria comprometida sem que nada pudesse ser feito do nosso lado para repor a funcionalidade. Por outro lado, o Aviary garante-nos uma ferramenta de qualidade superior ao svg-edit, para além de que a implementação, a nível do Drupal, está já assegurada por parte de um módulo existente.


 

Conclusão


Todo o trabalho de levantamento de requisitos e de soluções técnicas serviu, para ancorar o projecto que ainda se encontrava pouco definido. O desenvolvimento da lista de requisitos funcionais ajudou a definir melhor e é, salvo revisões futuras pontuais (como sempre acontecem), o documento orientador para as escolhas finais.


A nível das soluções técnicas, avançamos com as soluções que melhor respondem aos critérios estipulados para as prioridades dos diferentes perfis de utilizador, implementação técnica da ferramenta de desenho e integração na comunidade. Uma vez que o grupo não tem experiência de trabalho em muitas das tecnologias consideradas (CMSs, APIs), só na fase de prototipagem é que será possível averiguar qual é a solução mais adequada. Sendo assim, decidimos apresentar por ordem os conjuntos de soluções mais realistas, tendo em conta todas as análises acima apresentadas. Como já foi referido, a tecnologia a usar, de forma genérica, para todo o aspecto client-side da aplicação, será o conjunto HTML+CSS+Javascript. A partir daí, surge um número de “combinações” possíveis, entre os CMS e APIs considerados.


Solução escolhida

A nossa primeira opção passa pela combinação do CMS Drupal com a API de desenho vectorial svg-edit. O foco está na manutenção do controlo sobre todos os aspectos da aplicação.

Esta é a solução mais ambiciosa, mas que representa um desafio técnico mais interessante, enquanto experiência de aprendizagem, uma vez que estas plataformas nos podem fornecer um know-how inovador.


Alternativas

Caso algum desses elementos (CMS ou API) não seja viável, irá ser usada a solução alternativa de Joomla como CMS (caso seja o Drupal a falhar) ou então de Raven (a API do Aviary) como ferramenta de desenho.


A última opção centra-se, não na utilização de um CMS, mas na criação do código manualmente recorrendo às tecnologias de PHP/MYSQL, apoiadas por CSS e Javascript. Relativamente à API irá se manter como na primeira opção, dando-se prioridade à API svg-edit e em segundo lugar à API do Aviary (Raven).

 


Tecnologias Client-Side - CMSs



Para a construção e desenvolvimento do site, podemos utilizar alguns dos conhecimentos previamente adquiridos e construí-lo de raiz, ou utilizar um CMS (Content Management System) que através das suas funcionalidades e extensões, permitem chegar ao mesmo resultado. Cada uma destas opções tem as suas vantagens e desvantagens. Ao optarmos pela construção de raiz, temos um maior controlo sobre o código e teremos mais liberdade durante o desenvolvimento utilizando as nossas soluções. Se escolhermos utilizar um CMS, encontramos o desafio de aprender algo em que nenhum elemento do grupo tem experiência. Nesta opção, deparamo-nos também com grandes comunidades de “developers”, que, com o seu trabalho para estas plataformas, desenvolveram muitas das soluções que queremos utilizar. Desta forma teríamos que desenvolver alguma agilidade na filosofia dos CMS e conseguir integrar da melhor maneira os módulos ou extensões já desenvolvidas. Os CMS que se seguem demonstram ter as características necessárias ao desenvolvimento do nosso projecto.

Wordpress: “Express yourself. Start a blog”






Joomla: “The dynamic portal engine and content management system”




Drupal:” Come for the software, stay for the community”



 


 

 

Elgg: “Providing you with the core components you need to build out socially aware applications”

 


 

Pligg: “The Social Publishing CMS”

 




 


(carregar na imagem para aceder ao documento)


Através desta tabela, pretendemos demostrar as fraquezas e as forças de cada um destes CMs. Concluimos que as melhores opções são o Drupal, Joomla e Wordpress. O Drupal, embora tenha uma curva de aprendizagem que nos pode dificultar a vida, tem uma grande comunidade de “developers” e uma grande variedade de módulos e expansões que facilitam a integração de funcionalidades. O Joomla revela-se uma boa opção pelas mesmas razões que o Drupal e por ainda possuir um plug-in direccionado a construção de redes sociais. O WordPress tem como vantagens a inexistência de publicidade nos templates (banners publicitários por exemplo), a grande variedade de widgets e aplicações, a sua grande comunidade, e a sua ferramenta de construção de redes sociais (“Buddy Press”), representa também uma boa opção de CMS a utilizar.

 


Tecnologias Client-Side


Da perspectiva client-side, dividimos as possibilidades em três grupos ,uma vez que não seria de todo útil avaliar algumas das tecnologias individualmente, como o CSS e o JavaScript, que são utilizados num contexto de integração no HTML.


Analisámos também o XML, uma vez que este desempenha um papel fundamental na manutenção dos dois últimos suportes por nós referenciados.


XML

O que é?

XML (de Extensible Markup Language) é um conjunto de regras para codificar documentos num formato legível pelas máquinas, produzido pelo W3C e com foco na simplicidade de uso e utilização pela internet.


Forças

  • Foi originada numa instituição de padronização, a W3C.

  • É baseada em texto.

  • Suporta Unicode.

  • É editável, devido à popularidade do XML nos dias de hoje, com diferentes níveis de automação, em qualquer ambiente.


Fraquezas

  • Demasiado complexo, ao lado das alternativas. Dificilmente utilizável pelo utilizador "leigo".

  • Pode ser substituído por formatos mais simples como o YAML e JSON.


Fontes


CSS + HTML + Javascript

O que é?

O conjunto mais utilizado actualmente no desenvolvimento para Web. A ideia seria utilizar o css para estruturação de layouts/aspecto gráfico, o HTML como base, e o JavaScript para animações e interacção avançada.


Forças

  • As páginas desenvolvidas deste modo tendem a ser mais "leves" que as geradas nas outras duas tecnologias aqui apresentadas.

  • Após a implementação do template, a facilidade de manutenção é bastante elevada. Os conteúdos respectivos aos 3 pólos (css, html, javascript) são armazenados em documentos separados.

  • Fácil estruturação e separação do conteúdo (HTML / CSS / JavaScript).

  • Páginas suportadas pela maioria dos dispositivos móveis.

  • Funcionalidades de animação cada vez mais complexas (em termos de visualização), mas facilmente implementáveis através de inúmeros plugins (como o jQuery) .


Fraquezas

  • Exigem um grau superior de literacia (comparado com as restantes tecnologias aqui apresentadas) e competências de programação (javascript). Existem no entanto disponíveis bastantes bibliotecas de funções, e plugins, que têm como objectivo a simplificação da introdução de recursos. (jQuery, Prototype, Dojo).

  • Alguns elementos mais avançados nas últimas versões de CSS e JavaScript, não são suportados por todos os browsers.

  • Alternativas como o Adobe Flash são mais orientadas para designers e animadores, sendo possível "escapar" às linguagens de programação.


Fontes


Adobe Flex ( + Adobe Flash )

O que é?

O Flex é uma tecnologia desenvolvida pela Adobe para a criação de aplicações ricas na Internet, baseadas na plataforma do Flash. É o concorrente directo do Mircosoft Silverlight, partilhando algumas funções como a compatibilidade multi-plataformas, a integração da linguagem XML, orientação da linguagem para objectos, ferramentas dedicadas à compilação, e suporte directo com JAVA e AJAX.


Forças

  • Destaca-se no entanto por ter ferramentas direccionadas para designers, e pela integração com os diversos produtos da Adobe.

  • Linguagem orientada para objectos

  • Acesso facilitado a serviços web e comunicação directa com todo o tipo de tecnologias server-side

  • Ferramentas dedicadas ao Design

  • Suporte directo com JAVA e AJAX, para além de suporte para XML


Fraquezas

  • Falta de integração de linguagens de programação utilizadas no restante desenvolvimento para Web e offline.

  • Não é adequada para a implementação da totalidade de um website, mas sim para aplicações e secções da aplicação.

  • Os resultados não são tão fluídos como os apresentados utilizando CSS+HTML+JavaScript.

  • Problemas de integração com os motores de busca


Fontes



Microsoft Silverlight

O que é?

O Silverlight tem todos os aspectos referidos anteriormente, apresentando também algumas vantagens. É importante realçar que aparece 10 anos mais tarde em relação ao Flash, que se encontra neste momento integrado na maioria dos sistemas.


Forças

  • Nos pontos positivos é importante destacar o suporte com Visual Basic, e C#.

  • Conteúdos facilmente identificáveis pelos motores de busca

  • Linguagem orientada para objectos

  • Acesso facilitado a serviços web XML

  • Suporte directo com JAVA e AJAX


Fraquezas

  • A tecnologia e muito recente, sendo então pouco desenvolvida e tendo prevista uma fraca penetração no mercado a curto prazo.

  • Incompatível com versões antigas do Windows, como o Windows 2000 e 98.

  • Necessidade de software específico para suporte.


Fontes


Optou-se pelo uso de HTML + CSS + Javascript, por todas as vantagens apresentadas anteriormente. O desenvolvimento de uma aplicação em Silverlight ou Flex, apresentaria uma maior complexidade de interacção com as bases de dados que acabaria por não compensar. As tecnologias escolhidas são do domínio do grupo, o que facilita a aposta em outras vertentes do trabalho.


A utilização tanto do Flex (Flash) com o do Silverlight, traria acima de tudo problemas de fluidez de utilização do portal. Uma vez que se pretende agrupar bastantes funções, a simplicidade é um factor fundamental que terá que ser respeitado ao máximo.


No seguimento dessa escolha, há toda uma série de tecnologias para o desenvolvimento quer de comunidades quer da ferramenta de edição vectorial que necessitam de ser analisadas. A nível da construção dos mecanismos que irão possibilitar a interacção entre utilizadores e a manipulação da base de dados subjacente, foram considerados vários Content Management Systems, a apresentar de seguida.


Julho 2011
Dom
Seg
Ter
Qua
Qui
Sex
Sab

1
2

3
4
5
6
7
8
9

10
12
13
14
15
16

17
18
19
20
21
22
23

24
25
26
27
28
29
30

31


arquivos
pesquisar blog
 
blogs SAPO