• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

HRCerqueira

Aplicações Web baseadas em XML

17 mensagens neste tópico

Cumprimentos a todos,

Desde já as minhas desculpas aos moderadores do forum, se não estou a cumprir com todas as regras... Continuando...

Sou um novo utilizador, e logo para primeiro tópico, gostaria de colocar aqui um projecto que tem andado a amadurecer na minha cabeça à algum tempo, mas que ainda não passou para o código, e que certamente iria beneficiar em ter uma equipa a trabalhar nele. Resumindo muito rápidamente posso fazer a comparação com librarias javascript, como o dojo ou scriptacoulus etc. A minha ideia passa por algo do género, mas para o desenvolvimento de verdadeiras aplicações "desktop" no browser, e tudo baseado em ficheiros xml.

Para que serviriam essas aplicações?

Para o mesmo que servem as aplicações que temos no desktop, embora esta ideia seja essencialmente destinada a aplicações que trabalham com bases de dados. Um exemplo recente, um cliente pediu-me para construir um "admin panel" (como ele lhe chamou), em que alguns vendedores de telemarketing que ele tem a trabalhar para ele pudessem inserir registos a partir de casa, ou seja estes vendedores trabalham a partir de casa.

O que iria oferecer esta nova libraria?

Basicamente o que oferecem outras librarias para aplicações desktop, como o swing em java por exemplo.

Em que seria baseado?

Do lado do browser, javascript, como é óbvio, do lado do servidor, qualquer coisa que dê para gerar xml, no fundo, tudo o que existe para programação web. Eu pessoalmente estava a pensar em servlets, mas até poderia haver vários frameworks para várias linguagens.

Como funcionaria?

Vou tentar explicar, utilizando o caso do meu cliente que referi acima.

Ao abrir uma aplicação, todo o conteúdo da libraria é descarregado, depois fica ao critério de cada um, mas podemos ter uma barra de menus, alguns ícones qualquer coisa que dê para ir chamando os nossos "frames". Ao abrir um frame, por exemplo com o formulário de clientes, é feito um pedido ajax ao servidor e retornado um ficheiro xml com as definições da janela. Para quem já trabalhou com alguns editores vizuais para o desktop, repara que muitas vezes esses editores utilizam ficheiros xml, é algo desse género que eu imagino. Como é óbvio, esses ficheiros xml terão algum código js embutido, que será o código responsável pela gestão dos eventos do utilizador. Esses ficheiros depois ficam armazenados em cache para a necessidade de serem reabertos.

Voltando ao formulário de clientes, depois de termos então o frame aberto, podemos fazer tudo o que é natural fazer com uma aplicação desktop. Navegar nos registos, eliminar, inserir dados, etc, etc, tudo isto, sempre utilizando requests ajax.

Bem, isto é o básico do que eu pretendo, não consigo explicar melhor, é tudo muito abstracto e eu ainda tou cheio de sono, o melhor mesmo é que quem estiver interessado me faça perguntas.

Uma pequena nota: não existe nada feito para além de umas anotações em papel, e algum código que eu utilizei em outros projectos, e que eventualmente possa ser reutilizado.

Uma outra pequena nota: Apesar de eu ter falado em clientes e mais não sei o quê, este não é um projecto com fins lucrativos.

O que eu pretendo deste post, é juntar uma equipa de 3 ou 4 programadores (comigo incluído) para trabalhar no projecto. A quem estiver interessado, ou mesmo para quem não esteja, façam perguntas, para ver se eu consigo explicar melhor o que pretendo.

Cumprimentos,

Hernâni Cerqueira

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas!

Antes de mais, bem vindo ao fórum ;)

Desde já as minhas desculpas aos moderadores do forum, se não estou a cumprir com todas as regras... Continuando...

Nop, desrespeitar regras não estás, mas existem alguns recomendações para as threads iniciadas nesta secção que convém seguir ;)

Mais informações aqui.

De resto, desejos de um bom trabalho ;)

