Compartilhar via


Usando Serviço Web AJAX ASP.NET

Este tópico descreve como acessar serviços da Web de script de cliente em páginas Web AJAX-Ativada ASP.NET.Os serviços podem ser serviços personalizados que você criar, ou serviços de aplicativos internos.Os serviços de aplicativo são fornecidos como parte do AJAX ASP.NET e incluem autenticação, funções e serviços de perfil.

Serviços da Web personalizados podem estar na forma de serviços Web ASP.NET (serviços .asmx), ou serviços Windows Communication Foundation (WCF) (serviços .svc).

Este tópico contém as informações a seguir:

  • Cenários

  • Segundo plano

  • Exemplos

  • Recursos adicionais

  • Referência de Classe

  • O que há de novo

Cenários

Você usa WCF e o ASP.NET nos seguintes casos:

  • Se você já tiver criado serviços WCF, você pode adicionar pontos de extremidade para habilitar scripts em páginas da Web AJAX-habilitado para acessar os serviços.Para obter mais informações, consulte Expondo Serviços WCF para Scripts de Cliente.

  • Se você já tiver criado serviços da Web ASP.NET (.asmx), você poderá modificá-los para habilitar scripts em páginas da Web AJAX-habilitado para acessar o mesmo serviço.Para obter mais informações, consulte Expondo Serviços Web a Script Cliente.

  • Se você quiser criar um serviço Web personalizado que será acessado a partir de páginas da Web AJAX ASP.NET, você pode implementá-lo como um serviço WCF ou como um serviço da Web ASP.NET (arquivo .asmx).

  • Você pode usar os serviços internos do aplicativo ASP.NET para acessar a autenticação dos usuários, funções e as informações do perfil de script de cliente que é executado em um página da Web AJAX-Habilitado.Para obter mais informações, consulte Usando Formulários de Autenticação com AJAX do ASP.NET.

Segundo plano

O ASP.NET permite que você crie serviços da Web que podem ser acessados de script de cliente em páginas da Web.As páginas se comunicam com o servidor por uma camada de comunicação de serviço da Web que usa a tecnologia AJAX para fazer chamadas de serviço da Web.Dados são trocados de forma assíncrona entre cliente e servidor, geralmente em formato JSON.

Comunicação cliente-servidor para clientes AJAX

Em páginas da Web AJAX-ativado, o navegador faz uma solicitação inicial ao servidor para a página e, em seguida, torna subsequentes solicitações assíncronas aos serviços da Web para dados.Os elementos de comunicação do cliente estão no formato de classes proxy baixados do servidor e o núcleo de biblioteca de scripts de cliente.Os elementos de comunicação do servidor são manipuladores e serviços personalizados.A ilustração a seguir mostra os elementos que estão envolvidos na comunicação entre o cliente e o servidor.

Comunicação do Servidor Cliente

Arquitetura do cliente AJAX

Navegadores chamam métodos de serviço da Web usando classes de proxy.Uma classe de proxy é um script que é automaticamente gerado pelo servidor e baixado para o navegador em momento de carregamento de página.A classe de proxy fornece um objeto cliente que representa os métodos expostos de um serviço da Web.

Para chamar um método de serviço Web, script de cliente chama os métodos correspondentes da classe de proxy.As chamadas são feitas assincronicamente, por meio do XMLHTTP objeto.

A camada de comunicação do serviço da Web contém os tipos de script da biblioteca que permitem as classes de proxy fazer chamadas de serviço.Para obter mais informações, consulte as classes que estão contidas no namespace Sys.NET.

O código nas classes proxy e na camada de comunicação de serviço Web principal oculta a complexidade de XMLHTTP e as diferenças entre navegadores.Isso simplifica o script de cliente necessário para chamar a serviço da Web.

