Pergunta

Eu gostaria de começar mudando o nosso aplicativo de negócios camadas em um conjunto de serviços web REST.No entanto, a maioria da nossa Intranet foi construído utilizando o ASP Clássico e a maioria dos desenvolvedores, onde eu trabalho manter a programação em ASP Clássico.O ideal, portanto, para beneficiar de todas as vantagens de um único conjunto de APIs da web, ele teria que ser chamado a partir de páginas ASP Clássico.

Eu não tenho a menor idéia de como fazer isso.

Foi útil?

Solução

Você pode usar uma combinação de JQuery com JSON chamadas para consumir o RESTO serviços do cliente

ou

se você precisa de interagir com o RESTO serviços de ASP camada, você pode usar

MSXML2.ServerXMLHTTP

como:

Set HttpReq = Server.CreateObject("MSXML2.ServerXMLHTTP")
HttpReq.open "GET", "Rest_URI", False
HttpReq.send

Outras dicas

@PQ

Você deve realmente usar MSXML2.ServerXMLHTTP a partir de ASP/aplicações do lado do servidor. XMLHTTP só deve ser usado do lado do cliente, porque ele usa WinInet que não é suportado para uso em servidor/serviço de apps.

Ver http://support.microsoft.com/kb/290761, perguntas 3, 4 e 5 e

http://support.microsoft.com/kb/238425/.

Isto é muito importante, caso contrário, você vai enfrentar o seu aplicativo web de suspensão e todos os tipos de estranho absurdo acontecendo.

Aqui estão alguns artigos que descrevem como chamar um serviço da web a partir de uma página ASP de classe:

Um número de respostas aqui apresentadas parecem cobrir como ClassicASP pode ser usado para consumir serviços da web e do RESTO chamadas.

Na minha opinião, uma solução mais arrumado, pode ser para o seu ClassicASP apenas para servir de dados no RESTO formatos.Deixe o seu browser cliente baseado no código de lidar com o 'mashup' se possível.Você deve ser capaz de fazer isso sem a incorporação de quaisquer outros componentes ASP.

Então, aqui está como eu gostaria de maquete nova e brilhante RESTO de suporte em ClassicASP:

  1. fornecer uma única página da web ASP que atua como uma almofada de aterragem
  2. A almofada de aterragem vai lidar com dois parâmetros:verbo e URL, além de um conjunto de conteúdos
  3. Usar algum tipo de bloqueio de opção inspecionar o URL e direcionar o verbo (e o conteúdo do formulário) para um processador relevante
  4. O processador será, em seguida, processar o verbo (PUT/POST/GET/DELETE), juntamente com o conteúdo do formulário, retornando um sucesso/falha de código e mais dados, conforme apropriado.
  5. A sua almofada de aterragem irá inspecionar o sucesso/falha no código e devolver o respectivo estado de HTTP mais quaisquer dados retornados

Você poderia se beneficiar de uma classe de suporte que decodifica/codifica os dados do formulário de/para JSON, uma vez que irá facilitar o seu implementação do lado do cliente (e potencialmente agilizar o volume de dados transmitidos).Veja a conversa aqui no Qualquer bom bibliotecas para análise de JSON em ASP Clássico?

Por fim, no lado do cliente, fornecer um método que usa um Verbo, Url e carga de dados.No curto prazo, o método irá agrupar os parâmetros e encaminhá-los para a sua almofada de aterragem.A longo prazo (uma vez que você mudar de longe o ASP Clássico) o método pode enviar os dados para o 'real' url.

Boa sorte...

Outra possível solução é escrever um .A DLL de rede que faz com que as chamadas e retorna os resultados (talvez moldar algo como RESTSharp - dê a ele uma API simples, personalizado para as suas necessidades).Em seguida, você pode registrar a DLL como uma DLL de COM e usá-lo em seu código ASP através do método CreateObject.

Eu fiz isso para coisas como a criação de assinado JWTs e a salga e o hash de senhas.Ele funciona muito bem (enquanto você trabalha como um louco para reescrever a ASP).

Tudo o que você precisa é de um cliente HTTP.Em .Net, WebRequest funciona bem.Para o ASP clássico, você vai precisar de um componente específico, como este.

Outra possibilidade é usar o WinHttp objeto COM Usando o Objeto COM WinHttpRequest.

O WinHttp foi projetado para ser utilizado a partir de código de servidor.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top