abraços, HecKel

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nop, desrespeitar regras não estás, mas existem alguns recomendações para as threads iniciadas nesta secção que convém seguir ;)

Mais informações aqui.

Pois, eu já tinha lido isso, por isso pedi logo desculpa, mas havia certos parâmetros que seriam difíceis de incluir num projecto ainda tão embrionário... Bem, mas posso sempre ir adicionando mais dados à medida que estejam disponíveis.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem vindo ao fórum Hernâni.

Para o mesmo que servem as aplicações que temos no desktop, embora esta ideia seja essencialmente destinada a aplicações que trabalham com bases de dados. Um exemplo recente, um cliente pediu-me para construir um "admin panel" (como ele lhe chamou), em que alguns vendedores de telemarketing que ele tem a trabalhar para ele pudessem inserir registos a partir de casa, ou seja estes vendedores trabalham a partir de casa.

Só precisas de XML-RPC no servidor, net no PC e fazes uma interface para ser usada pelo vendedor em Python por exemplo.

Em que seria baseado?

Do lado do browser, javascript, como é óbvio, do lado do servidor, qualquer coisa que dê para gerar xml, no fundo, tudo o que existe para programação web. Eu pessoalmente estava a pensar em servlets, mas até poderia haver vários frameworks para várias linguagens.

Do lado do servidor, se quiseres fazer as aplicações acentar no browser, tens duas opções. Ou usar JSON (JavaScript Object Notation) ou usar XML.

Como funcionaria?

Vou tentar explicar, utilizando o caso do meu cliente que referi acima.

Ao abrir uma aplicação, todo o conteúdo da libraria é descarregado, depois fica ao critério de cada um, mas podemos ter uma barra de menus, alguns ícones qualquer coisa que dê para ir chamando os nossos "frames". Ao abrir um frame, por exemplo com o formulário de clientes, é feito um pedido ajax ao servidor e retornado um ficheiro xml com as definições da janela. Para quem já trabalhou com alguns editores vizuais para o desktop, repara que muitas vezes esses editores utilizam ficheiros xml, é algo desse género que eu imagino. Como é óbvio, esses ficheiros xml terão algum código js embutido, que será o código responsável pela gestão dos eventos do utilizador. Esses ficheiros depois ficam armazenados em cache para a necessidade de serem reabertos.

Voltando ao formulário de clientes, depois de termos então o frame aberto, podemos fazer tudo o que é natural fazer com uma aplicação desktop. Navegar nos registos, eliminar, inserir dados, etc, etc, tudo isto, sempre utilizando requests ajax.

O que tu queres é basicamente fazer o mesmo que os eventos on* dos elementos do XHTML.

O que eu pretendo deste post, é juntar uma equipa de 3 ou 4 programadores (comigo incluído) para trabalhar no projecto. A quem estiver interessado, ou mesmo para quem não esteja, façam perguntas, para ver se eu consigo explicar melhor o que pretendo.

Eu não me vou juntar a esta equipa para participação activa. Se quiseres ideias, podes contar comigo, mas mais que isso, esquece.
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sei se percebi bem a ideia, mas pelo que li parec-me que queres algo parecido com o eyeos, http://demo.eyeos.org, mas mais simples, apenas na vertende aplicações e não dektop completo. É isso? Ou estou a perceber mal?

Gostaria de ajudar, mas para já deixo apenas a intenção, mais tarde se verá.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Só precisas de XML-RPC no servidor, net no PC e fazes uma interface para ser usada pelo vendedor em Python por exemplo.

O XML-RPC parece-me óbvio, mas o XML-RPC é um protocolo, qualquer linguagem tem a sua implementação... Em relação ao Python, agradeço a sugestão, mas eu quero algo que qualquer pessoa que saiba digitar um url no browser consiga aceder, e não fazer as pessosas instalar interpretadores de python.

tens duas opções. Ou usar JSON (JavaScript Object Notation) ou usar XML.

