BRPI0608817A2 - sistema e método para a produção e comunicação de dados solicitados entre programas de aplicação de rede - Google Patents

sistema e método para a produção e comunicação de dados solicitados entre programas de aplicação de rede Download PDF

Info

Publication number
BRPI0608817A2
BRPI0608817A2 BRPI0608817-1A BRPI0608817A BRPI0608817A2 BR PI0608817 A2 BRPI0608817 A2 BR PI0608817A2 BR PI0608817 A BRPI0608817 A BR PI0608817A BR PI0608817 A2 BRPI0608817 A2 BR PI0608817A2
Authority
BR
Brazil
Prior art keywords
namespace
event handler
request
data
value
Prior art date
Application number
BRPI0608817-1A
Other languages
English (en)
Inventor
Jorge Pereira
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of BRPI0608817A2 publication Critical patent/BRPI0608817A2/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)

Abstract

SISTEMA E MéTODO PARA A PRODUçãO E COMUNICAçãO DE DADOS SOLICITADOS ENTRE PROGRAMAS DE APLICAçãO DE REDE. A liberação de fragmentos de documento a partir de um servidor da rede mundial para uma aplicação cliente distribuída pelo servidor. A presente invenção inclui uma estrutura de dados de uma solicitação de dados incluindo um campo namespace, um campo manipulador de eventos, e um campo parâmetro. Um primeiro processo envia uma estrutura de dados povoada para um segundo processo. O segundo processo executa a lógica mantida pelo segundo processo e identificada na estrutura de dados povoada a fim de gerar dados de resultado. O segundo processo envia os dados de resultado para o primeiro processo para exibição a um usuário ou outro processamento pelo primeiro processo.

Description