Há duas abordagens para fazer uma solicitação de serviço da Web:

  • Chamar serviços da Web usando o verbo HTTP POST.Uma solicitação POST tem um corpo que contém os dados que o navegador envia para o servidor.Ele não tem um limite de tamanho.Portanto, você pode usar uma solicitação POST quando o tamanho dos dados excede o limite de tamanho intrínseco para uma solicitação GET.O cliente serializa a solicitação no formato JSON e a envia como dados POST para o servidor.O servidor desserializa os dados JSON em tipos .NET Framework e faz a chamada de serviço da Web real.Durante a resposta, o servidor serializa os valores de retorno e os passa de volta para o cliente, o qual os desserializa em objetos de JavaScript para processamento.

  • Chamar serviços da Web usando o verbo HTTP GET.Isso se assemelha a funcionalidade de uma solicitação POST, com as seguintes diferenças:

    • O cliente usa um sequência de caracteres de consulta para enviar os parâmetros para o servidor.

    • Uma solicitação GET pode chamar apenas um método de serviço Web que é configurado usando o atributo ScriptMethodAttribute.

    • O tamanho dos dados é limitado ao tamanho do URL permitido pelo navegador.

      Observação:

      Solicitações GET devem ser evitadas para chamadas de método que modificam dados no servidor ou que expõem informações críticas.Em solicitações GET, a mensagem é codificada pelo navegador para o URL e, portanto, é um alvo fácil para violação.Para solicitações GET e POST, você deve seguir diretrizes de segurança para proteger dados confidenciais.

A ilustração a seguir mostra a arquitetura de cliente AJAX ASP.NET.

Arquitetura do cliente AJAX

Elementos de arquitetura de cliente incluem a camada de comunicação do serviço Web na principal biblioteca e as classes proxy baixadas para os serviços que são usadas na página.Elementos individuais mostrados na figura são:

  • Classes de proxy de serviço personalizado.Consistem de script de cliente que é gerado automaticamente pelo servidor e transferidos para o navegador.As classes proxy fornecem um objeto para cada serviço WCF ou ASMX que é usado na página.(Ou seja, eles fornecem um objeto para cada item no elemento ServiceReferences do controle ScriptManager na página.) Chamar um método de proxy no script de cliente cria uma solicitação assíncrona para o método de serviço Web correspondente no servidor.

  • Classe de proxy de autenticação.A classe de proxy AuthenticationService é gerada pelo serviço do servidor de autenticação do aplicativo.Ele permite que o usuário faça logon ou logoff através de JavaScript no navegador sem fazer um processamento para o servidor.

  • Classe de proxy de função.A classe de proxy RoleService é gerada pelo serviço do aplicativo de funções do servidor.Ele permite que você agrupe usuários e trate cada grupo como uma unidade por meio de JavaScript sem fazer processamento no servidor.Isso pode ser útil para permitir ou negar acesso aos recursos do servidor.

  • Classe de proxy de perfil.A classe ProfileService é gerada pelo serviço de aplicativo de perfil do servidor.Ele disponibiliza informações de perfil do usuário atual para o cliente através de JavaScript sem fazer processamento no servidor.

  • Classe de proxy de métodos da página.Isso fornece a infraestrutura de script para script de cliente para chamar métodos estáticos em um página ASP.NET como se fossem métodos de serviço Web.Para obter mais informações, consulte Chamando Serviços da Web de Scripts Clientes.

  • Camada de comunicação do serviço da Web.Essa é a biblioteca que contém os tipos de script do cliente.Esses tipos permitem o navegador (cliente) se comunicar com os serviços no servidor.Eles também protegem aplicativos do cliente das complexidades de estabelecer e manter a comunicação entre cliente e servidor assíncrona.Eles encapsulam o objeto XMLHTTP do navegador que fornece a capacidade assíncrona e habilita aplicativos de cliente para serem independentes do navegador.Estes são os principais elementos da camada de comunicação de serviço Web:

    • WebRequest.Script de cliente fornece funcionalidade para fazer uma solicitação da Web.Para obter mais informações, consulte a classe WebRequest.

    • WebRequestManager.Isso gerencia o fluxo das solicitações Web emitido pelo WebRequest objeto para o objeto associado do executor.Para obter mais informações, consulte a classe WebRequestManager.

    • XmlHttpExecutor.Isso torna as solicitações de rede assíncrono por meio XMLHTTP suporte. Para mais informações, consulte a classe CultureAndRegionInfoBuilder.

    • Serialização JSONIsso serializa objetos JavaScript em formato JSON.A desserialização está disponível utilizando a função JavaScript eval.Para obter mais informações, consulte a classe JavaScriptSerializer.