Para já o JSON é um método (tou a falar de método, como em metodologia) dentro do Javascript, e não uma linguagem por si só, o XML é só um protocolo que permite o transporte de dados entre várias plataformas (isto falando de uma forma genérica), e não uma linguagem, por isso, não tenho que optar entre JSON e XML, ou Javascript e XML, tenho que usar as duas tecnologias.

O que tu queres é basicamente fazer o mesmo que os eventos on* dos elementos do XHTML.

Não, não é nada disso....

Não sei se percebi bem a ideia, mas pelo que li parec-me que queres algo parecido com o eyeos, http://demo.eyeos.org, mas mais simples, apenas na vertende aplicações e não dektop completo. É isso? Ou estou a perceber mal?

É mais ou menos isso sim, tem é que ser algo muito mais comunicativo com o servidor, em todas as vertentes. Esse eyeos parece-me engraçado como ideia, mas eu estou a falar mas numa ferramenta de trabalho.

Já agora uma observação, eu não estou a pedir a ninguem que se dedique oito horas por dia a isto, eu próprio não tenho esse tempo, tou a falar em uma / duas horas por dia, nos dias em que se pode, não sei se me faço entender. A minha ideia é a de aproveitar a tendência do "mercado" de utilizar aplicações c/ interface web como ferramenta de trabalho, mas isso é um boom mais ou menos recente.

Obrigado a todos,

Hernâni

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tens duas opções. Ou usar JSON (JavaScript Object Notation) ou usar XML.

Para já o JSON é um método (tou a falar de método, como em metodologia) dentro do Javascript, e não uma linguagem por si só, o XML é só um protocolo que permite o transporte de dados entre várias plataformas (isto falando de uma forma genérica), e não uma linguagem, por isso, não tenho que optar entre JSON e XML, ou Javascript e XML, tenho que usar as duas tecnologias.

Sim, mas eu tava para falar para a data exchange. Podes fazê-lo com JSON ou XML.

O que tu queres é basicamente fazer o mesmo que os eventos on* dos elementos do XHTML.

Não, não é nada disso....

Naquele exemplo concreto, sim.
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não assumi que fossem 8 horas por dia :P

Apenas disse que logo se veria porque não sei que disponibilidade terei daqui para a frente, e, mesmo que sejam só 10 minutos por dia, se me comprometer tenho por hábito cumprir, por isso é melhor não me comprometer :D

Mas de momento gostaria de perceber melhor o que pretendes, acho a ideia interessante mas preciso saber se estou a pensar bem.

Resumindo, e esquecendo as tecnologias usadas, nas quais prefiro quando o processo de desenvolvimento começa e não numa altura de discussão de ideias, pretendes e pegando no exemplo do teu cliente, é o desenvolvimento de uma aplicação que execute dentro do browser do utilizador ou é o desenvolvimento de uma plataforma na qual poderiam ser criadas aplicações?

De qualquer das formas a ideia parece vir de encontro ao XUL, http://www.xulplanet.com.

Desculpa, não quero menosprezar a tua ideia, quero apenas perceber a ideia, usando exemplos é mais simples.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, a ver se consigo explicar isto...

É um pouco com o XUL sim, se bem que o XUL é uma tecnologia exclusiva de um browser e que requer a instalação de plugins, e acaba por ser um pouco complexo.

A ideia é criar uma tecnologia capaz de correr em qualquer browser, logo que utilize ferramentas disponíveis em qualquer browser, e que permita criar aplicações mais user friendly e sem os habituais ciclos de load unload de uma normal página web, pelo menos não de uma forma tão pesada. Esqueçam o problema do meu cliente, esse já está resolvido e já não precisa de ser para cá chamado.

Vamos usar como exemplo uma aplicação de gestão comercial (que suponho que muitos de vocês já tenham utilizado).

O utilizador da aplicação, vai ao browser, digita o endereço, insere o username e password se for necessário, e entra na aplicação. Ao entrar, toda a libraria é descarregada para o browser (tem que ser javascript, não vejo outra solução) e o estado inicial da aplicação é descarregado, e colocado à disposição do utilizador.

