Estudo sobre a implementação de um

servidor HTTP para a aplicação

Curso sob Medida + Prova Virtual

Grupo A4

Adriana Delfino dos Santos (Relatora), João Carlos Orosz, José Estevão Picarelli,

Marcos LordelloChaim (Relator), Maria Fernanda B. Nogueira (Relatora)

Sumário:

Introdução

Descrição de Cenário

Métodos HTTP x Funcionalidades da Aplicação

Dynamic Argument Embedding (DAE)

Implementação de uma Funcionalidade da Aplicação com DAE

Persistent HTTP

Conclusões


1. Introdução

A World-Wide Web (WWW) tem evoluído muito nestes últimos anos, oferecendo facilidades e recursos a milhares de usuários no mundo. A área da Educação tem mostrado grande interesse em utilizar esta tecnologia. Várias propostas de aplicações WWW nesta área têm sido apresentadas e este trabalho considera as propostas de Curso sob medida e Prova virtual [Granja98] [Dagnone98].

Um estudo sobre a implementação de um servidor HTTP para apoiar um ambiente educacional composto pelas aplicações citadas anteriormente é apresentado nas próximas seções. Para isso, considerou-se os métodos HTTP que o servidor suportaria e quais as funcionalidades que estariam sendo cobertas por eles. Selecionou-se uma funcionalidade - dentre aquelas que têm como requisito a preservação de estado - e descreveu-se a sua implementação utilizando o método dynamic argument embedding. Analisou-se também a utilização do mecanismo de protocolo Persistent HTTP (P-HTTP) como alternativa de implementação.

2. Descrição de Cenário

Uma universidade é composta por unidades - faculdades ou institutos - que são responsáveis por cursos oferecidos (e.g.: Engenharia da Computação, Engenharia Química). Cada curso possui uma grade curricular com várias disciplinas e existe intersecção das disciplinas em diferentes cursos (e.g.: cálculo para Engenharia Civil e Engenharia de Materiais).

Neste contexto, tem-se a proposta de uma aplicação WWW para este ambiente educacional que ofereça uma disciplina ministrada em vários cursos e que ela seja especializada para cada um deles.

As funcionalidades descritas para este ambiente são:

  1. Compor as disciplinas (materiais, exercícios, provas, aulas grupos de forma distribuída, etc.).
  2. Estabelecer perfis para cada curso (definir diferentes visões).
  3. Cadastrar atores, considerando o seu curso e o seu tipo (instrutor, monitor, alunos, grupos de forma distribuída).
  4. Disponibilizar as disciplinas/aulas (relacionamento curso/aulas/disciplinas/tempo máximo).
  5. Acompanhar o andamento da disciplina. Fornecer feedback para alunos e professores.
  6. Aplicar prova (testes, dissertativas, etc.).
  7. Corrigir e pontuar a prova (pelo próprio sistema, testes; instrutor ad-hoc; auto-correção, disponibilizar gabaritos para auto-avaliação).
  8. Disponibilizar resultado de prova.

Os requisitos de segurança (tanto lógica quanto física) devem ser agregados a todas as funcionalidades.

Detalhando a funcionalidade Disponibilizar as disciplinas, que é uma das mais importantes, tem-se a sua implementação através da realização de aulas virtuais.

Por aulas virtuais, entende-se o seguinte cenário: o aluno da disciplina (e.g.: MA-101 Cálculo Diferencial e Integral I) poderá remotamente assistir a aula sobre determinado assunto (e.g.: limites) no mometo que melhor lhe convier, portanto a comunicação instrutor-aluno será assíncrona [Fluckiger95]; esta aula consistirá de documentos hipermídia, multimídia, documentos baseados no tempo e no espaço [Newcom91] que permitirão ao aluno navegar na aula de uma forma não-linear . O corpo geral da disciplina não é específico a nenhum curso, porém, as explanações multimídia têm um forte componente particular a cada curso. Por exemplo, a explicação de algum conceito pode se utilizar de casos próprios da futura área de atuação do estudante; de igual maneira, os exercícios de cada tópico podem ser ajustados para o nível do estudante - o aluno de graduação possui nível diferente de curso de pós-graduação.

Para facilitar o entendimento, alguns termos são definidos:

3. Métodos HTTP x Funcionalidades da Aplicação

A implementação da aplicação Curso sob medida + Prova virtual necessita de um servidor HTTP que atenda a seus requisitos. Esta seção apresenta uma proposta dos métodos que este servidor deveria ter disponível para suportar esta aplicação.

Um método HTTP é uma das possíveis ações a executar no objeto identificado pela Universal Resource Location - URL [Berners-Lee92]. Os métodos identificados para o ambiente educacional proposto são:

A Tabela 1 apresenta para cada método HTTP a relação das funcionalidades do ambiente educacional que o utilizaria e um exemplo de uso do método para cada funcionalidade.

 

 

 

Método

Funcionalidade

Exemplo

GET

1. Compor as disciplinas

consultar o material já incluído

 

2. Estabelecer perfis para cada curso (definir diferentes visões).

consultar um perfil de curso já incluído

 

3. Cadastrar atores

consultar ator já incluído

 

4. Disponibilizar as disciplinas/aulas

posicionar em uma página da aula

 

5. Acompanhar o andamento da disciplina

instrutor consultar uma dúvida de um aluno

 

6. Aplicar prova

aluno obter as questões da prova

 

7. Corrigir e pontuar a prova

consultar as respostas das questões da prova de um aluno

 

8. Disponibilizar resultado de prova

aluno consultar o seu resultado de prova

CHECKOUT

1. Compor as disciplinas

obter o material já incluído para realizar alterações

 

2. Estabelecer perfis para cada curso (definir diferentes visões).

obter um perfil de curso já incluído para realizar alterações

POST

1. Compor as disciplinas

inserir um material

 

2. Estabelecer perfis para cada curso (definir diferentes visões).

inserir um perfil de curso

 

3. Cadastrar atores

inserir ator com seu curso e nível

 

6. Aplicar prova

aluno inserir as respostas das questões da prova

 

7. Corrigir e pontuar a prova

para prova dissertativa, inserir a nota da questão e uma anotação sobre a resposta

PUT

3. Cadastrar atores

atualizar o curso de um ator já incluído

 

5. Acompanhar o andamento da disciplina

instrutor esclarecer uma dúvida de um aluno

 

7. Corrigir e pontuar a prova

inserir o resultado da prova de um aluno (usa o PUT pois é uma atualização no registro do aluno no cadastro de atores)

CHECKIN

1. Compor as disciplinas

atualizar o material já existente

 

2. Estabelecer perfis para cada curso (definir diferentes visões).

atualizar um perfil de curso já existente

DELETE

1. Compor as disciplinas

excluir um material existente

 

2. Estabelecer perfis para cada curso (definir diferentes visões).

excluir um perfil de curso

 

3. Cadastrar atores

excluir um ator

 

7. Corrigir e pontuar a prova

excluir uma anotação de correção de prova de uma aluno

LINK

4. Disponibilizar as disciplinas/aulas

selecionar um link para exercícios em uma página de aula

Tabela 1 - Método HTTP x funcionalidades do Curso sob Medida + Prova Virtual

 

 4. Dynamic Argument Embedding (DAE)

Dynamic argument embedding (DAE) é uma técnica de manutenção de estado da aplicação que associa estado com conversações. Uma conversação é uma seqüência de comunicações entre um cliente e um ou mais servidores na qual o cliente seleciona a próxima página por um link hipertexto provido pelo servidor [Iyengar97].

DAE modifica links hipertexto convertendo a informação do estado através da reescrita do link para invocar um programa conhecido como um embutidor de argumentos, que passa as variáveis de estado para todos os programas CGI (Common Gateway Interface) que possam ser chamados.

O algoritmo de preservação de estado possui os seguintes passos:

O cliente invoca um programa CGI num servidor. O programa determina quais variáveis de estado serão embutidas na conversação de forma que todos os programas CGI que possam ser invocados a partir da conversação venham a ter acesso a elas.

O programa CGI gera uma página HTML com links hipertexto do cliente para continuar a conversação. Entretanto, ao invés de retornar a página para o cliente não modificada, o programa CGI - que foi adaptado para invocar o módulo embed1 do embutidor de argumentos - passa para embed1 a página HTML e todos os argumentos de estado.

O módulo embed1 modifica todos os links hipertexto na página HTML para serem chamadas ao módulo embed2 do embutidor de argumentos. Se um link era para um arquivo HTML, embed2 receberá como agumentos a referência absoluta ao arquivo e todos os argumentos de estado. Se um link era para um programa CGI, embed2 receberá como argumentos a referência absoluta para o programa CGI, os argumentos originais para o programa CGI, um parâmetro delimitando o fim dos argumentos originais, e os argumentos de estado.

O modulo embed1 agora envia a página HTML modificada para o cliente. Todos os links hipertextos na página modificada são chamadas para embed2.

O cliente seleciona um link hipertexto para continuar a conversação.

Se o primeiro argumento para embed2 é um arquivo HTML, e os argumentos restantes são variáveis de estado, então o arquivo é trazido e passado adiante com todos os argumentos de estado para embed1. O processo retorna para o passo 3.

Se o primeiro argumento para embed2 é um programa CGI, então os argumentos restantes são os argumentos originais para o CGI, um argumento delimitador, e as variáveis de estado. O programa CGI é invocado com os argumentos originais e as variáveis de estado. A saída resultante é passada adiante com todas as variáveis de estado para embed1. O processo retorna para o passo 3.

Com relação à segurança, DAE:

 

5. Implementação de uma Funcionalidade da Aplicação com DAE

A implementação da Aula virtual, definida na seção 2, depende fundamentalmente da manutenção constante, durante a aula, da informação que determina o curso e o nível do aluno, chamados simplificadamente de perfil do aluno. Para que este requisito seja atendido, propõe-se que o servidor HTTP utilize a técnica DAE para preservar o perfil do aluno, durante sua participação na aula.

A seguir, baseado nos passos do algoritmo do DAE, descreve-se a utilização do DAE para o exemplo Aula virtual. Assumiu-se que o aluno ao "entrar" na aula informou seu userID e password. Com isso, a aplicação obtém o seu perfil de aluno, ou seja, as variáveis de estado CURSO e NIVEL são preenchidas com Engenharia Elétrica ("EE") e graduação ("grad"), de forma que os links que o aluno pode selecionar para decidir qual aula assistir já foram alterados por embed1 para incluir estas variáveis de estado.

Aluno seleciona a primeira aula (aula=1) e envia para o servidor http.

Programa CGI recupera a aula de acordo com o perfil do aluno (CURSO="EE" e NIVEL="grad"), gera uma página HTML com a aula e passa para embed1 a página e o perfil do aluno.

A página da aula1 recuperada possui um link para exercício que também depende do perfil do aluno.

Neste passo, o programa embed1 modifica os links da página da aula para incluir invocação ao programa embed2 com as variáveis de estado. Exemplo:

<a href = "http://www.uni-a-distancia.br/cgi-bin/exercicio?aula=1">

passa para:

<a href= "http://www.uni-a-distancia.br/cgi-bin/embed2?url="http:// www.uni-a-distancia.br/cgi-bin/exercicio&aula=1&comma=1&CURSO=EE& NIVEL=grad">;

A página da aula1, já modificada por embed1 é enviada para o cliente, e apresentada para o aluno.

O aluno seleciona o link hipertexto para exercício e envia ao servidor.

Como o primeiro argumento para embed2 é um programa CGI (exercicio), então aula=1 é o argumento original do programa CGI, comma=1 é o argumento separador e CURSO=EE e NIVEL=grad são as variáveis de estado que correspondem ao perfil do aluno.

O programa embed2 invoca o programa CGI com o argumento original e as variáveis de estado. A saída resultante, página HTML com o exercício referente à aula1, e as variáveis de estado são passados para embed1.

O processo retorna ao passo 3.

Observa-se que o programa embed1 é, em última instância, o responsável pela manutenção do estado da aplicação aula virtual, pois é o responsável pela alteração dos links gerados pelos programas CGI invocados ou pelos arquivos HTML selecionados. O programa embed2, na verdade, simplesmente executa os programa ou seleciona os arquivos, porém, redirecionando-os para o embed1, que inclui a informação sobre as variáveis de estado.

 

5. Persistent HTTP