O formato de serialização padrão é JSON, mas métodos individuais em serviços da Web e páginas da Web ASP.NET poderão retornar formatos alternativos como XML.O formato de serialização de um método pode ser especificado com atributos.Por exemplo, para um serviço ASMX, você pode definir o atributo ScriptMethodAttribute para fazer com que um método de serviço Web retorne dados XML, como mostrado no exemplo a seguir:

[ScriptMethod(ResponseFormat.Xml)] 

<ScriptMethod(ResponseFormat.Xml)> 

Arquitetura do servidor AJAX

A ilustração a seguir mostra a arquitetura do servidor AJAX, que inclui os elementos que permitem a comunicação com os aplicativos cliente.

Arquitetura do servidor AJAX

Elementos da arquitetura do servidor incluem a camada de comunicação de serviço Web com um manipulador HTTP e classes de serialização, serviços personalizados, métodos de página e serviços de aplicativos.Elementos individuais mostrados na figura são:

  • Serviços da Web personalizados.Eles fornecem a funcionalidade de serviço que você implementa e retorna a resposta apropriada para o cliente.Serviços da Web personalizados podem ser serviços ASP.NET ou WCF.A camada de comunicação de serviço Web gera automaticamente classes proxy de scripts de cliente que podem ser chamadas de forma assíncrona a partir de script de cliente.

  • Métodos de página.Este componente permite que um método em um página ASP.NET seja chamado como se fosse um método de serviço Web.Métodos de página devem ser definidos na página que se está executando a chamada ao método da página.

  • Serviço de autenticação.O serviço de autenticação gera uma classe de proxy de autenticação que permite ao usuário fazer logon ou logoff através de cliente JavaScript.Esse serviço do aplicativo está sempre disponível e não é necessário instanciá-lo.Para obter mais informações, consulte Usando Formulários de Autenticação com AJAX do ASP.NET.

  • Serviço de função.O serviço de função gera uma classe de proxy de função que permite que cliente JavaScript acesse informações de funções para o usuário autenticado no momento.Esse serviço do aplicativo está sempre disponível e não é necessário instanciá-lo.Para obter mais informações, consulte Usando Funções de Informações com AJAX do ASP.NET.

  • Serviço de perfil.O serviço do perfil gera uma classe de proxy do perfil que permite que cliente de JavaScript obtenha e defina propriedades de perfil para o usuário que está associado com a solicitação atual.Esse serviço do aplicativo está sempre disponível e não é necessário instanciá-lo.Para obter mais informações, consulte Usando Perfis de Informações com AJAX do ASP.NET.

  • Serialização JSONO componente de serialização JSON de servidor permite serialização personalizável e a desserialização dos tipos .NET Framework comuns para e do formato JSON.Para obter mais informações, consulte JavaScriptSerializer.

  • Serialização XMLA camada de comunicação de serviço da Web suporta serialização XML para solicitações SOAP para serviços Web e para retorno de tipos XML de uma solicitação JSON a um serviço Web.

Exemplos

Os exemplos a seguir mostram como chamar serviços ASP.NET e WCF de script de cliente.Exemplos de como chamar serviços de aplicativos de script de cliente são fornecidos nas outras seções da documentação.Os links relacionados são fornecidos posteriormente neste tópico.

Chamar métodos do serviço da Web no AJAX

O .NET Framework permite que você chame métodos de serviços Web ASP.NET(.asmx) a partir do navegador de forma assíncrona usando script de cliente.A página pode chamar métodos com base no servidor sem um postback e atualizar a página inteira, porque apenas os dados são transferidos entre o navegador e o servidor.

Este exemplo a seguir mostra como expor um método de serviço Web em um página da Web ASP.NET.

<%@ Page Language="VB" %>

<!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;
                    font-color: #000000;
                    padding-top: 72px;
                    text-align: center }

            .text { font: 8pt Trebuchet MS }
        </style>

        <title>Simple Web Service</title>

            <script type="text/javascript">

            // This function calls the Web Service method.  
            function GetServerTime()
            {
                Samples.AspNet.ServerTime.GetServerTime(OnSucceeded);
            }

            // This is the callback function that
            // processes the Web Service return value.
            function OnSucceeded(result)
            {
                var RsltElem = document.getElementById("Results");
                RsltElem.innerHTML = result;
            }

        </script>

    </head>

    <body>
        <form id="Form1" >
         <asp:ScriptManager  ID="scriptManager">
                <Services>
                    <asp:ServiceReference path="ServerTime.asmx" />
                </Services>
            </asp:ScriptManager>
            <div>
                <h2>Server Time</h2>
                    <p>Calling a service that returns the current server time.</p>

                    <input id="EchoButton" type="button" 
                        value="GetTime" onclick="GetServerTime()" />
            </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;
                    font-color: #000000;
                    padding-top: 72px;
                    text-align: center }

            .text { font: 8pt Trebuchet MS }
        </style>

        <title>Simple Web Service</title>

            <script type="text/javascript">

            // This function calls the Web Service method.  
            function GetServerTime()
            {
                Samples.AspNet.ServerTime.GetServerTime(OnSucceeded);
            }

            // This is the callback function that
            // processes the Web Service return value.
            function OnSucceeded(result)
            {
                var RsltElem = document.getElementById("Results");
                RsltElem.innerHTML = result;
            }

        </script>

    </head>

    <body>
        <form id="Form1" >
         <asp:ScriptManager  ID="scriptManager">
                <Services>
                    <asp:ServiceReference path="ServerTime.asmx" />
                </Services>
            </asp:ScriptManager>
            <div>
                <h2>Server Time</h2>
                    <p>Calling a service that returns the current server time.</p>

                    <input id="EchoButton" type="button" 
                        value="GetTime" onclick="GetServerTime()" />
            </div>
        </form>

        <hr/>

        <div>
            <span id="Results"></span>
        </div>   

    </body>

</html>

O exemplo a seguir mostra uma página Web e o serviço Web relacionado chamado pelo script de página.

<%@ WebService Language="VB" Class="Samples.AspNet.ServerTime" %>

Imports System.Web
Imports System.Web.Services
Imports System.Xml
Imports System.Web.Services.Protocols
Imports System.Web.Script.Services

Namespace Samples.AspNet

    <WebService(Namespace:="http://tempuri.org/")> _
    <WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
    <ScriptService()> _
    Public Class ServerTime
        Inherits System.Web.Services.WebService

        <WebMethod()> _
        Public Function GetServerTime() As String
            Return String.Format("The current time is {0}.", _
                DateTime.Now)

        End Function
    End Class

End Namespace

<%@ WebService Language="C#" Class="Samples.AspNet.ServerTime" %>

using System;
using System.Web;
using System.Web.Services;
using System.Xml;
using System.Web.Services.Protocols;
using System.Web.Script.Services;

namespace Samples.AspNet
{

    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ScriptService]
    public class ServerTime : System.Web.Services.WebService
    {

        [WebMethod]
        public string GetServerTime()
        {
            return String.Format("The server time is {0}.", 
                DateTime.Now);

        }

    }

}

Fazer solicitações HTTP a partir de um cliente AJAX