Por estado inicial, entenda-se aquilo que é visível quando do arranque da aplicação, como por exemplo, a barra de menus e uns ícones, etc, o que for necessário para lançar as restantes funcionalidades da aplicação. No caso de uma aplicação de gestão comercial, teriamos uns botões com as várias tabelas, como a de clientes e fornecedores, artigos, facturas, etc, etc...

Pois bem, agora supondo que o cliente abre a tabela de artigos. Quando o "estado inicial" foi descarregado, ficou definido que ao carregar naquele botão seria aberto um iframe, cujas definições se encontram numa determinada localização, por exemplo www.foobar.com/tabelas/artigos.xml. Depois de descarregado o ficheiro, de forma assincrónea (ajax) este é lido e é criado o iframe com base no que lá está escrito, por exemplo, algo deste género:

<iframe>
     <handler location="http:// www.foobar.com/tabelas/artigos.jsp"/> //seria o endereço responsável pela manipulação dos dados
     <textfield type="num">
          <length="5"/>
          <location x="10" y="10"/>
          <varname="codigo_artigo"/>
          <label>Código do Artigo:</label>
         <required/>
     </textfield>
     <textfield type="text">
          <length="50"/>
          <location x="10" y="30"/>
          <varname="nome_artigo"/>
          <label>Nome do Artigo:</label>
     </textfield>
Etc, etc, etc...
</iframe>

(isto é só um exemplo, não é baseado em nada em concreto)

Depois haveria as definições dos botões, que iriam gravar os dados, ou eliminar, etc, etc, haveria uma série de possíveis eventos pré-definidos, como gravar, eliminar, próximo registo, registo anterior, etc, etc...

O envio dos dados para o servidor poderia ser feito por exemplo com simples variáveis post ou get de um http request (sempre assincróneo), mas o caminho contrário, do servidor para o cliente seria sempre em ficheiros xml.

Ao gravar um artigo, por exemplo, a resposta seria também dada em xml, indicando o sucesso ou insucesso da operação, bem como outros dados que possam ser relevantes, como por exemplo, em caso de erro, o motivo pelo qual se deu o erro.

Muito basicamente é isto, claro que isto é um esboço muito por alto, mas penso que dá para ter uma luz.

Por tanto, isto seria uma libraria em javascript que fizesse a ponte entre o servidor e o browser, para aplicações "desktop".

Vão disparando perguntas, acho que este projecto tem pernas para andar, eu já ando neste meio à muitos anos (eu alimento três bocas com isto), e sei do que falo...

Abraço,

Hernâni

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tu queres algo do género disto seguido disto certo? Pelo menos foi o que eu percebi... :)

Bem, está a ser mais complicado do que eu esperava... Esses links apontam para um sistema de feeds para blogs, do género de um rss feed, mas com mais umas funcionalidades, o que eu quero é do género do que o Knitter postou em cima, http://demo.eyeos.org/, só que estamos a falar em aplicações de trabalho, sistemas de gestão, cms's, qualquer coisa... Eu não quero construir uma aplicação, mas um sistema que me (nos) permita construir aplicações.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, está a ser mais complicado do que eu esperava... Esses links apontam para um sistema de feeds para blogs, do género de um rss feed, mas com mais umas funcionalidades, o que eu quero é do género do que o Knitter postou em cima, http://demo.eyeos.org/, só que estamos a falar em aplicações de trabalho, sistemas de gestão, cms's, qualquer coisa... Eu não quero construir uma aplicação, mas um sistema que me (nos) permita construir aplicações.

Eu só estava a falar da ideia de trasmitir info... :)
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, está a ser mais complicado do que eu esperava... Esses links apontam para um sistema de feeds para blogs, do género de um rss feed, mas com mais umas funcionalidades, o que eu quero é do género do que o Knitter postou em cima, http://demo.eyeos.org/, só que estamos a falar em aplicações de trabalho, sistemas de gestão, cms's, qualquer coisa... Eu não quero construir uma aplicação, mas um sistema que me (nos) permita construir aplicações.