A principal característica do protocolo P-HTTP é possibilitar a manutenção da conexão realizada com um dado servidor http permitindo que várias transações se deêm sem a necessidade de estabelecimento reiterado de um canal de conexão [Touch96]. Ou seja, a primeira conexão com o servidor é utilizada para as várias trocas de dados com o cliente. Estes dados, por sua vez, são documentos HTML. Utilizando-se este método, consegue-se otimizar o tempo de transação para seqüência de transações para o mesmo servidor, principalmente quando uma página contém imagens embutidas.

É importante notar que o que está sendo preservado é o estado da conexão de rede entre cliente e servidor, e não o estado da aplicação. Por isso, este método de preservação de estado não é uma alternativa para implementação da Aula Virtual e sim um método que deveria ser utilizado para melhorar o desempenho nas transferências de páginas que contenham imagens embutidas.

 

6. Conclusões

Este trabalho apresentou uma proposta de implementação de um servidor HTTP para a aplicação Curso sob medida + Prova Virtual. Para cada funcionalidade da aplicação, foram relacionados os métodos HTTP necessários para sua implementação, e apresentado um exemplo de utilização.

Também foi descrita como seria a implementação da funcionalidade Disponibilizar Aula, exemplificando-se com a Aula Virtual, utilizando o método Dynamic Argument Embedding (DAE). Verificou-se que ele é adequado para a aplicação escolhida visto que este método foi inicialmente projetado para aplicações de comércio virtual, que envolvem a manutenção de um estado durante a sessão de interação, e a aplicação Aula virtual tem a mesma característica.

O DAE não fornece nenhuma característica adicional de segurança; simplesmente faz uso dos dispositivos de segurança de uso geral na WEB (e.g.: SSL da Netscape, S-HTTP, etc.).

Finalmente, apresentou-se uma análise do mecanismo Persistent HTTP e verificou-se que no exemplo de Aula Virtual o mesmo não deve ser usado como alternativa ao dynamic argument embedding pois estes métodos têm propósitos diferentes. Devido a estas diferenças, utilizando-se os dois métodos tem-se a preservação do estado da aplicação e tem-se um ganho de desempenho em transferências de documentos HTML, principalmente quando estes posuem imagens embutidas.

Dessa forma, teríamos um servidor HTTP que utiliza: os métodos GET, PUT, CHECKOUT, CHECKIN, POST, DELETE, LINK; a técnica dynamic argument embedding para preservar o estado da aplicação; e o mecanismo de protocolo alternativo Persistent HTTP para melhorar o desempenho da aplicação.

 

Referências biliográficas

[Berners-Lee92] Berners-Lee, T. HTTP: A protocol for networked information, Internet Draft, 1992

[Dagnone98] Dagnone, C.A.F., Morandini, M., Pimenta, M.F., Torres, M.F.C.F Formatos de documentos na Web - XML, http://www.dca.fee.unicamp.br/~ricarte/Courses/IA368/ls98/Xml/c3.html

[Fluckiger95] Fluckiger, F. Taxonomy of multimedia applications in "Understanding networked multimedia: Applications and technology", Capítulo 6, pp.109-121, Prentice-Hall, 1995

[Granja98] Granja, I., Orosz, J.C.,Picarelli, J.E., Soares, M.V.,Concilio, R. XML, "Diferentes visões de um mesmo dado", http://www.dca.fee.unicamp.br/~ricarte/Courses/IA368/ls98/Xml/d3.html

[Iyengar97] Iyengar, A. Dynamic argument embedding: Preserving state on the World Wide Web, IEEE Internet Computing, 1(2):50-56, March/April 1997

[Newcom91] Newcomb, S.R., Kipp, N.A., Newcomb, V.T. The "HyTime" Hypermedia/Time-based Document Structuring Language, Communications of the ACM 34(11), pp.67-83, November 1991

[Touch96] Touch, J., Heidemann, J., Obraczka, K. Analysis of HTTP Performance, USC/Information Sciences Institute, August 16, 1996

 


Comentários dos instrutores:

Nota: A+

Texto: OK
Metodos http x funcionalidade da aplic.: metodo link nao esta correto
Implementacao funcionalidade: OK     
P-http: OK 
Conclusoes: OK

Bom trabalho !

Last modified: Wed Apr 29 17:43:57 BRA 1998