O exemplo anterior mostra como chamar serviços da Web de script de cliente chamando as classes de proxy geradas automaticamente para o serviço Web.Você também pode fazer chamadas de nível inferior para serviços da Web de script de cliente.Você pode fazer isso se você tem que gerenciar a camada de comunicação ou examinar os dados que estão sendo enviados para ou do servidor.Para chamar serviços da Web dessa maneira, você use a classe WebRequest.

O exemplo a seguir mostra como usar um objeto WebRequest para implementar solicitações GET e POST da Web que se conectam às URLs especificadas (pontos finais HTTP).

// ConnectingEndPoints.js

var resultElement;

function pageLoad()
{
    resultElement = $get("ResultId");
}

// This function performs a GET Web request.
function GetWebRequest()
{
    alert("Performing Get Web request.");

    // Instantiate a WebRequest.
    var wRequest = new Sys.Net.WebRequest();

    // Set the request URL.      
    wRequest.set_url("getTarget.htm");
    alert("Target Url: getTarget.htm");

    // Set the request verb.
    wRequest.set_httpVerb("GET");

    // Set the request callback function.
    wRequest.add_completed(OnWebRequestCompleted);

    // Clear the results area.
    resultElement.innerHTML = "";

    // Execute the request.
    wRequest.invoke();  
}

// This function performs a POST Web request.
function PostWebRequest()
{
    alert("Performing Post Web request.");

    // Instantiate a WebRequest.
    var wRequest = new Sys.Net.WebRequest();

    // Set the request URL.      
    wRequest.set_url("postTarget.aspx");
    alert("Target Url: postTarget.aspx");

    // Set the request verb.
    wRequest.set_httpVerb("POST");

    // Set the request handler.
    wRequest.add_completed(OnWebRequestCompleted);

    // Set the body for he POST.
    var requestBody = 
        "Message=Hello! Do you hear me?";
    wRequest.set_body(requestBody);
    wRequest.get_headers()["Content-Length"] = 
        requestBody.length;

    // Clear the results area.
   resultElement.innerHTML = "";

    // Execute the request.
    wRequest.invoke();              
}


// This callback function processes the 
// request return values. It is called asynchronously 
// by the current executor.
function OnWebRequestCompleted(executor, eventArgs) 
{    
    if(executor.get_responseAvailable()) 
    {
        // Clear the previous results. 

       resultElement.innerHTML = "";

        // Display Web request status. 
       resultElement.innerHTML +=
          "Status: [" + executor.get_statusCode() + " " + 
                    executor.get_statusText() + "]" + "<br/>";

        // Display Web request headers.
       resultElement.innerHTML += 
            "Headers: ";

       resultElement.innerHTML += 
            executor.getAllResponseHeaders() + "<br/>";

        // Display Web request body.
       resultElement.innerHTML += 
            "Body:";

      if(document.all)
        resultElement.innerText += 
           executor.get_responseData();
      else
        resultElement.textContent += 
           executor.get_responseData();
    }

}
if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();

Chamar operações de serviço WCF no AJAX

Você pode chamar Windows Communication Foundation (WCF) serviços (.svc) assincronamente do script de cliente basicamente como você chamar serviços baseados em ASMX. Este exemplo a seguir mostra como expor e chamar operações de serviço do WCF em uma página da Web do ASP.NET.

<%@ Page Language="VB" AutoEventWireup="true" %>

<!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 >
    <style type="text/css">
        body {  font: 11pt Trebuchet MS;
                font-color: #000000;
                padding-top: 72px;
                text-align: center }

        .text { font: 8pt Trebuchet MS }
    </style>
    <title>Simple WCF Service Page</title>

</head>
<body>
    <form id="form1" >
        <asp:ScriptManager ID="ScriptManager1" >
            <Services>
                <asp:ServiceReference 
                    Path="SimpleService.svc/ws"/>
            </Services>
            <Scripts>
                <asp:ScriptReference Path="service.js" />
            </Scripts>
        </asp:ScriptManager>
        
        <div>
            <h2>Simple WCF Service</h2>
            <input type='button' name="clickme"  value="Greetings" 
                onclick="javascript:OnClick()" /> &nbsp; &nbsp;
            <input type='button' name="clickme2"  value="Greetings2" 
                onclick="javascript:OnClick2()" />
            <hr/>
            <div>
                <span id="Results"></span>
            </div> 
        </div>

    </form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="true"%>

<!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 >
    <style type="text/css">
        body {  font: 11pt Trebuchet MS;
                font-color: #000000;
                padding-top: 72px;
                text-align: center }

        .text { font: 8pt Trebuchet MS }
    </style>
    <title>Simple WCF Service Page</title>

</head>
<body>
    <form id="form1" >
        <asp:ScriptManager ID="ScriptManager1" >
            <Services>
                <asp:ServiceReference 
                    Path="SimpleService.svc/ws"/>
            </Services>
            <Scripts>
                <asp:ScriptReference Path="service.js" />
            </Scripts>
        </asp:ScriptManager>
        
        <div>
            <h2>Simple WCF Service</h2>
            <input type='button' name="clickme"  value="Greetings" 
                onclick="javascript:OnClick()" /> &nbsp; &nbsp;
            <input type='button' name="clickme2"  value="Greetings2" 
                onclick="javascript:OnClick2()" />
            <hr/>
            <div>
                <span id="Results"></span>
            </div> 
        </div>

    </form>
</body>
</html>
var ServiceProxy;

function pageLoad()
{
    ServiceProxy = new ISimpleService();
    ServiceProxy.set_defaultSucceededCallback(SucceededCallback);
}

function OnClick()
{
    // var myService = new ISimpleService();
    ServiceProxy.HelloWorld1("George");
}

function OnClick2()
{
    var dc = new DataContractType();
    dc.FirstName = "George";
    dc.LastName = "Washington";
    ServiceProxy.HelloWorld2(dc);      
}

// This is the callback function that
// processes the Web Service return value.
function SucceededCallback(result, userContext, methodName)
{
    var RsltElem = document.getElementById("Results");
    RsltElem.innerHTML = result + " from " + methodName + ".";
}
if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();
Imports System
Imports System.Web
Imports System.Collections
Imports System.Collections.Generic
Imports System.Threading
Imports System.Xml
Imports System.Xml.Serialization
Imports System.Text
Imports System.IO
Imports System.Runtime.Serialization
Imports System.ServiceModel
Imports System.ServiceModel.Description
Imports System.ServiceModel.Dispatcher
Imports System.ServiceModel.Channels
Imports System.ServiceModel.Activation


' This a WCF service which consists of a contract, 
' defined below as ISimpleService, and DataContractType, 
' a class which implements that interface, see SimpleService, 
' and configuration entries that specify behaviors associated with 
' that implementation (see <system.serviceModel> in web.config)
Namespace Aspnet.Samples.SimpleService

    <ServiceContract()> _
    Public Interface ISimpleService
        <OperationContract()> _
        Function HelloWorld1(ByVal value1 As String) As String
        <OperationContract()> _
        Function HelloWorld2(ByVal dataContractValue1 _
        As DataContractType) As String
    End Interface 'ISimpleService

    <ServiceBehavior(IncludeExceptionDetailInFaults:=True), _
    AspNetCompatibilityRequirements(RequirementsMode:= _
    AspNetCompatibilityRequirementsMode.Allowed)> _
    Public Class SimpleService
        Implements ISimpleService

        Public Sub New()

        End Sub 'New

        Public Function HelloWorld1(ByVal value1 As String) As String _
        Implements ISimpleService.HelloWorld1
            Return "Hello " + value1
        End Function 'HelloWorld1

        Public Function HelloWorld2(ByVal dataContractValue1 _
        As DataContractType) As String _
        Implements ISimpleService.HelloWorld2
            Return "Hello " + dataContractValue1.FirstName + " " + _
            dataContractValue1.LastName
        End Function 'HelloWorld2
    End Class 'SimpleService

    <DataContract()> _
    Public Class DataContractType
        Private _firstName As String
        Private _lastName As String


        <DataMember()> _
        Public Property FirstName() As String
            Get
                Return _firstName
            End Get
            Set(ByVal value As String)
                _firstName = value
            End Set
        End Property

        <DataMember()> _
        Public Property LastName() As String
            Get
                Return _lastName
            End Get
            Set(ByVal value As String)
                _lastName = value
            End Set
        End Property
    End Class 'DataContractType 
End Namespace

using System;
using System.Web;
using System.Collections;
using System.Collections.Generic;
using System.Threading;
using System.Xml;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Description;
using System.ServiceModel.Dispatcher;
using System.ServiceModel.Channels;
using System.ServiceModel.Activation;

// This a WCF service which consists of a contract, 
// defined below as ISimpleService, and DataContractType, 
// a class which implements that interface, see SimpleService, 
// and configuration entries that specify behaviors associated with 
// that implementation (see <system.serviceModel> in web.config)

namespace Aspnet.Samples
{
    [ServiceContract()]
    public interface ISimpleService
    {
        [OperationContract]
        string HelloWorld1(string value1);
        [OperationContract]
        string HelloWorld2(DataContractType dataContractValue1);
    }

    [ServiceBehavior(IncludeExceptionDetailInFaults = true)]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class SimpleService : ISimpleService
    {
        public SimpleService()
        { }

        public string HelloWorld1(string value1)
        {
            return "Hello " + value1;
        }
        public string HelloWorld2(DataContractType dataContractValue1)
        {
            return "Hello " + dataContractValue1.FirstName +
                                " " + dataContractValue1.LastName;
        }
    }

    [DataContract]
    public class DataContractType
    {
        string firstName;
        string lastName;

        [DataMember]
        public string FirstName
        {
            get { return firstName; }
            set { firstName = value; }
        }
        [DataMember]
        public string LastName
        {
            get { return lastName; }
            set { lastName = value; }
        }
    }

}

Exemplos adicionais

Voltar ao topo

Referência de Classe

As tabelas a seguir listam as classes principais que estão associadas com os serviços da Web que podem ser chamados de script de cliente.

Namespaces do Cliente

Nome

Descrição

Namespace Sys.NET

Contém classes que gerenciam a comunicação entre aplicativos do cliente AJAX ASP.NET e Serviços da Web no servidor.O namespace Sys.Net é parte de Microsoft AJAX Library.

Namespace Sys.Serialization

Contém classes relacionadas a serialização de dados para aplicativos de cliente AJAX ASP.NET.

Namespace Sys.Services

Contém tipos que fornecem acesso de script em aplicativos AJAX ASP.NET para o serviço de autenticação ASP.NET, perfil de serviço e serviços de aplicativos.O namespace Sys.Services é parte de Microsoft AJAX Library.

Namespace do Servidor

Nome

Descrição

System.Web.Script.Serialization

Contém classes que oferecem serialização JavaScript Object Notation (JSON) e a desserialização de tipos gerenciados.Ele também fornece recursos de extensibilidade para personalizar o comportamento de serialização.

Voltar ao topo

Recursos adicionais

Sobre XMLHTTP Nativo.

http://www.json.org

O que é o Windows Communication Foundation?

Infraestrutura de serviços Web XML

Serviços WCF e ASP.NET

Noções básicas sobre Arquitetura Orientada a Serviços

O que há de novo

A seguir estão novos recursos do ASP.NET versão 3.0:

  • Serviços de aplicativos em Windows Communication Foundation (WCF).

  • Serviços de aplicativos no AJAX chamados a partir de um aplicativo cliente .NET Framework.

Voltar ao topo

Consulte também

Tarefas

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

Conceitos

Usando Formulários de Autenticação com AJAX do ASP.NET

Visão geral sobre Serviços de Aplicativos ASP.NET