"SISTEMA E MÉTODO PARA A PRODUÇÃO E COMUNICAÇÃO DE DADOS SOLICITADOS ENTRE PROGRAMAS DE APLICAÇÃO DE REDE"
CAMPO DA TÉCNICA
As modalidades da presente invenção referem-se ao campo das comunicações por computador. Em particular, as modalidades da presente invenção se referem a solicitações de dados na forma de um esquema tendo um namespace (esquema lógico de nomes), eventos dentro do namespace, e parâmetros para os eventos.
FUNDAMENTOS DA INVENÇÃO
Algumas aplicações de correio baseadas na rede mundial, distribuídas pelo servidor oferecem aos usuários acesso às suas caixas de mensagem localizadas centralmente. Estas aplicações provêm ainda a capacidade de enviar e receber correio eletrônico (e-mail), agendar compromissos, e realizar outras tarefas de gerenciamento de informação pessoal (PIM) de uma rede, tal como a Internet. Algumas aplicações executam em um navegador e podem ser associadas a outras a-plicações de gerenciamento PIM. Estas aplicações de rede mundial de cliente requerem uma grande quantidade de tráfego cliente-servidor para poder implementar a funcionalidade do gerenciamento PIM.•Por exemplo, quando um usuário renova uma lista de e-mail em uma caixa de entrada a fim de verificar novos e-mails, é enviada uma solicitação à rede mundial para o servidor recuperar a nova lista de e-mails na caixa de entrada . .
Para algumas aplicações cliente, o. tráfego cliente-servidor é uma mistura de extensões de Criação e VersãoDistribuídas na Rede Mundial (WebDAV) ao protocolo de transferência de hipertexto (HTTP) ou outros vários esquemas (por exemplo, baseado em pares de nome-valor simplistas em solicitações HTTP POST). 0 uso de múltiplos protocolos para acesso de dados nestes sistemas anteriores complica a implementação e contribui para uma fraca capacidade de manutenção. Estes sistemas anteriores também usam esquemas inconsistentes e insuficientes para as solicitações. 0 formato nome-valor tal como usado em alguns sistemas anteriores é muito limitado è não suporta com facilidade estruturas ou arrays de dados digitados, pesadas ou mais complexas. Além disso, uma vez que o formato nome-valor requer uma quebra de encadeamento como o separador de pares de nome-valor, todos os dados para um par de nome-valor em particular têm de sercodificados sem quebra de encadeamento antes da transmissão e em seguida decodificados após recebimento. Estas etapas extras em alguns sistemas existentes tornam lento o processamento e aumentam a complexidade. Ainda, um outro problema com as aplicações cliente de rede mundial existentes é que o código do servidor que prove várias funcionalidades para a aplicação cliente é caótico e desorganizado. A adição de novos manipuladores (handlers) ao código do servidor aos sistemas existentes é difícil.
Por conseguinte, é desejado um sistema aperfeiçoado para a comunicação cliente-servidor a fim de tratar uma ou mais dentre estas e outras desvantagens.
SUMARIO DA INVENÇÃO
As modalidades da presente invenção incluem umprotocolo e esquema para a produção e comunicação de dados solicitados entre programas de aplicação de rede. Em uma modalidade, a presente invenção inclui ainda uma arquitetura e um conjunto de interfaces de programação de aplicação (API) disponíveis aos desenvolvedores de manipuladores (handlers) de solicitação que produzem os dados solicitados. As interfaces API permitem que os desenvolvedores criem manipuladores de solicitação personalizados.
Em uma modalidade cliente-servidor da presente invenção, um cliente de acordo com a presente invenção envia solicitações de dados para um servidor de acordo com um esquema bem definido da presente invenção. A solicitação identifica um namespace do manipulador de solicitação, um manipulador (handler) de eventos dentro do namespace do manipulador de solicitação, e um ou mais parâmetros do manipulador de eventos. A presente invenção inclui uma infra-estrutura de manipuladores de eventos agrupados em namespaces (esquemas lógicos de nomes) de manipulador de solicitação, no servidor que libera respostas ao cliente em múltiplos formatos, conforme solicitado pelo cliente. A infra-estrutura do servidor analisa a solicitação a fim de identificar um manipulador de eventos em particular em um namespace particular e executar o código do manipulador associado ao manipulador de eventos identificado como uma função dos parâmetros de solicitação.
A presente invenção é potente, porém leve e redi-mensionável. 0 uso de esquema consistente para as solicitações de dados simplifica a interação entre os programas deaplicação e contribui para uma capacidade de manutenção a-perfeiçoada dos manipuladores de solicitação. 0 esquema da presente invenção suporta estruturas de dados complexos. A presente invenção suporta a adição de manipuladores de solicitação sem mudanças na infra-estrutura para a produção e liberação dos dados solicitados.
De acordo com um aspecto da presente invenção, um sistema inclui um ou mais meios legiveis em computador para o armazenamento de uma pluralidade de manipuladores de eventos, cada qual tendo um namespace associado ao mesmo. Cada qual dentre a pluralidade de manipuladores de eventos possui ainda um ou mais parâmetros associados aos mesmos. Os meios legiveis em computador armazenam uma estrutura de dados que representa uma solicitação formatada de dados. A estrutura de dados inclui um campo namespace que armazena um valor de namespace que representa o namespace, um campo manipulador de eventos que armazena um valor de manipulador de eventos correspondente a um dentre a pluralidade de manipuladores de eventos. 0 um dentre a pluralidade de manipuladores de eventos é associado ao namespace representado pelo valor de namespace no campo namespace. A estrutura de dados inclui ainda um campo parâmetros que armazena um valor de parâmetro correspondente a um dos parâmetros. 0 um dos parâmetros é associado ao manipulador de eventos representado pelo valor de manipulador de eventos no campo manipulador de eventos. 0 primeiro processo é configurado para executar instruções e-xecutáveis em computador para o recebimento de uma solicitação de dados por parte de um usuário ou processo, identifi-car um valor de namespace associado à solicitação recebida, selecionar um valor de manipulador de eventos como uma função da solicitação recebida e do valor de namespace identificado, e determinar um valor de parâmetro como uma função da solicitação recebida e do valor de manipulador de eventos selecionado. 0 primeiro' processo ainda povoa a estrutura de dados por meio do armazenamento do valor de namespace identificado no campo namespace, o valor de manipulador de eventos selecionado no campo manipulador de eventos, e o valor de parâmetro determinado no campo parâmetros. O primeiro processo ainda transmite a estrutura de dados povoada para um segundo processo. O segundo processo é configurado para executar instruções executáveis em computador para o recebimento da estrutura de dados povoada a partir do primeiro processo; selecionar, como uma função da estrutura de dados recebidos, um manipulador de eventos dentre a pluralidade de manipuladores de eventos armazenados no meio legivel em computador; executar o manipulador de eventos selecionado a fim de gerar dados de resultado; e transmitir os dados de resultado gerados para o primeiro processo.
De acordo com um outro aspecto da presente invenção, um método implementado em computador produz e libera dados de um processo para outro. 0 método implementado em computador inclui o recebimento, pelo primeiro processo, de uma solicitação de dados por parte de um usuário e identificar um namespace associado à solicitação recebida. O método inclui ainda a determinação, pelo primeiro processo, de- um manipulador de eventos associado ao namespace identificadocomo uma função da solicitação recebida. 0 método inclui ainda a povoação, pelo primeiro processo, de um parâmetro associado ao manipulador de eventos determinado como uma função da solicitação recebida e a criação de uma solicitação formatada com o namespace identificado, o manipulador de eventos determinado, e o parâmetro povoado. 0 método inclui ainda a transmissão, a, partir do primeiro processo, da solicitação formatada, criada para um segundo processo. 0 método inclui ainda o recebimento, pelo segundo processo, da solicitação formatada do primeiro processo, e a seleção, como uma função da solicitação formatada, recebida, de um manipulador de eventos dentre uma pluralidade de manipuladores de eventos armazenados em uma área de memória. 0 método implementado por comunicação inclui ainda a execução, pelo segundo processo, do manipulador de eventos selecionado a fim de gerar dados de resultado, e a transmissão dos dados de resultado gerados a partir do segundo processo para o primeiro processo.
De acordo ainda com um outro aspecto da presente invenção, um ou mais meios-legiveis em computador tem componentes executáveis em computador para a produção e comunicação de dados solicitados em um ambiente de rede. Os componentes incluem um componente cliente distribuído pelo servidor para o recebimento de uma solicitação de dados por parte de um usuário; a identificação de um namespace associado à solicitação recebida; a determinação de um manipulador de eventos associado ao namespace identificado como uma função da solicitação recebida; a povoação de um parâmetro associa-do ao manipulador de eventos determinado como uma função da solicitação recebida; a criação de uma solicitação formatada com o namespace identificado, o manipulador de eventos determinado, e o parâmetro povoado; e a transmissão da solicitação formatada, criada para um componente servidor. Os componentes incluem ainda o componente servidor para o recebimento da solicitação transmitida a partir do componente cliente distribuído pelo servidor; a seleção, como uma função da solicitação recebida, de um manipulador de eventos a partir de uma pluralidade de manipuladores de eventos armazenados em uma área de memória; a execução do manipulador de eventos selecionado para gerar dados de resultado; e a transmissão dos dados de resultado gerados para o componente cliente distribuído pelo servidor.
De maneira alternativa, a presente invenção pode compreender vários outros métodos e aparelhos.
Outros aspectos ficarão em parte aparentes e em parte destacados a seguir;
BREVE DESCRIÇÃO DOS DESENHOS
A Figura 1 é um diagrama de blocos exemplar ilustrando um componente servidor que se comunica com um ou mais componentes clientes através de uma rede.
A Figura 2 é um fluxograma exemplar ilustrando a operação dos processos de cliente e de servidor para a comunicação dos dados solicitados.
A Figura 3 é üm diagrama de blocos exemplar ilustrando módulos do componente servidor.
A Figura 4 é um diagrama de blocos exemplar ilus-trando um conj unto exemplar de classes de manipulador de eventos.
A Figura 5 é um diagrama de blocos ilustrando um exemplo de um ambiente de sistema computacional adequado no qual a presente invenção pode ser implementada.
0 Anexo A descreve eventos e parâmetros exemplares em um namespace de correio eletrônico da presente invenção.
Os caracteres de referência correspondentes indicam partes correspondentes em todos os desenhos.
DESCRIÇÃO DETALHADA DA INVENÇÃO
Em uma modalidade, a presente invenção inclui um processo, componente, aplicação servidor ou dados de liberação similares para um processo, componente, aplicação cliente distribuída por um servidor, ou coisa do gênero, em resposta a uma solicitação por parte da aplicação cliente de dados, tal como ilustrado na Figura 1. Em um componente servidor 102, o código ou rotina para responder a solicitações de dados, tal como a solicitação de dados 103, é dividido em manipuladores de eventos .(por exemplo, uma pluralidade de manipuladores de eventos 104) ou coisa.do gênero. Os manipuladores de eventos 104 são logicamente organizados, em uma modalidade, em namespaces. Em particular, a presente invenção inclui a construção de uma solicitação, como, por exemplo, a solicitação de dados 103 que contém informações sobre o namespace e o manipulador de eventos a executar, assim como os parâmetros àquele manipulador de eventos. A presente invenção inclui ainda uma infra-estrutura no servidor 102 que permite aos desenvolvedores implementar manipuladores desolicitação que liberam respostas às solicitações de dados.
Um exemplo da presente invenção envolve uma visualização do calendário em uma aplicação de gerenciamento de informação pessoal distribuída. Uma visualização de calendário mostra uma lista de compromissos para um dado dia. 0 servidor 102 renova esta visualização do calendário ao consultar um banco de dados no sentido de recuperar os compromissos em uma dada faixa de tempo. Os compromissos recuperados são em seguida desenhados em um cliente (por exemplo, no componente cliente 108) nas posições corretas dependendo da hora de inicio e duração de cada um dos compromissos. Nos sistemas anteriores, tal operação de renovação era feita pelo componente cliente 108 que consulta os dados a serem retornados no formato de linguagem de marcação extensível (XML) usando as extensões de Criação e Versão Distribuídas na Rede mundial (WebDAV) para o protocolo de transferência de hipertexto (HTTP), usando uma transformação de definição de esquema extensível (XSD) a fim de gerar uma linguagem HTML a partir dos dados de linguagem XML, e apresentando a linguagem HTML ao usuário. Estes sistemas são complicados e difíceis de manter.
No entanto,, com a presente invenção, uma renovação de calendário é feita pelo componente cliente 108 que envia uma solicitação de dados formatada (por exemplo, a solicitação de dados 103), e recebe um fluxo de código (por exemplo, o JavaScript) que define os dados do calendário. Os dados de calendário são parcialmente produzidos' no servidor 102. O componente cliente 108 executa o código e gera a marcação delinguagem HTML usando um script. A carga sobre o componente cliente 108 é reduzida, uma vez que a maior parte dos dados de calendário e as informações de video é pré-computada no servidor 102. Em um outro exemplo da presente invenção, o servidor 102 atualiza uma visualização de correio de uma aplicação de gerenciamento PIM ao retornar a linguagem HTML que foi produzida no servidor 102. A presente invenção não se limita ao retorno de dados em nenhum formato em particular. Ao invés disso, a presente invenção retorna os dados em qualquer forma determinada pelo componente cliente 108, tal como nas linguagens HTML, XML, em texto, em um payload (empacotamento) em Javascript, ou coisa do gênero.
Com referência novamente à Figura 1, um diagrama de bloco exemplar ilustra um componente, processo servidor, ou coisa do gênero, como, por exemplo, o componente servidor 102 que se comunica através de uma rede (por exemplo, a Internet) com um ou mais componentes, processos clientes 108 ou coisa do gênero, como, por exemplo, o componente cliente #1 através do componente cliente #N. O sistema da Figura 1 inclui um ou mais meios legíveis em computador, como, por exemplo, a área de memória 106. A área de memória 106 armazena uma pluralidade de manipuladores de eventos 104, cada qual tendo um namespace associado ao mesmo. Cada qual dentre a pluralidade de manipuladores de eventos 104 tem ainda um ou mais parâmetros associados ao mesmo. Uma estrutura de dados representando uma solicitação de dados formatada 103 é também armazenada em um meio legível em computador. Na Figura 1, a solicitação de dados é mostrada sendo enviada docomponente cliente 108 para o componente servidor 102. A estrutura de dados que representa a solicitação de dados 103 inclui um campo namespace que armazena um valor de namespace que representa o namespace. A estrutura inclui ainda um campo manipulador de eventos que armazena um valor de manipulador de eventos correspondente a um dentre a pluralidade de manipuladores de eventos 104 armazenada na área de memória 106 associada ao namespace representado pelo valor de namespace no campo namespace. A estrutura de dados inclui ainda um campo parâmetro que armazena pelo menos um valor de parâmetro correspondente a um parâmetro associado ao manipulador de eventos representado pelo valor de manipulador de eventos no campo manipulador de eventos.
No exemplo da Figura 1, o componente cliente 108 é um primeiro processo, e o componente servidor 102 é um segundo processo. O primeiro processo é uma aplicação cliente distribuída ou é de outra forma distribuído pelo segundo processo a fim de.prover uma parte ou toda a funcionalidade do componente servidor 102. Por exemplo, o primeiro processo pode. ser uma . aplicação cliente distribuída pelo servidor, como, por exemplo, um cliente de gerenciamento de informação pessoal distribuída pelo servidor, e o componente servidor 102 pode ser um servidor de gerenciamento de informação pessoal. No entanto, a presente invenção não se limita a uma relação cliente-servidor entre o primeiro processo e o segundo processo. Por exemplo, a relação entre o primeiro processo e o segundo processo pode ser de par a par (peer-to-peer) .Em uma modalidade, o primeiro processo é configurado para executar instruções executáveis em computador de solicitação de dados por parte do segundo processo. Em particular, o primeiro processo recebe uma solicitação de dados por parte de um usuário ou processo. A solicitação pode incluir, por exemplo, uma solicitação para verificar o correio eletrônico recentemente recebido, uma solicitação para atualizar um video de calendário, ou qualquer outra solicitação de dados. 0 primeiro processo identifica um valor de names-pace associado à solicitação recebida e seleciona um valor de manipulador de eventos como uma função da solicitação recebida e o valor do namespace identificado. 0 manipulador de eventos selecionado é particular à solicitação especifica do usuário e é um dentre a pluralidade de manipuladores de eventos 103 associados ao valor de namespace identificado. 0 manipulador de eventos selecionado tem um ou mais parâmetros. O primeiro processo determina um valor de parâmetro para um ou mais dentre os parâmetros do manipulador de eventos selecionado. 0 valor de parâmetro é determinado usando-se os dados da solicitação recebida. 0 valor de parâmetro pode incluir dados de qualquer tipo e pode ser incorporado em qualquer formato reconhecido pelo segundo processo - (por exemplo, uma linguagem de marcação extensível). O primeiro processo povoa a estrutura de dados que representa a solicitação de dados 103 ao armazenar o valor do namespace identificado no campo namespace, o valor do manipulador de eventos selecionado no campo manipulador de eventos, e o valor do parâmetro determinado no campo parâmetro. 0 primeiro proces-so transmite a estrutura de dados povoada (por exemplo, a solicitação de dados 103) para o segundo processo.
Em uma modalidade, a estrutura de dados povoada inclui uma série de pares nome-valor. Por exemplo, o campo namespace e o valor do namespace são um par nome-valor, o campo manipulador de eventos e o valor do manipulador de eventos são. um par nome-valor, e o campo parâmetro e o valor do parâmetro são um par nome-valor.
O segundo processo é configurado para executar instruções executáveis em computador de geração e liberação dos dados solicitados para o primeiro processo. Em uma modalidade, o segundo processo recebe a estrutura de dados povoada (por exemplo, a solicitação de dados 103) por parte do primeiro processo e seleciona um manipulador de eventos dentre a pluralidade de manipuladores de eventos 104 armazenados na área de memória 106. O manipulador de eventos selecionado corresponde ao manipulador de eventos especificado na solicitação de dados recebida 103. O segundo processo e-xecuta o manipulador de eventos selecionado usando os parâmetros da solicitação de dados 103 recebida do primeiro processo para gerar dados de resultado. O segundo processo transmite os dados de resultado para o primeiro processo.
Em uma modalidade, o segundo processo seleciona ó manipulador de eventos apropriado consultando um banco de dados de configuração carregado com informações sobre os namespace s, manipuladores de eventos (por exemplo, a pluralidade de manipuladores de eventos 104), e os parâmetros disponíveis. O segundo processo inclui, por exemplo, um compo-nente registro de modo a construir o banco de dados de configuração antes de receber a solicitação de dados 103 -do primeiro processo. Por exemplo, a pluralidade de manipulado-res de eventos 104 pode ser organizada no banco de dados de configuração por namespace.
A presente invenção inclui um meio para armazenar a pluralidade de manipuladores de eventos 104, um meio para executar o primeiro processo, e um meio para executar o segundo processo. Um hardware e um software tal como uma estrutura de dados, uma interface com o usuário, um programa de aplicação, uma interface de programação de aplicação (API), instruções executáveis em computador, um firmware, ou coisa do gênero (tal.como ilustrado nas figuras) constituem meios para armazenar a pluralidade de manipuladores de eventos 104, meios para executar o primeiro processo, ou meios para executar o segundo processo.
Em uma modalidade, a presente invenção é implementada usando solicitações de HTTP com o verbo POST ou GET. Uma solicitação inclui as seguintes informações: um namespace (por exemplo, indicado no parâmetro cadeia de consulta em URL yns' ) , um nome de evento (por exemplo, indicado na cadeia de consulta em URL como o parâmetro yevr), e um ou mais parâmetros de solicitação. Os parâmetros são solicitações em XML para POST ou solicitações como pares nome-valor para GET.
Uma solicitação GET exemplar (por exemplo, a solicitação de dados 103) da presente invenção é como segue. URL:/mail/ev.owa?ns=CalendarView&ev=Refresh&d=11142 004T00:00 : 00ZNeste exemplo, o cliente (por exemplo, o componente cliente 108) pede ao servidor (por exemplo, o componente servidor 102) para executar o manipulador "Atualizar" no na-mespace "CalendarView". O componente cliente 108 passa um parâmetro do tipo data com o nome '"d" com valor 11/14/2004 às 12a.m. O componente servidor 102 retorna a marcação ou o empacotamento JavaScript para esta visualização, dependendo da implementação.
Uma solicitação POST exemplar (por exemplo, a solicitação de dados 103) da presente invenção é como segue.
URL:/mailserver/ev.owa?ns=Messaging&ev=SaveMessage
BODY:
<params>
<subj ect>Test eraaiK/subj ect> <to><item>userA@pageA.net</item><item>us erB@pageA.net</item></to>
<body>Test something</body>
</params>
Neste exemplo, o componente cliente 108 pede ao componente servidor 102 para executar o manipulador de eventos 'SaveMessage'no namespace 'Messaging' . Os parâmetros de evento vêm a ser o assunto (cadeia), para (array de cadeias) e corpo (cadeia). A resposta para este evento é um resultado de HTTP indicando sucesso ou erro. Neste caso, nenhuma marcação é necessária. Os parâmetros podem ser na forma de uma linguagem XML ou qualquer outro formato de linguagem compreensível ao servidor.
Com referência a seguir à Figura 2, um fluxogramaexemplar ilustra a operação dos processos cliente e servidor para a comunicação de dados solicitados. 0 fluxograma da Figura 2 reflete um método implementado em computador para a produção e liberação de dados de um processo para outro processo. 0 método inclui o recebimento, por meio de um primeiro processo, como, por exemplo, do componente cliente 108 da Figura 1, de uma solicitação de dados por parte de um usuário na etapa 202 e a identificação de um namespace associado à solicitação recebida na etapa 204. O método inclui ainda a determinação de um manipulador de eventos associado ao namespace identificado como uma função da solicitação recebida na etapa 206 e o povoamento de um parâmetro associado ao manipulador de eventos determinado como uma função da solicitação recebida na etapa 208. O método inclui ainda a criação de uma solicitação formatada (por exemplo, a solicitação de dados 103 da Figura 1) com o namespace identificado, o manipulador de eventos determinado, e o parâmetro povoado na etapa 210.. O método transmite, do primeiro processo para um segundo processo (por exemplo, o componente servidor 102), a solicitação formatada, criada na etapa 212.
O método da presente invenção inclui o recebimento, pelo segundo processo, da solicitação formatada do primeiro processo na etapa 214. O método seleciona um namespace na etapa 215 baseado na solicitação recebida. 0 método inclui ainda a seleção, pelo segundo processo como uma função da solicitação formatada, recebida, de um manipulador de e-ventos dentre uma pluralidade de manipuladores de eventos (por exemplo, a pluralidade de manipuladores de eventos 104da Figura 1) armazenados em um ou mais meios legíveis em computador (por exemplo, na área de memória 106 da Figura 1) na etapa 216. O método analisa e valida os parâmetros da solicitação recebida na etapa 217. O método inclui ainda a execução do manipulador de eventos selecionado a fim de gerar dados de resultado na etapa 218 e a transmissão, do segundo processo para o primeiro processo, dos dados de resultado gerados para o primeiro processo na etapa 220. O primeiro processo recebe os dados de resultado e, em um exemplo, exibe os dados ao usuário.
Um desenvolvedor ou outro usuário pode criar na-mespaces, manipuladores de eventos, e/ou parâmetros definidos pelo usuário. O método da presente invenção inclui ainda o recebimento, pelo primeiro processo do usuário, de um na-mespace definido pelo usuário, um manipulador de eventos definido pelo usuário associado ao namespace definido pelo u-suário, e/ou um parâmetro definido pelo usuário do manipulador de eventos definido pelo usuário. O primeiro processo registra ò namespace definido pelo usuário, o manipulador de eventos definido pelo usuário, e/ou o parâmetro definido pelo usuário, recebidos com o segundo processo. 0 segundo processo registra o namespace definido pelo usuário, o manipulador de eventos definido pelo usuário, e o parâmetro definido pelo usuário, recebidos sem mudar a infra-estrutura do segundo processo. Ou seja, o código que implementa o segundo processo (por exemplo, o componente servidor) não muda em função do registro. A infra-estrutura do segundo processo acessa o namespace definido pelo usuário, o manipulador deeventos, ou o parâmetro, registrados da mesma maneira que o segundo processo acessa outros valores de namespaces, manipulador es de eventos, e de parâmetros.
Em uma modalidade, um ou mais meios legíveis em computador têm instruções executáveis em computador para a execução do método implementado pelo computador, ilustrado na Figura 2.
Com referência a seguir à Figura 3, um diagrama em blocos exemplar ilustra módulos no componente servidor. Os módulos são chamados dentro de um encadeamento de solicitação 302 gerado pelo componente servidor. Em uma modalidade, os manipuladores de eventos são manipuladores de HTTP que implementam uma interface IHttpHandler. A presente invenção chama um método ProcessRequest nesta interface que permite que a classe de manipulador execute o código para processar a solicitação. Uma fábrica de manipulador de HYYP é uma classe que implementa a interface IHttpHandlerFactory. Estes objetos são usados para criar instâncias dos objetos de manipulador de HTTP usados para processar as solicitações. No exemplo da Figura 3, uma classe de fábrica de manipulador de HTTP chamada EventHandlerFactory 304 é mostrada. A presente invenção (por exemplo, a Aplicação de HTTP 306) instância um objeto (por exemplo, a instância EventHandlerBase 308) desta classe e chama um método "GetHandler" da interface IHttpHandlerFactory, que cria uma instância da classe de manipulador de HTTP apropriada (por exemplo, as subclasses EventHandlerBase) baseada no namespace da solicitação. A Aplicação de HHTP 306 e a instância EventHandlerBase 308 acessam um Con-texto de HTTP 314.
Um objeto EventContext 312 é uma estrutura de dados que contém informações sobre a solicitação (por exemplo, o namespace, os nomes de evento, e os parâmetros da solicitação) . 0 EventHandlerRegistry 310 é uma classe que serve como um repositório de informação sobre os namespaces e seus manipuladores, de eventos implementados pela aplicação, assim como as estruturas de dados personalizadas suportadas e as enumerações. A aplicação registra uma classe EventHandlerBase que usa este repositório 310 no inicio da aplicação. A presente invenção varre a classe (por exemplo, usando um reflexo) a fim de determinar o namespace, os eventos dentro do namespace, e os parâmetros dos eventos. Esta informação é armazenada e usada mais adiante durante o processamento da solicitação e a análise dos parâmetros.
Um fluxo exemplar de execução de uma solicitação de acordo com a presente invenção é ilustrado na Figura 3. A presente invenção recebe uma solicitação de dados de acordo com a presente invenção, cria uma instância de uma classe EventHandlerFactory, e chama o GetHandler na instância criada. A implementação GetHandler do EventHandlerFactory olha a cadeia de consultas a fim de descobrir o namespace e os nomes de eventos, e pesquisa o EventHandlerRegistry 310 para a classe de manipulador que corresponde ao namespace e aos nomes de evento na cadeia de consultas. Quando a presente invenção encontra o manipulador de eventos solicitado, a presente invenção cria uma instância daquele manipulador de e-ventos. O EventContext 312 é também criado. A presente in-venção chama o ProcessRequest no manipulador de eventos. O ProcessRequest analisa os parâmetros da solicitação usando uma classe analisadora particular à própria solicitação (por exemplo, se a solicitação for um verbo GET ou um verbo POST). A classe analisadora analisa os parâmetros da solicitação e usa o EventHandlerRegister 310 para fazer quaisquer conversões de tipo e garantir que o esquema se encontra correto (por exemplo, garantir que todos os parâmetros requeridos por este manipulador são definidos). Os parâmetros podem ser armazenados em uma coleção do contexto neste ponto. A presente invenção executa o código de manipulador de eventos associado ao manipulador de eventos (por exemplo, executa um método na classe de manipulador). Este código acessa os parâmetros do contexto, realiza o processamento, e escreve a resposta na entidade de solicitação em qualquer formato especificado pela entidade de solicitação.
Com referência a seguir à Figura 4, um diagrama de blocos exemplar ilustra um conjunto de amostras de classes de manipuladores de eventos que herdam o EventHandlerBase 402. 0 EventHandlerBase 402 implementa uma interface IHtt-pHandler 404. O CalendarEventHandler 406, o MessagingEven-tHandler 408, e o MessageViewEvent 410 herda do EventHandlerBase 402. Os desenvolvedores ou outros usuários podem criar um manipulador de eventos personalizado tal como o mostrado na Figura 4 por meio da criação de um namespace, da identificação de um evento no namespace, e da definição de parâmetros para o evento. Um namespace, um manipulador de eventos, e/ou um parâmetro definidos pelo usuário podem serselecionados pelo usuário (por exemplo, um novo manipulador de eventos dentro de um namespace existente) ou criado pelo usuário (por exemplo, um novo namespace). Em uma modalidade, um manipulador de eventos definido pelo usuário é implemen-tado como uma biblioteca de enlace dinâmico.
Os desenvolvedores ou outros usuários podem definir um esquema do namespace usando atributos tais como os mostrados abaixo.
[EventNamespace("Namespacel")]
internai class TestEventHandler: EventHandlerBase
{[Event("Eventl)]
[EventParameter("Paraml",typeof(string))]
[EventParameter("Param2",typeof(int))]
Public void EventlO
{Stringparaml =
(string)ContextGetParamValue("Paraml") ;
int param2 =
(int)Context.GetParamValue ("Param2") ;
Writer.Write("{0} + {1} = {2}", paraml, param2,
paraml + param2).
Neste exemplo, o atributo EventNamespace define o nome do namespace pelo cabo, o atributo Event define o nome do evento pelo cabo, e o atributo EventParameter define o nome do parâmetro, o tipo e se o parâmetro é opcional ounão. Para usar o manipulador, o desenvolvedor do manipulador escreve uma classe que herda do EventHandlerBase 402, escreve os eventos como métodos que não têm nenhum parâmetro e retorna vazio, define o esquema usando os atributos apropriados descritos acima, e registra a classe com o componente servidor,
As estruturas de dados da presente invenção permitem que os desenvolvedores definam tipos complexos que podem ser usados como parâmetros. Uma estrutura de dados exemplar é mostrada.
[EventStruct("r")]
internai class RecipientWellItem {
[EventFieldTdn") ]
public string DisplayName;
[EventField("em",true, woof@pageA.net")]//true = optional field
public string Email;
[EventFieldTt") ]
public int Type;
internai RecipientWellItemO {
DisplayName = "";
Email = "";
Type = 0A estrutura de dados exemplar acima é codificada conforme mostrado abaixo.
<r dn=//display name". em="email address" t="l"/>
Quando o componente da presente invenção recebe uma solicitação que se conforma a uma estrutura de dados especifica, a presente invenção cria uma instância da classe de estrutura de dados especifica e povoa a mesma com os dados da solicitação.
Ambiente Operacional Exemplar
A Figura 5 mostra um exemplo de um dispositivo computacional de uso geral na forma de um computador 130. Em uma modalidade da presente invenção, um computador, como, por exemplo, o computador 130, é adequado para uso nas demais figuras ilustradas e descritas no presente documento. O computador 130 possui um ou mais processadores ou unidades de processamento 132 é uma memória de sistema 134. Na modalidade ilustrada, um barramento de sistema 136 acopla várioscomponentes de sistema, incluindo a memória de sistema 134 aos processadores 132. O barramento 136 representa um ou mais dentre diversos tipos de estruturas de barramento, incluindo um barramento de memória ou uma controladora de memória, um barramento periférico, uma porta gráfica acelerada, e um processador ou barramento local que usa qualquer uma dentre uma variedade de arquiteturas de barramento. À guisa de exemplo, e não de limitação, tais arquiteturas incluem o barramento de Arquitetura de Padrão Industrial(ISA), o barramento de Arquitetura de Micro Canal (MCA), o barramento de Arquitetura ISA Aperfeiçoada (EISA), o barramento local da Associação de Padrões Eletrônicos de Video (VESA), ou o barramento de Interconexão de Componentes Periféricos (PCI), também conhecido como barramento Mezzanine.
0 computador 130 tem tipicamente pelo menos alguma forma de meio legivel em computador. Os meios legíveis em computador, que incluem meios voláteis ou não voláteis, e meios removíveis ou não removíveis, podem ser qualquer meio disponível que possa ser acessado pelo computador 130. À guisa de exemplo, e não de limitação, os meios legíveis em computador compreendem meios de armazenamento em computador e meios de comunicação. Os meios de armazenamento em computador incluem os meios voláteis ou não voláteis, os removíveis ou não removíveis implementados em qualquer método ou tecnologia para o armazenamento de informações, como, por exemplo, instruções legíveis em computador, estruturas de dados, módulos de programa ou outros dados. Por exemplo, os meios de armazenamento em computador incluem a Memória RAM, a Memória ROM, a Memória EEPROM, a memória flash ou outra tecnologia de memória, CD-ROM, discos versáteis digitais (DVD) ou outro armazenamento de disco ótico, cassetes magnéticos, fita magnética, armazenamento de disco magnético ou outros dispositivos magnéticos de armazenamento, ou qualquer outro meio que possa ser usado para armazenar as informações desejadas e que possa ser acessado pelo computador 130. Os meios de comunicação tipicamente incorporam instruções legíveis em computador, estruturas de dados, módulos de progra-ma, ou outros dados em um sinal de dados modulado, como, por exemplo, uma onda portadora ou outro utilitário de transporte, e incluem quaisquer meios de liberação de informações. Os versados na técnica estão familiarizados com o sinal de dados modulado, o qual tem uma ou mais de suas características definidas ou modificadas de tal maneira a codificar informações no sinal. São exemplos dos meios de comunicação os meios de conexão fisica, como, por exemplo, uma rede a cabo ou uma conexão direta a cabo, e os meios sem fio, como, por exemplo, os meios acústicos, de RF, os infravermelhos ou outros meios sem fio. As combinações de quaisquer dentre o acima devem ser também incluídas dentro do âmbito dos meios legíveis em computador.
A memória de sistema 134 inclui um meio de armazenamento em computador na forma de memória removível e/ou não removível, volátil e/ou não volátil. Na modalidade ilustrada, a memória de sistema 134 inclui a memória de leitura (ROM) 138 e a memória de acesso aleatório (RAM) 140. Um sistema de entrada / saida básico 142 (BIOS), contendo as rotinas básicas que ajudam a transferir informações entre elementos dentro do computador 130, como, por exemplo, durante a inicialização, fica tipicamente armazenado na memória ROM 138. A memória RAM 140 tipicamente contém dados e/ou módulos de programa que são imediatamente acessíveis à e/ou que são correntemente operados pela unidade de processamento 132. À guisa de exemplo, e não de limitação, a Figura 5 ilustra o sistema operacional 144, os programas de aplicação 14 6, outros módulos de programa 148, e os dados de programa 150.O computador 130 pode incluir ainda outros meios de armazenamento em computador removíveis / não removíveis, voláteis / não voláteis. Por exemplo, a Figura 5 ilustra uma unidade de disco rigido 154 que lê a partir de ou grava em üm meio magnético não removível e não volátil. A Figura 5 também mostra uma unidade de disco magnético 156 que lê a partir de ou grava em um disco magnético removível e não volátil 158, e uma unidade de disco ótico 160 que lê a partir de ou grava em um disco ótico removível e não volátil 162, como, por exemplo, um CD ROM ou outro meio ótico. Outros meios de armazenamento em computador removíveis / não removíveis, voláteis / não voláteis que podem ser usados no ambiente operacional exemplar incluem, porém não se limitam a, cassetes de fita magnética, cartões de memória flash, discos versáteis digitais, fita de video digital, memória RAM em estado sólido, memória ROM em estado sólido, ou coisa do gênero. A unidade de disco rigido 154, e a unidade de disco magnético 156, e a unidade de disco ótico 160 são tipicamente conectadas ao barramento de sistema 136 por meio de uma interface de memória não volátil, como, por exemplo, a interface 166.
As unidades ou outros dispositivos de armazenamento em massa e seus meios de armazenamento em computador associados apresentados acima e ilustrados na Figura 5 provêm o armazenamento de instruções legíveis em computador, estruturas de dados, módulos de programa e outros dados para o computador 130. Na Figura 5, por exemplo, a unidade de disco rigido 154 é ilustrada como o sistema operacional de armaze-namento 170, os programas de aplicação 172, outros módulos de programa 174, e os dados de programa 176. Observa-se que estes componentes podem ser iguais aos ou diferentes do sistema operacional 144, dos programas de aplicação 146, de outros módulos de programa 148, ou dos dados de programa 150. O sistema operacional 170, os programas de aplicação 172, outros módulos de programa 174, e os dados de programa 176 recebem números diferentes na presente invenção a fim de ilustrar que, no minimo, os mesmos são cópias diferentes.
Um usuário pode entrar comandos e informações para o computador 130 através de dispositivos de entrada ou de dispositivos de seleção de interface, como, por exemplo, um teclado 180 ou um dispositivo de indicação 182 (por exemplo, um mouse, um trackball, uma caneta, ou uma mesa sensível.ao toque) . Outros dispositivos de entrada (não mostrados) podem incluir um microfone, um joystick, uma controladora de jogos, uma antena parabólica de satélite, um leitor ótico (scanner), ou coisa do gênero. Estes e outros dispositivos de entrada são conectados à unidade de processamento 132 através de uma interface de entrada com o usuário 184 que é acoplada ao barramento de sistema 136, mas podem ser conectados por meio de uma outra interface ou estruturas de barramento, como, por exemplo, por uma porta paralela, uma porta de jogos, ou um Barramento Serial Universal (USB). Um monitor 188 ou outro tipo de dispositivo de video é também conectado ao barramento de sistema 136 por meio de uma interface, como, por exemplo, uma interface de video 190. Além do monitor 188, os computadores com freqüência incluem outrosdispositivos de saida periféricos (não mostrados), como, por exemplo, uma impressora e alto-falantes, os quais podem ser conectados através de uma interface periférica de saida (não mostrada).
0 computador 130 pode operar em um ambiente de rede utilizando conexões lógicas a um ou mais computadores remotos, como, por exemplo, um computador remoto 194. O computador remoto 194 pode ser um computador pessoal, um servidor, um roteador, um PC de rede, um dispositivo de rede não hierárquica ou outro nó de rede comum, e tipicamente inclui muitos dos ou todos os elementos descritos acima com relação ao computador 130. As conexões lógicas ilustradas na Figura 5 incluem uma rede de área local (LAN) 196 e uma rede de á-rea remota (WAN) 198, mas podem incluir ainda outras redes. A rede LAN 136 e/ou a rede WAN 138 pode ser uma rede fisica a cabo, uma rede sem fio, uma combinação das mesmas, e assim por diante. Estes ambientes de rede são comuns em escritórios, em redes de computador empresariais, em intranets, e nas redes globais de computador (por exemplo, a Internet).
Quando utilizado em um ambiente de rede de área local, o computador 130 é conectado à rede LAN 196 através de uma interface de rede ou de uma adaptadora 186. Quando utilizado em um ambiente de rede de área remota, o computador 130 tipicamente inclui um modem 178 ou um outro meio para o estabelecimento de comunicações pela rede WAN 198, como, por exemplo, pela Internet. O modem 178, que pode ser interno ou externo, é conectado ao barramento de sistema 136 via a interface de entrada de usuário 184, ou outro mecanis-mo apropriado. Em um ambiente de rede, os módulos de programa ilustrados com relação ao computador 130, ou porções dos mesmos, podem ser armazenados em um dispositivo de armazenamento de memória remota (não mostrado). À guisa de exemplo, e não de limitação, a Figura 5 ilustra os programas de aplicação remota 192 residentes no dispositivo de memória. As conexões de rede mostradas são exemplares e outros meios para o estabelecimento de um enlace de comunicação entre os computadores podem ser utilizados.
De modo geral, os processadores de dados do computador 130 são programados por meio de instruções armazenadas em diferentes momentos nos vários meios de armazenamento legíveis em computador do computador. Os programas e os sistemas operacionais são tipicamente distribuídos, por exemplo, em discos flexíveis ou em CD-ROM. A partir dai, os mesmos são instalados ou carregados para a memória secundária de um computador. Em execução, os mesmos são carregados pelo menos parcialmente para a memória eletrônica primária do computador. A presente invenção descrita no presente documento inclui estes e outros vários tipos de meios de armazenamento legíveis em computador quando tais meios contêm instruções ou programas para a implementação, das etapas descritas abaixo em conjunto com um microprocessador ou outro processador de dados. A presente invenção inclui ainda o próprio computador quando programado de acordo com os métodos e técnicas descritas no presente documento.
Para fins de ilustração, os programas ou outros componentes de programa executáveis, como, por exemplo, osistema operacional, são ilustrados no presente documento como blocos discretos. Reconhece-se, no entanto, que tais programas e componentes residem em vários momentos em diferentes componentes de armazenamento do computador, e são executados pelo (s) processador(es) de dados do computador.
Embora descrita com relação a um ambiente de sistema computacional exemplar, incluindo o computador 130, a presente invenção é operacional com diversos outros ambientes ou configurações de sistema computacional de uso geral ou de uso especifico. O ambiente de sistema computacional não pretende sugerir nenhuma limitação quanto ao âmbito de uso ou à funcionalidade da presente invenção. Além disso, o ambiente de sistema computacional não deve ser interpretado como tendo qualquer dependência ou exigência com relação a qualquer um componente ou combinação de componentes ilustrados no ambiente operacional exemplar. Exemplos de sistemas, ambientes, e/ou configurações computacionais bem conhecidos que podem ser adequados para uso com a presente invenção incluem, não se limitando, porém, a, computadores pessoais, computadores servidores, dispositivos manuais ou do tipo laptop, sistemas multiprocessadores, sistemas baseados em microprocessador, aparelhos decodificadores, equipamentos eletrônicos programáveis pelo consumidor, telefones móveis, os PC de rede, minicomputadores, computadores de grande porte, ambientes computacionais distribuidos, que incluem qualquer dentre os sistemas ou dispositivos acima, ou coisa do gênero.
A presente invenção pode ser descritas no contextogeral das instruções executáveis em computador, como, por exemplo, módulos de programa, executadas por um ou mais computadores ou outros dispositivos. De modo geral, os módulos de programa incluem, porém não se limitam a, rotinas, programas, objetos, componentes, e estruturas de dados que realizam tarefas particulares ou implementam tipos de dados abstratos particulares. A presente invenção pode ser também praticada em ambientes computacionais distribuídos, onde tarefas são realizadas por dispositivos de processamento remoto que são enlaçados por meio de uma rede de comunicação. Em um ambiente computacional distribuído, os módulos de programa podem se localizar em um meio" de armazenamento de computador local ou remoto, incluindo os dispositivos de armazenamento de memória.
Uma interface no contexto de uma arquitetura de software inclui um módulo de software, um componente, uma porção de código, ou outra seqüência de instruções executáveis em computador. A interface inclui, por exemplo, um primeiro módulo que acessa um segundo módulo a fim de realizar tarefas computacionais em nome do primeiro módulo. 0 primeiro e segundo módulos incluem, por exemplo, interfaces de programação de aplicação (API), tais como as providas pelos sistemas operacionais, as interfaces de modelo de objeto componente (COM) (por exemplo, para a comunicação de aplicações não hierárquica), e interfaces de formato de intercâmbio de metadados de linguagem de marcação extensível (XMI) (por exemplo, para a comunicação entre os serviços da rede mundial).A interface pode ser uma implementação sincrona, bem acoplada, tal como na plataforma Java 2 Platform Enterprise Edition (J2EE) , no modelo COM, ou nos exemplos de modelo COM distribuído (DCOM). De maneira alternativa ou em adição, a interface pode ser uma implementação assincrona, fracamente acoplada, tal como em um serviço da rede mundial (por exemplo, usando o protocolo de acesso de objeto simples). Em geral, a interface inclui qualquer combinação das seguintes características: fortemente acoplada, fracamente acoplada, sincrona, e assincrona. Além disso, a interface pode se conformar a um protocolo padrão, a um protocolo proprietário, ou a qualquer combinação de protocolos padrão e proprietário.
As interfaces descritas no presente documento podem juntas fazer parte de uma única interface ou podem ser implementadas como interfaces separadas ou qualquer combinação nas mesmas. As interfaces podem executar localmente ou remotamente a fim de prover funcionalidade. Da mesma forma, as interfaces podem incluir uma funcionalidade adicional ou uma menor funcionalidade do que o ilustrado ôu descrito no presente documento.
Em operação, o computador 130 executa instruções executáveis em computador, como, por exemplo, as descritas na Figura 2 no sentido de produzir e comunicar dados solicitados entre programas de aplicação em rede.
O Anexo A lista namespaces, manipuladores de eventos, e parâmetros exemplares de acordo com a presente invenção. No Anexo A, um tipo de manipulador DatePickerEventHan-dler inclui eventos para cada coletor de datas. Um coletor de datas é um componente de interface com o usuário que permite a um usuário selecionar datas em diversos contextos na aplicação. 0 evento RenderMonth produz o fragmento em linguagem HTML correspondente a um mês. Quando o usuário clica para navegar em Janeiro de 2005, o componente cliente da presente invenção envia o evento RenderMonth para o servidor que pega os parâmetros de entrada (por exemplo, ymr para o mês que é a data Janeiro de 2005) e produz o fragmento em linguagem HTML para aquele mês. O fragmento em linguagem HTML é enviado de volta para o cliente.
Um tipo de manipulador MessageListViewEventHandler inclui eventos para a visualização da lista de mensagens que mostra mensagens, por exemplo, em uma caixa de entradaO Delete event é executado quando o usuário seleciona algumas mensagens para exclusão. O identificador de pasta é representado pelo atributo xfld'. Os arrays de identificadores de mensagens a excluir são representados pelo atributo xid'.
Um RecipientWellEventHandler é o manipulador de eventos para o poço de recipientes. Um exemplo de um evento neste tipo de manipulador é o resolve. 'Resolve' pega os campos to, .cc, e bcc em uma mensagem de correio eletrônico como parâmetros que são arrays de cadeias. O evento Resolve analisa e soluciona estas cadeias. Por exemplo, quando um usuário digita "BobS", a solicitação de dados é enviada para o servidor com um único item na array correspondente ao parâmetro *to' "BobS". A resposta é um fragmento em linguagem HTML com "Bob Smith" em HTML com o endereço de correio ele-trônico de Bob Smith e talvez outros dados anexados ao mesmo.
Uma explicação detalhada do método GetViewPayload no manipulador de eventos de visualização de calendário é feita em seguida. Os parâmetros para este método incluem os atributos 'nvs', *fld', Mays', Vt' , e Mir' . Este manipulador de eventos é chamado a partir do cliente quando a visualização de calendário precisa ser atualizado. A visualização de calendário exibe uma fileira de horas à esquerda do video com incrementos de meia hora e cada dia é exibido em uma coluna.
Quando a visualização do calendário precisa ser atualizada, um evento GetViewPayload é acionado. Este evento carrega os dados do conteúdo backend (por exemplo, faz uma consulta no calendário do usuário na caixa de mensagens), e produz um código (por exemplo, o JavaScript) que descreve aquele dado. 0 código produzido é referido como um payload (empacotamento). 0 payload é enviado para o cliente que redesenha a visualização usando os dados de payload. Um payload exemplar inclui o tempo de inicio / fim de cada compromisso, o assunto, o local, a condição livre / ocupado e assim por diante. Da mesma forma, as coordenadas de cada retângulo são calculadas no servidor e enviadas como parte deste payload de modo a simplificar o script pelo lado do cliente.
Os parâmetros para o método GetViewPayload incluem os atributos 'nvs' , Afld', xdays', xvt', e 'dir'. 0 atributo ^nvs' é o atributo "estado sem visualização" que, se verdadeiro, indica que não há necessidade de persistir no estadode visualização. 0 estado de visualização é um conjunto de parâmetros que define a visualização (por exemplo, o número de dias visualizado e o tipo de visualização). 0 tipo de visualização pode ser semanal ou diário. Quando o parâmetro 'vs' é falso, o estado de visualização é preservado para o momento seguinte que o usuário se conectar. 0 atributo 'fld' é o atributo "identificador de pasta" que corresponde ao identificador da pasta calendário a visualizar. 0 atributo Mays' inclui arrays de datas a visualizar. 0 atributo 'vt' corresponde ao "tipo de visualização" diário ou semanal. O atributo Mir' é a "direção" opcionalmente especificada das setas de navegação. A definição deste atributo significa que o usuário clicou nas setas de navegação e o servidor deve calcular o conjunto seguinte de datas a visualizar baseadono atributo Mays' . Por exemplo, se o atributo Mays' é o dia 2, 3, e 4 de março e o atributo Mir' é definido em +1, o servidor adicionará 7 dias a cada um destes (por exemplo, a visualização de múltiplos dias avança em incrementos de 7 dias) . Se o atributo 'days' é 2 de março apenas (por exempio, a visualização de único dia) , o clique na seta da direita navega para 3 de março, e deste modo o servidor só a-diciona 1 dia.
Uma solicitação exemplar ao método GetViewPayload é mostrada abaixo.
POST /mailclien1/ev.owa?oelr=l <Sais=CalendarView&ev==<jetViewPayload
HTTP/1.1
Body:
<params><fíd>LgAAAABjczgv^^ z9+rfNa9e8AAAAABedAAAB<fld><days><item>2004-12-15TOO:00:00<item><item>2004-12-16T00:00:
00</itemXitem>2004-12-
17T00:00:00</item></daysXvt>l</víXnvs>l</nvs>< params>
Uma porção de uma resposta exemplar à solicitação
acima é mostrada abaixo.
Array(nc("RgAAAABjcih^^
Na9e8AAAAABedAAD4IffJk6V9Saz^^ 12-15-2004 17:30:00 U"s"12-15-200418:00:00 U","Stoategy Meeting","Conf Room l",2,l,nBob
4GDBwD4If+Jk6V9Saz94r£Na9e8AAAAABedAAD4If+Jk6V9Saz9+ 8AAAAACNqAAAJ","12-15-2004 21:00:00 UV'12-15-2004 21:30:00 U","Outof
OfficeV^2A™l,3,lA"^nc("RgAAA^^
wD4If+Jk6V9Saz94-rfNa9e8AAAAABedAAD4IffJk6V9Saz94rfNa9e8AAA AADThAAAI*',"12-16-2004 00:00:00 U",»'12-16-2004 01:00:00 UVPortfolio Development Meetmg","Conf Room 2",2,l,"Joe AAU>0Am7);a_rgDay=new Array0;var
t;1^ew(^lDay(,,l5^,Wednesdây^l542^004);av(tJOJ9,l,l,0);av(t,0,24,0.5,4
.D;
av(t,0.5,26,0.5,l92);av(t,0,32,lA3);av(t,0>34>l,2,4);a_i^ay[0]^t^e^
y(n6,^"Thursday»>16í12s2004);av(t,0^0,l>lJ5);av(t,0J21JU,6);av(t,0J23,lí2,7
);av(t,0,25,l,l>8);av(t90i28,0.5,6>10);av(t,0.5528,0.5,4,9);av(t,0.5533,0.5,3,ll);a
_^^ay[lH;1^ewCalDay(n7^^rióay,^17,12s2004);av(t90,20,0.5>4,13);av(t>
0.5J20,0.5,2112);av(t,0.5^3,0.5,3,14);av(t,0,25,0.5>l,15);av(t,0J28,0.5,2,17);av
(l,0.5^9,0,5,3,18);avf(tJ26s22s3);a_rgDayt2]=^a_i^vt=Tiew
Anay(ne(2J0,l,16,2,0))
A ordem de execução ou desempenho dos métodos i-lustrados e descritos não é uma questão essencial, a menos que de outra forma especificado. Ou seja, é contemplado pela presente invenção que os elementos dos métodos possam ser realizados em qualquer ordem, a menos que de outra forma es-pecificado, e que os métodos possam incluir mais ou menos elementos do que os apresentados no presente documento.
Ao se introduzir os elementos da presente invenção ou as modalidades da mesma, os artigos "o", "a", "os", "as", "um", "uma", e a palavra "dito(s)" ou "dita(s)" querem dizer que existem um ou mais elementos. Os termos "compreender", "incluir", e "ter" e suas variações pretendem estar inclusos e significam que pode haver elementos adicionais diferentes dos elementos listados.
Em vista do apresentado acima, será visto que diversos objetos da presente invenção são alcançados e outros resultados vantajosos obtidos.
Uma vez que várias mudanças podem ser feitas nas construções e nos métodos acima sem se afastar do âmbito das modalidades da presente invenção, pretende-se que toda a matéria contida na descrição acima e mostrada nos desenhos em anexo seja interpretada como ilustrativa e não com um sentido, limitante.
ANEXO A
São mostrados nas tabelas abaixo eventos e parâmetros exemplares no namespace de correio eletrônico (por e-xemplo, Mail.Clients) para um programa de aplicação de correio eletrônico distribuído pelo servidor.
Tabela Al. Manipuladores de Evento Exemplares e Parâmetros para o Manipulador de Eventos Coletor de Dados
Tipo de manipulador
fMail.Clients. DatePickerEventHandler<table>table see original document page 39</column></row><table>
Tabela 2. Manipuladores de eventos Exemplares e Parâmetros para o Manipulador de Eventos de Visualização de Lista de Mensagens
<table>table see original document page 39</column></row><table><table>table see original document page 40</column></row><table><table>table see original document page 41</column></row><table><table>table see original document page 42</column></row><table><table>table see original document page 43</column></row><table><table>table see original document page 44</column></row><table><table>table see original document page 45</column></row><table><table>table see original document page 46</column></row><table><table>table see original document page 47</column></row><table><table>table see original document page 48</column></row><table><table>table see original document page 49</column></row><table><table>table see original document page 50</column></row><table><table>table see original document page 51</column></row><table><table>table see original document page 52</column></row><table><table>table see original document page 53</column></row><table><table>table see original document page 54</column></row><table><table>table see original document page 55</column></row><table><table>table see original document page 56</column></row><table><table>table see original document page 57</column></row><table><table>table see original document page 58</column></row><table>

Claims (20)

1. Sistema para comunicação, CARACTERIZADO pelofato de compreender:- um ou mais meios legíveis de computador para ar-mazenar :- uma pluralidade de manipuladores de eventos (e-vent handlers), cada qual tendo um namespace (esquema lógicode nomes) associado aos mesmos, cada um dentre a dita plura-lidade de manipuladores de eventos tendo ainda um ou .maisparâmetros associados aos mesmos; e- uma estrutura de dados representando uma solici-tação formatada de dados, a dita estrutura de dados incluin-do um campo namespace que armazena um valor de namespace querepresenta o namespace, um campo manipulador de eventos quearmazena um valor de manipulador de eventos correspondente aum dentre a pluralidade de manipuladores de eventos, o ditoum dentre a pluralidade de manipuladores de eventos sendoassociado ao namespace representado pelo valor dé namespaceno campo namespace, e um campo parâmetro que armazena um va-lor de parâmetro correspondente a um dentre os parâmetros, odito um dos parâmetros sendo associado ao manipulador de e-ventos representado pelo valor de manipulador de eventos nocampo manipulador de eventos; e- um primeiro processo distribuído por um segundoprocesso, o dito primeiro processo sendo configurado paraexecutar instruções executáveis em computador para:- receber uma solicitação de dados por parte de umusuário ou processo;- identificar um valor de namespace associado àsolicitação recebida;- selecionar um valor de manipulador de eventoscomo uma função da solicitação recebida e do valor de names-pace identificado;- determinar um valor de parâmetro como uma funçãoda solicitação recebida e do valor de manipulador de eventosselecionado;- povoar a estrutura de dados por meio do armaze-namento do valor de namespace identificado no campo namespa-ce, do valor de manipulador de eventos selecionado no campomanipulador de eventos, e do valor de parâmetro determinadono campo parâmetro; e- transmitir a estrutura de dados povoada para osegundo processo; e- o segundo processo sendo configurado para execu-tar instruções executáveis em computador para:- receber a estrutura de dados povoada do primeiroprocesso;- selecionar, como uma função da estrutura de da-dos -recebida, um manipulador de eventos a partir da plurali-dade de manipuladores de eventos armazenados no meio legívelem computador;- executar o manipulador de eventos selecionado demodo a gerar dados de resultado; e- transmitir os dados de resultado gerados para oprimeiro processo.
2. Sistema, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de que a solicitação formatada paradados compreende o campo namespace e o valor de namespacecomo üm par nome-valor, o campo manipulador de eventos e ovalor de manipulador de eventos como um par nome-valor, e ocampo parâmetro e o valor de parâmetro como um par nome-valor.
3. Sistema, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de que o meio legivel em computadore o primeiro processo são associados a um cliente de geren-ciamento de informação pessoal distribuída pelo servidor.
4. Sistema, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de que o meio legivel em computadore o segundo processo são associados a um servidor de geren-ciamento de informação pessoal.
5. Sistema, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de que o valor de parâmetro compre-ende dados formatados de acordo com uma linguagem de marca-ção extensível.
6. Sistema, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de que uma aplicação cliente distri-buída executa o primeiro processo e uma aplicação servidorexecuta o segundo processo, e pelo fato de que a aplicaçãocliente distribuída prove pelo menos uma porção da funciona-lidade da aplicação servidor.
7. Sistema, de acordo com a reivindicação 1,CARACTERIZADO pelo-fato de que o segundo processo é configu-rado ainda para executar instruções executáveis em computa-dor para a construção de um banco de dados de configuraçãocom a pluralidade de manipuladores de eventos armazenados nomeio legivel em computador.
8. Sistema, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de compreender ainda um meio paraarmazenar a pluralidade de manipuladores de eventos.
9. Sistema, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de compreender ainda um meio paraexecutar o primeiro processo e um meio para executar o se-gundo processo.
10. Sistema, de acordo com a reivindicação 1,CARACTERIZADO pelo fato de que o segundo processo é configu-rado ainda para executar instruções executáveis em computa-dor para:- validar o valor de parâmetro; e- converter o valor de parâmetro em um tipo de da-do associado ao mesmo.
11. Método implementado por computador para a pro-dução e liberação de dados a partir de um processo para umoutro processo, o dito método implementado por computadorsendo CARACTERIZADO pelo fato de compreender as etapas de:- receber, por meio de um primeiro processo, umasolicitação de dados por parte de um usuário;- identificar, por meio do primeiro processo, umnamespace associado à solicitação recebida;- determinar, por meio do primeiro processo, ummanipulador de eventos associado ao namespace identificadocomo uma função da solicitação recebida;- povoar, por meio do primeiro processo, um para-metro associado. ao manipulador de eventos determinado comouma função da solicitação recebida;- criar, por meio do primeiro processo, uma soli-citação formatada com o namespace identificado, o manipula-dor de eventos determinado, e o parâmetro povoado;- transmitir, a partir do primeiro processo, a so-licitação formatada, criada para um segundo processo;- receber, por meio do segundo processo, a solici-tação formatada a partir do primeiro processo;- selecionar, por meio do segundo processo, comouma função da solicitação formatada, recebida, um manipula-dor de eventos a partir de uma pluralidade de manipuladoresde.eventos armazenados em uma área de memória;- executar, por meio do segundo processo, o mani-pulador de eventos selecionado a fim de gerar dados de re-sultado; e- transmitir, a partir do segundo processo, os da-dos de resultado gerados para o primeiro processo.
12. Método implementado por computador, de acordocom a reivindicação 11, CARACTERIZADO pelo fato de compreen-der ainda a etapa de receber, por meio do primeiro processo,os dados de resultado transmitidos.
13. Método implementado por computador, de acordocom a reivindicação 11, CARACTERIZADO pelo fato de compreen-der ainda as etapas de:- receber, por meio do primeiro processo por partedo usuário, um namespace definido pelo usuário, um manipula-dor de eventos definido, associado ao namespace definido pe-lo usuário, e um parâmetro definido pelo usuário do manipu-lado r de eventos definido pelo usuário; e- registrar, por meio do primeiro processo com osegundo processo, o namespace recebido, definido pelo usuá-rio, e o parâmetro definido pelo usuário.
14. Método implementado por computador, de acordocom a reivindicação 13, CARACTERIZADO pelo fato de gue o se-gundo processo registra o namespace recebido, definido pelousuário, o manipulador de eventos definido pelo usuário, e oparâmetro definido pelo usuário sem mudar a infra-estruturade preferência segundo processo.
15. Método implementado por .computador, de acordocom a reivindicação 11, CARACTERIZADO .pelo fato de compreen-der
16. Meio ou meios legivel(eis) em computador tendocomponentes executáveis em computador para a produção e co-municação de dados sólidos em um ambiente de rede, os ditoscomponentes sendo CARACTERIZADOS pelo fato de compreender:- um componente cliente distribuído pelo servidorpara:- receber uma solicitação de dados por parte de umusuário;- identificar um namespace associado à solicitaçãorecebida;- determinar um manipulador de eventos associadoao namespace identificado como uma função da solicitação re-cebida;- povoar um parâmetro associado ao manipulador deeventos determinado como uma função da solicitação recebida;- criar uma solicitação formatada com o namespaceidentificado, o manipulador de eventos determinado, e o pa-râmetro povoado; e- transmitir a solicitação formatada, criada paraum componente servidor; e- um componente servidor para:- receber a solicitação transmitida a partir docomponente cliente distribuído pelo servidor;- selecionar, como uma função da solicitação rece-bida, um manipulador de eventos dentre uma pluralidade demanipuladores de eventos em uma área de memória;- executar o manipulador de eventos selecionado afim de gerar dados de resultado; e- transmitir os dados de resultado gerados para ocomponente cliente distribuído pelo servidor.
17. Meio legivel em computador, de acordo com areivindicação 16, CARACTERIZADO pelo fato de compreender umcomponente registro para a construção de um banco de dadosde configuração com a pluralidade de manipuladores de even-tos armazenados na área de memória.
18. Meio legivel em computador, de acordo com areivindicação 17, CARACTERIZADO pelo fato de que o componen-te servidor seleciona, como uma função da solicitação rece-bida, um manipulador de eventos a partir do banco de dadosde configuração.
19. Meio legivel em computador, de acordo com areivindicação 16, CARACTERIZADO pelo fato de que o componen-te cliente distribuído pelo servidor compreende um clientede gerenciamento de informação pessoal.
20. Meio legivel em computador, de acordo com areivindicação 16, CARACTERIZADO pelo fato de que o componen-te servidor compreende um servidor de gerenciamento de in-formação pessoal.
BRPI0608817-1A 2005-04-08 2006-03-09 sistema e método para a produção e comunicação de dados solicitados entre programas de aplicação de rede BRPI0608817A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/102,039 US7418715B2 (en) 2005-04-08 2005-04-08 System and method for producing and communicating requested data among networked application programs
US11/102.039 2005-04-08
PCT/US2006/008275 WO2006110237A2 (en) 2005-04-08 2006-03-09 System and method for producing and communicating requested data among networked application programs

Publications (1)

Publication Number Publication Date
BRPI0608817A2 true BRPI0608817A2 (pt) 2010-01-26

Family

ID=37084265

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0608817-1A BRPI0608817A2 (pt) 2005-04-08 2006-03-09 sistema e método para a produção e comunicação de dados solicitados entre programas de aplicação de rede

Country Status (11)

Country Link
US (1) US7418715B2 (pt)
EP (1) EP1872281A4 (pt)
JP (1) JP2008538428A (pt)
KR (1) KR101219997B1 (pt)
CN (1) CN101548256B (pt)
BR (1) BRPI0608817A2 (pt)
MX (1) MX2007011027A (pt)
MY (1) MY144258A (pt)
RU (1) RU2419864C2 (pt)
TW (1) TWI388992B (pt)
WO (1) WO2006110237A2 (pt)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070198473A1 (en) * 2006-02-03 2007-08-23 Simdesk Technologies, Inc. Computer system displaying personal information items in database as individual files
US20080025232A1 (en) * 2006-07-26 2008-01-31 International Business Machines Corporation Method and system for network connection
US20080228715A1 (en) * 2007-03-12 2008-09-18 Terabyte Media, Llc Apparatus and method for distributed information retrieval and processing
US7966287B2 (en) 2008-05-15 2011-06-21 International Business Machines Corporation Apparatus, system, and method for dynamic database driven document synchronization
US8726237B2 (en) * 2009-10-28 2014-05-13 Microsoft Corporation Event handling for unmanaged code
CN102622216A (zh) * 2011-01-30 2012-08-01 国际商业机器公司 一种用于应用的协同工作的方法和系统
TWI571747B (zh) * 2011-10-28 2017-02-21 Lxm公司 資料交換系統
US8984124B2 (en) * 2011-11-30 2015-03-17 Microsoft Technology Licensing, Llc System and method for adaptive data monitoring
JP5896712B2 (ja) * 2011-12-08 2016-03-30 キヤノン株式会社 情報処理装置、情報処理方法、プログラム、及び、情報処理システム
JP5942634B2 (ja) * 2012-06-27 2016-06-29 富士通株式会社 秘匿化装置、秘匿化プログラムおよび秘匿化方法
US9141707B2 (en) * 2012-07-19 2015-09-22 Facebook, Inc. Context-based object retrieval in a social networking system
EP2991241A1 (en) 2014-08-27 2016-03-02 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Sudac, user equipment, base station and sudac system
KR101581776B1 (ko) * 2015-05-14 2015-12-31 주식회사 티맥스 소프트 웹 서버에서 파일 디스크립터를 분배하는 방법, 이를 사용한 웹 서버 및 컴퓨터 판독 가능한 기록 매체
US9940169B2 (en) 2015-07-23 2018-04-10 Pearson Education, Inc. Real-time partitioned processing streaming
US11468053B2 (en) 2015-12-30 2022-10-11 Dropbox, Inc. Servicing queries of a hybrid event index
US11099912B1 (en) * 2016-06-29 2021-08-24 Amazon Technologies, Inc. Processing computationally intensive workloads
CN106406985B (zh) * 2016-09-21 2019-10-11 北京百度网讯科技有限公司 分布式计算框架和分布式计算方法
US11063946B2 (en) * 2018-10-24 2021-07-13 Servicenow, Inc. Feedback framework
CN114296641B (zh) * 2021-12-14 2023-09-19 北京欧珀通信有限公司 增量文件传输方法、装置、电子设备及可读存储介质

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3489123B2 (ja) * 1992-04-15 2004-01-19 株式会社日立製作所 アプリケーション結合方法
US5634053A (en) * 1995-08-29 1997-05-27 Hughes Aircraft Company Federated information management (FIM) system and method for providing data site filtering and translation for heterogeneous databases
US6023694A (en) * 1996-01-02 2000-02-08 Timeline, Inc. Data retrieval method and apparatus with multiple source capability
US6625617B2 (en) * 1996-01-02 2003-09-23 Timeline, Inc. Modularized data retrieval method and apparatus with multiple source capability
JPH1196009A (ja) * 1997-09-22 1999-04-09 Toshiba Corp オブジェクトインターフェース変換方法及び記録媒体
US6366915B1 (en) * 1998-11-04 2002-04-02 Micron Technology, Inc. Method and system for efficiently retrieving information from multiple databases
WO2000055725A1 (fr) * 1999-03-17 2000-09-21 Fujitsu Limited Systeme serveur et support d'enregistrement
US6539374B2 (en) * 1999-06-03 2003-03-25 Microsoft Corporation Methods, apparatus and data structures for providing a uniform representation of various types of information
US7231433B1 (en) * 2000-01-19 2007-06-12 Reynolds And Reynolds Holdings, Inc. Enterlink for providing a federated business to business system that interconnects applications of multiple companies
US7702719B1 (en) * 2000-02-08 2010-04-20 International Business Machines Corporation Methods and apparatus for reducing the number of server interactions in network-based applications using a dual-MVC approach
WO2001067309A2 (en) * 2000-03-03 2001-09-13 Radiant Logic, Inc. System and method for providing access to databases via directories and other hierarchical structures and interfaces
US7207046B1 (en) * 2000-08-23 2007-04-17 Agilent Technologies, Inc. Method and system for providing string-over-socket scripting language access to distributed object model interfaces
US7127514B2 (en) 2000-12-28 2006-10-24 Microsoft Corporation Stateless distributed computer architecture with server-oriented state-caching objects maintained on network or client
US20030163479A1 (en) * 2001-05-14 2003-08-28 Mathews Michael B. Method and apparatus for implementing a data management system using a metadata specification
EP1298525A1 (en) 2001-09-26 2003-04-02 Sap Ag Interaction between computers with different object-oriented run-time environments
US7113964B1 (en) * 2003-06-05 2006-09-26 Iteration Software, Inc. Method and apparatus for archiving data in a relational database system
US7739223B2 (en) * 2003-08-29 2010-06-15 Microsoft Corporation Mapping architecture for arbitrary data models
DE10351351B4 (de) * 2003-11-04 2007-03-22 Siemens Ag Verfahren und System zur dynamischen Generierung von User Interfaces

Also Published As

Publication number Publication date
US20060230026A1 (en) 2006-10-12
MX2007011027A (es) 2007-09-26
US7418715B2 (en) 2008-08-26
MY144258A (en) 2011-08-29
TWI388992B (zh) 2013-03-11
KR101219997B1 (ko) 2013-01-08
TW200639652A (en) 2006-11-16
CN101548256B (zh) 2012-09-05
KR20070118076A (ko) 2007-12-13
RU2419864C2 (ru) 2011-05-27
WO2006110237A2 (en) 2006-10-19
RU2007137005A (ru) 2009-04-10
EP1872281A2 (en) 2008-01-02
JP2008538428A (ja) 2008-10-23
CN101548256A (zh) 2009-09-30
EP1872281A4 (en) 2011-06-15
WO2006110237A3 (en) 2009-04-23

Similar Documents

Publication Publication Date Title
BRPI0608817A2 (pt) sistema e método para a produção e comunicação de dados solicitados entre programas de aplicação de rede
KR101366386B1 (ko) 구조화된 웹 사이트 컨텐츠의 동기화를 위한 장치, 방법, 및 기계 판독가능 저장 매체를 포함하는 물품
US7827565B2 (en) Integration architecture for non-integrated tools
US8452925B2 (en) System, method and computer program product for automatically updating content in a cache
JP5172714B2 (ja) Rssデータ処理オブジェクト
US20070244904A1 (en) Method and Architecture for Goal Oriented Applications, Configurations and Workflow Solutions on-the-Fly
US20050234929A1 (en) Methods and systems for interfacing applications with a search engine
US20150186193A1 (en) Generation of client-side application programming interfaces
CA2750479A1 (en) Communicating with data storage systems
EP3549036A1 (en) Generating, accessing, and displaying lineage metadata
WO2011127863A2 (zh) 开放应用程序编程接口调用方法及设备
US20220156240A1 (en) Hierarchical script database and database applications
CN107609086A (zh) 一种app推送方法及其引擎系统
Nikolov et al. Repository platform for RESTful web services
Robinson Context management in mobile environments
Gutierrez et al. Sending Emails from Within Spring
Maskov Rest client for Android
Vijayakumar A Framework for the RESTful Provisioning of Community-Contributed Web Services
Mossige Developing data catalogue extensions for metadata harvesting in GIS
CN115361431A (zh) 一种基于显隐参数注册的远程服务接口调用方法
Waschke et al. The Contenders: Enterprise Integration Architectural Patterns
Shumko et al. Object-oriented communications for the New Solar Telescope's telescope control system: design and implementation
Jiang Capturing event metadata in the sky: a Java-based application for receiving astronomical internet feeds: a thesis presented in partial fulfilment of the requirements for the degree of Master of Computer Science in Computer Science at Massey University, Auckland, New Zealand
Garcia Kangoo API for Web-based Applications

Legal Events

Date Code Title Description
B08F Application fees: application dismissed [chapter 8.6 patent gazette]

Free format text: REFERENTE A 6A ANUIDADE.

B08H Application fees: decision cancelled [chapter 8.8 patent gazette]

Free format text: REFERENTE AO DESPACHO 8.6 NA RPI 2260 DE 29/04/2014.

B08F Application fees: application dismissed [chapter 8.6 patent gazette]
B08K Patent lapsed as no evidence of payment of the annual fee has been furnished to inpi [chapter 8.11 patent gazette]