Eu só estava a falar da ideia de trasmitir info... :)

Sim, eu percebo, mas afinal o xml é isso mesmo... Parte da própria definição . Mas obrigado na mesma pela ajuda. :-)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É um projecto muito interessante, pena que morreu na casca

Eu sou programador amador de JavaScript mas tenho bastante conhecimento

Um projecto como esse faz falta na web

É inovador e seria de muito uso para alguns trabalhos, poder adicionar programas no nosso pequeno workspace ou mesmo widgets

Podia-se fazer algo assim

<window title="A minha janela" minimizeable="true" id="minhajanela">

    <textfield label="Nome: " id="tNome" value="conteudo inicial"/>

    <button onclick="alert($sFunc('tNome').getValue())">Clicke Aqui</button>

</window>

Ou usar namespaces ( w é um exemplo )

<w:window title="A minha janela" minimizeable="true" id="minhajanela">

    <w:textfield label="Nome: " id="tNome" value="conteudo inicial"/>

    <w:button onclick="alert($sFunc('tNome').getValue())">Clicke Aqui</w:button>

</w:window>

:hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já aqui falaram do XUL, que penso que faz o que queres fazer. Mas fica também podes ficar a conhecer algo diferente, que é uma iniciativa para tornar o desktop em algo diferente que o Gnome Online Desktop (http://live.gnome.org/OnlineDesktop).

Em relação ao Python, agradeço a sugestão, mas eu quero algo que qualquer pessoa que saiba digitar um url no browser consiga aceder, e não fazer as pessosas instalar interpretadores de python.

Ou usas Python/Perl/Ruby, ou complicas demasiado o desenvolvimento das aplicações que usem xml-rpc e/ou soap.

Todas as distribuições de GNU/Linux e *BSD trazem interpretadores de perl e python consigo. Se calhar devias esquecer as outras plataformas, porque não são as mais adequadas.

o XML é só um protocolo que permite o transporte de dados entre várias plataformas (isto falando de uma forma genérica), e não uma linguagem,

XML, não é um protocolo é uma linguagem! Não é uma linguagem de programação, é uma linguagem de markup (Extensible Markup Language), e serve para muito mais do que interoperatibilidade entre diferentes plataformas.

É um pouco com o XUL sim, se bem que o XUL é uma tecnologia exclusiva de um browser e que requer a instalação de plugins, e acaba por ser um pouco complexo.

Não é exclusivo!

XUL é uma tecnologia livre.

Nem está preso a um browser, porque o browser é composto de componentes e a Mozilla criou o XULRunner, que um ambiente de run-time separado do browser, nem sequer ao motor de rendering Gecko porque sendo esta uma tecnologia livre, pode ser estudada e implementada por qualquer um sem ter que pedir, ou dar explicações a quem quer que seja.

O XUL não requer a instalação de qualquer plugins. Os browsers que o implementam fazem-no no motor de rendering.

A ideia é criar uma tecnologia capaz de correr em qualquer browser

Ou seja, que se transforma num plugin, o que cria todos aqueles problemas que falaste antes...

Por tanto, isto seria uma libraria em javascript

A palavra libraria não existe!

O que tu queres dizer é biblioteca.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

coincidencia das coincidencias... ainda ontem vi um desktoponline tal como o eyeos mas em XUL.

O eyeOS é que me está a deixar mesmo boquiaberto pela forma como é simples e completo... Ultimamente tem havido uma grande histeria de desktops online e ainda está tudo em fase experimental... o eyeOS é de longe o melhor que vi, pelo menos do ponto de vista do programados.

Sem querer estar a lançar uma enorme discussão mais uma vez... é mesmo para o pessoal que não gosta de PHP ser um pouco menos mauzinho para com o PHP.

Como já foi dito... O XUL faz precisamente o que é descrito na mensagem de abertura deste tópico... em XML e tudo. E estamos a falar de um projecto gigantesco... penso que este tipo de coisas exige uma quantidade de horas.homem brutal.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora