Demonstra Passo a passo: Criando e usando serviço Web habilitado para AJAX

Visual Studio 2008 e Microsoft Visual Web Developer Express Edition permitem que você crie serviços Web ASP.NET personalizados (arquivos .asmx) que você possa acessar de um script de cliente.Nesse passo a passo, você poderá criar um serviço Web com AJAX habilitado e chamar seus métodos utilizando um script de cliente.

Quando você cria serviços Web ASP.NET e os expõe ao script de cliente, ASP.NET automaticamente cria classes proxy JavaScript para os serviços Web.Você pode chamar um método de serviço Web chamando o método correspondente da classe de proxy JavaScript.

Essa explicação passo a passo mostra:

  • Como criar um serviço Web com AJAX habilitado em Visual Studio 2008 ou Microsoft Visual Web Developer Express Edition.

Pré-requisitos

Para concluir esta explicação passo a passo, você precisa:

  • Visual Studio 2008 ou Microsoft Visual Web Developer Express Edition.

  • Microsoft Internet Information Services (IIS) instalado localmente em seu computador.

Criando um serviço Web com AJAX habilitado

Essa seção exibe como criar um serviço Web com AJAX habilitado.

Observação:

Você deve usar um site do IIS para esta explicação passo a passo.

Criando um serviço Web com AJAX habilitado

  1. Abra Visual Studio 2008, ou Microsoft Visual Web Developer Express Edition.

  2. Sobre o Arquivo menu, clicar Novo site.

    The Novo site caixa de diálogo é exibida.

  3. Em O Visual Studio installed templates, clicar Site da Web do ASP.NET.

  4. Clique em Browse.

  5. Clique em Local IIS.

  6. Clique em Default Web Site.

  7. No canto superior direito, clique no ícone Criar Nova Aplicação Web.

    Visual Studio cria uma nova aplicação Web IIS.

  8. Especifique o nome HelloWorldService.

    Observação:

    O nome do Web site que você está criando não é importante.

  9. Clique em Open.

    A caixa de diálogo Novo Web Site aparece com o nome do novo site no canto mais à direita da lista Localização.A localidade inclui o protocolo (http://) e a localidade (localhost).Isso Indica que você está trabalhando com um site local do IIS.

  10. Na lista Language, selecione a linguagem de programação que você preferir trabalhar.

  11. Clique em OK.

Gravando o Serviço de Personalização Web

Essa seção descreve como gravar um serviço Web com AJAX habilitado que provê um método que retorna a string "Hello World" e o tempo do servidor atual.

Gravando o Serviço de Personalização Web

  1. No Solution Explorer, clique com o botão direito no nome do site (https://localhost/HelloWorldService), e clique em Adicionar Novo Item.

  2. Em Modelos Visual Studio instalados, clique em Serviço Web, e na caixa Nome, digite HelloWorld.asmx.

  3. Certifique-se de que a caixa de seleção Place code in separate file está selecionada e clique em Add.

    Visual Studio 2008 cria um novo serviço Web que consiste de dois arquivos.O arquivo HelloWorld.asmx é o arquivo que pode ser invocado para chamar os métodos do serviço Web.Aponta para o código do serviço Web.O código em si é um arquivo classe (HelloWorld.vb ou HelloWorld.cs, dependendo da linguagem de programação) na pasta App_Code.O arquivo de código contém um modelo para um serviço da Web.

  4. Excluir o código existente na classe e substitui-lo com o código a seguir:

    Imports System
    Imports System.Web
    Imports System.Collections
    Imports System.Web.Services
    Imports System.Web.Services.Protocols
    
    Namespace Samples.Aspnet
        <WebService([Namespace]:="http://mycompany.org/"), _
        WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1), _
        System.Web.Script.Services.ScriptService()> _
        Public Class HelloWorld
            Inherits System.Web.Services.WebService
    
            Public Sub New()
    
            End Sub 'New
    
    
            'Uncomment the following line if using designed components 
            'InitializeComponent(); 
    
            <WebMethod()> _
            Public Function Greetings() As String
                Dim serverTime As String = _
                    String.Format("Current date and time: {0}.", DateTime.Now)
                Dim greet As String = "Hello World. <br/>" + serverTime
                Return greet
    
            End Function 'Greetings
        End Class 'HelloWorld
    
    End Namespace
    
    using System;
    using System.Web;
    using System.Collections;
    using System.Web.Services;
    using System.Web.Services.Protocols;
    
    namespace Samples.Aspnet
    {
        [WebService(Namespace="http://mycompany.org")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        // The following attribute allows the service to 
        // be called from script using ASP.NET AJAX.
        [System.Web.Script.Services.ScriptService]
        public class HelloWorld : System.Web.Services.WebService
        {
    
            public HelloWorld()
            {
    
                //Uncomment the following line if using designed components 
                //InitializeComponent(); 
            }
    
            [WebMethod]
            public string Greetings()
            {
                string serverTime =
                    String.Format("Current date and time: {0}.", DateTime.Now);
                string greetings = "Hello World! <br/>" + serverTime;
                return greetings;
            }
    
        }
    }
    

    Observe que os nomes das funções são precedidos com os atributos WebMethodAttribute como parte de uma declaração da função.Além disso, a HelloWorld classe é qualificado com o ScriptServiceAttribute atributo.

    Esses atributos habilitam o serviço Web para ser chamado do script em páginas Web ASP.NET com AJAX habilitado.

  5. Salve o arquivo e feche-o.

  6. Abra o arquivo HelloWorld.asmx e adicione a seguinte diretiva:

    <%@ WebService Language="VB" CodeBehind="~/App_Code/HelloWorld.vb" Class="Samples.Aspnet.HelloWorld" %>
    
    <%@ WebService Language="C#" CodeBehind="~/App_Code/HelloWorld.cs" Class="Samples.Aspnet.HelloWorld" %>
    
  7. Salve o arquivo e feche-o.

Agora você pode testar o serviço da Web no seu navegador.Esse teste não utiliza script para chamar os métodos do serviço Web.Isso é apenas para verificar que o serviço Web está funcionando corretamente.

Para testar o serviço da Web

  1. Abra o navegador e digite a seguinte URL: https://localhost/HelloWorldService/HelloWorld.asmx

    O serviço da Web é chamado e aparece uma página no navegador que mostra os métodos que são expostos pelo serviço da Web.

  2. Clique Saudações.A página aparece com o botão Invocar.

  3. Clique no botão Invocar para chamar o método e ver o valor retornado no formato XML.

  4. Feche o navegador.

Você terminou de criar um serviço Web com AJAX habilitado.

Usando o serviço da Web

O próximo passo é chamar o serviço Web de um script de cliente.

Para chamar serviço Web a partir de script de cliente

  1. No Solution Explorer, clique com o botão direito no nome do site (https://localhost/HelloWorldService), e clique em Adicionar Novo Item.

  2. Em Modelos Visual Studio instalados, clique em Arquivo JScript, e na caixa Nome, digite HelloWorld.js.

  3. Clique em OK.

  4. Adicione o seguinte código ao arquivo script:

    var helloWorldProxy;
    
    // Initializes global and proxy default variables.
    function pageLoad()
    {
        // Instantiate the service proxy.
        helloWorldProxy = new Samples.Aspnet.HelloWorld();
    
        // Set the default call back functions.
        helloWorldProxy.set_defaultSucceededCallback(SucceededCallback);
        helloWorldProxy.set_defaultFailedCallback(FailedCallback);
    }
    
    
    // Processes the button click and calls
    // the service Greetings method.  
    function OnClickGreetings()
    {
        var greetings = helloWorldProxy.Greetings();
    }
    
    // Callback function that
    // processes the service return value.
    function SucceededCallback(result)
    {
        var RsltElem = document.getElementById("Results");
        RsltElem.innerHTML = result;
    }
    
    // Callback function invoked when a call to 
    // the  service methods fails.
    function FailedCallback(error, userContext, methodName) 
    {
        if(error !== null) 
        {
            var RsltElem = document.getElementById("Results");
    
            RsltElem.innerHTML = "An error occurred: " + 
                error.get_message();
        }
    }
    
    if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();
    

    Esse script de cliente usará a página Default.aspx para chamar os métodos do serviço HelloWorld.

  5. Em Visual Studio 2008, abra a página Default.aspx.

  6. Exclua a marcação existente na página e substitua com o seguinte código:

    <%@ Page Language="VB" AutoEventWireup="false" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    
        <head id="Head1" >
            <style type="text/css">
                body {  font: 11pt Trebuchet MS;
                        color: #000000;
                        padding-top: 72px;
                        text-align: center }
    
                .text { font: 8pt Trebuchet MS }
            </style>
    
            <title>Using AJAX Enabled ASP.NET Service</title>
    
        </head>
    
        <body>
            <form id="Form1" >
                <asp:ScriptManager  ID="scriptManager">
                    <Services>
                        <asp:ServiceReference path="~/HelloWorld.asmx" />
                    </Services>
                    <Scripts>
                        <asp:ScriptReference Path="~/HelloWorld.js" />
                    </Scripts>
                </asp:ScriptManager>
                <div>
                    <h3>Using AJAX Enabled ASP.NET Service</h3>
    
                    <table>
                        <tr align="left">
                            <td>Click to call the Hello World service:</td>
                            <td>
                                <button id="Button1" 
                                    onclick="OnClickGreetings(); return false;">Greetings</button>
                            </td>
                        </tr>
                    </table>
                </div>
            </form>
    
            <hr/>
    
            <div>
                <span id="Results"></span>
            </div>   
    
        </body>
    
    </html>
    
    <%@ Page Language="C#" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    
        <head id="Head1" >
            <style type="text/css">
                body {  font: 11pt Trebuchet MS;
                        color: #000000;
                        padding-top: 72px;
                        text-align: center }
    
                .text { font: 8pt Trebuchet MS }
            </style>
    
            <title>Using AJAX Enabled ASP.NET Service</title>
    
        </head>
    
        <body>
            <form id="Form1" >
                <asp:ScriptManager  ID="scriptManager">
                    <Services>
                        <asp:ServiceReference path="~/HelloWorld.asmx" />
                    </Services>
                    <Scripts>
                        <asp:ScriptReference Path="~/HelloWorld.js" />
                    </Scripts>
                </asp:ScriptManager>
                <div>
                    <h3>Using AJAX Enabled ASP.NET Service</h3>
    
                    <table>
                        <tr align="left">
                            <td>Click to call the Hello World service:</td>
                            <td>
                                <button id="Button1" 
                                    onclick="OnClickGreetings(); return false;">Greetings</button>
                            </td>
                        </tr>
                    </table>
                </div>
            </form>
    
            <hr/>
    
            <div>
                <span id="Results"></span>
            </div>   
    
        </body>
    
    </html>
    

    A página contém um controle ScriptManager.O atributo path no elemento ServiceReference da seção Services referencia o serviço HelloWorld que você construiu anteriormente.O atributo path no elemento ServiceReference da seção Script referencia o script HelloWorld.js.

  7. Abra o navegador e digite a seguinte URL:

    http://<localhost>/HelloWorldService/Default.aspx

  8. Na página exibida, clique no botão Saudações.

    Isso gera uma chamada ao serviço Web que retorna uma mensagem de saudação e a data e hora do servidor atual.

Próximas etapas

Esse passo a passo ilustra os princípios básicos da criação de um serviço Web e a chamada da página Web de um script de cliente.Você pode desejar testar com adicionais, e mais complexos recursos de serviços Web.Sugestões para exploração adicional incluem o seguinte:

Consulte também

Conceitos

Expondo Serviços Web a Script Cliente

Chamando Serviços da Web de Scripts Clientes

Usando Serviço Web AJAX ASP.NET