Condividi tramite


EndpointAddress Classe

Definizione

Fornisce un indirizzo di rete univoco che un client utilizza per comunicare con un endpoint del servizio.

public ref class EndpointAddress
public class EndpointAddress
type EndpointAddress = class
Public Class EndpointAddress
Ereditarietà
EndpointAddress

Esempio

using System;
using System.Configuration;
using System.Collections.Generic;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Description;

using System.Text;

namespace Microsoft.WCF.Documentation
{
  class HostApplication
  {

    static void Main()
    {
      HostApplication app = new HostApplication();
      app.Run();
    }

    private void Run()
    {

            // Get base address from app settings in configuration
            Uri baseAddress = new Uri(ConfigurationManager.AppSettings["baseAddress"]);

            //Create new address headers for special services and add them to an array
            AddressHeader addressHeader1 = AddressHeader.CreateAddressHeader(
                "specialservice1", "http://localhost:8000/service", 1);
            AddressHeader addressHeader2 = AddressHeader.CreateAddressHeader(
                "specialservice2", "http://localhost:8000/service", 2);

            // Enumerate address headers and their properties from the array.
            AddressHeader[] addressHeaders = new AddressHeader[2] { addressHeader1, addressHeader2 };
            foreach (AddressHeader addressHeader in addressHeaders)
            {
                Console.WriteLine("AddressHeader - namespace:\t\t{0}", addressHeader.Namespace);
                Console.WriteLine("              - name:\t\t\t{0}", addressHeader.Name);
                Console.WriteLine("              - value:\t\t\t{0}", addressHeader.GetValue<int>());
                Console.WriteLine("              - type:\t\t\t{0}", addressHeader.GetType());
                Console.WriteLine("              - hashcode:\t\t{0}", addressHeader.GetHashCode());
                Console.WriteLine("              - equals addressHeader1:\t{0}", addressHeader.Equals(addressHeader1));
             //   Console.WriteLine("              - Is SOAP1.1 supported:\t{0}", addressHeader.ToMessageHeader().IsMessageVersionSupported(MessageVersion.WSAddressingSoap10));
                Console.WriteLine();
            }
            Console.WriteLine();

            //Add the array of address headers to an endpoint address
            EndpointAddress endpointAddress = new EndpointAddress(
                        new Uri("http://localhost:8003/servicemodelsamples/service"), addressHeaders);

            //Create a "special" service endpoint that uses the endpointAddress.
            string WSHttpBindingName = "Binding1";
            ServiceEndpoint specialServiceEndpoint = new ServiceEndpoint(
                ContractDescription.GetContract(typeof(CalculatorService)), new WSHttpBinding(WSHttpBindingName), endpointAddress
                );

            // Create a ServiceHost for the CalculatorService type that uses the base address.
            ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress);

            //Add the specialServiceEndpoint to the serviceHost.
            serviceHost.Description.Endpoints.Add(specialServiceEndpoint);

            // Enumerate the service endpoints and some of their properties from the serviceHost.
            Console.WriteLine("Service endpoints:");
            ServiceDescription desc = serviceHost.Description;
            foreach (ServiceEndpoint endpoint in desc.Endpoints)
            {
                Console.WriteLine("Endpoint - address:  {0}", endpoint.Address);
                Console.WriteLine("         - binding name:\t\t{0}", endpoint.Binding.Name);
                // Console.WriteLine("         - binding name:\t\t{0}", endpoint.);
                Console.WriteLine("         - contract name:\t\t{0}", endpoint.Contract.Name);
                Console.WriteLine("         - contains addressHeader1:\t{0}", endpoint.Address.Headers.Contains(addressHeader1));
                Console.WriteLine("         - count of address headers:\t{0}", endpoint.Address.Headers.Count);
                Console.WriteLine();
            }

            Console.WriteLine();

            // Open the ServiceHostBase to create listeners and start listening for messages.
            serviceHost.Open();

            // The service can now be accessed.
            Console.WriteLine("The service is ready.");
            Console.WriteLine("Press <ENTER> to terminate service.");
            Console.WriteLine();
            Console.ReadLine();

            // Close the ServiceHostBase to shutdown the service.
            serviceHost.Close();
        }
    }
  }

Commenti

Un indirizzo endpoint identifica in modo univoco l'endpoint per un servizio.

L'indirizzo appartiene all'endpoint del servizio, che contiene inoltre l'associazione, il contratto e i comportamenti per l'endpoint.

La classe EndpointAddress contiene un URI e proprietà dell'indirizzo che includono un'identità, elementi WSDL e una raccolta di intestazioni facoltative. Le intestazioni facoltative vengono utilizzate per fornire informazioni aggiuntive più dettagliate sull'indirizzo per identificare o interagire con l'endpoint. Ad esempio, possono essere utilizzate per indicare quale istanza di un servizio deve essere utilizzata per elaborare un messaggio in ingresso proveniente da un particolare utente quando sono disponibili più istanze.

L'indirizzo endpoint per un servizio può essere specificato in modo imperativo mediante l'utilizzo di codice oppure in modo dichiarativo mediante la configurazione. In genere definire endpoint nel codice non è pratico in quanto le associazioni e gli indirizzi di un servizio distribuito sono solitamente diversi da quelli usati durante lo sviluppo del servizio. È più pratico definire gli endpoint di servizio usando la configurazione.

EndpointAddress non implementa l'interfaccia ISerializable e quindi non è serializzabile. Affinché un endpoint sia esposto come parte di un contratto di servizio è necessario che sia serializzabile e conforme con il protocollo WS-Addressing (Web Service Addressing). Gli endpoint serializzabili conformi con la versione 1.0 e la versione di agosto 2004 di WS-Addressing vengono forniti rispettivamente dalle classi EndpointAddress10 e EndpointAddressAugust2004.

Costruttori

EndpointAddress(String)

Inizializza una nuova istanza della classe EndpointAddress con la stringa URI specificata.

EndpointAddress(Uri, AddressHeader[])

Inizializza una nuova istanza della classe EndpointAddress con l'URI e le intestazioni specificati.

EndpointAddress(Uri, EndpointIdentity, AddressHeader[])

Inizializza una nuova istanza della classe EndpointAddress con l'URI, l'identità e le intestazioni specificate.

EndpointAddress(Uri, EndpointIdentity, AddressHeaderCollection)

Inizializza una nuova istanza della classe EndpointAddress con l'URI, l'identità e la raccolta di intestazioni specificati.

EndpointAddress(Uri, EndpointIdentity, AddressHeaderCollection, XmlDictionaryReader, XmlDictionaryReader)

Inizializza una nuova istanza della classe EndpointAddress con l'URI, l'identità, la raccolta di intestazioni e i lettori di metadati ed estensioni specificati.

Proprietà

AnonymousUri

Ottiene una rappresentazione indipendente dalla versione dell'URI anonimo.

Headers

Ottiene la raccolta delle intestazioni degli indirizzi relativi agli endpoint che il generatore è in grado di creare.

Identity

Ottiene l'identità per l'endpoint utilizzato per l'autenticazione.

IsAnonymous

Ottiene un valore che indica se l'endpoint è anonimo.

IsNone

Ottiene un valore che indica se l'URI per l'endpoint è NoneUri.

NoneUri

Ottiene un URI indipendente dalla versione utilizzato per l'indirizzo di un endpoint a cui non deve essere inviato un messaggio.

Uri

Ottiene l'URI per l'endpoint.

Metodi

ApplyTo(Message)

Assegna l'URI e le proprietà dell'indirizzo endpoint ai valori delle intestazioni di un messaggio specificato.

Equals(Object)

Restituisce un valore che indica se un oggetto specificato è equivalente all'indirizzo endpoint corrente.

GetHashCode()

Fornisce un codice hash univoco per l'indirizzo endpoint corrente.

GetReaderAtExtensions()

Ottiene il lettore di dizionario XML che consente di accedere alle estensioni.

GetReaderAtMetadata()

Ottiene il lettore di dizionario XML che consente di accedere ai metadati per un endpoint.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ReadFrom(AddressingVersion, XmlDictionaryReader)

Legge un indirizzo endpoint per una versione di indirizzo specificata da un lettore di dizionario XML specificato.

ReadFrom(AddressingVersion, XmlDictionaryReader, XmlDictionaryString, XmlDictionaryString)

Legge un indirizzo endpoint per una versione di indirizzo specificata con un nome completo specificato da un lettore di dizionario XML specificato.

ReadFrom(AddressingVersion, XmlReader)

Legge un indirizzo endpoint per una versione di indirizzo specificata da un lettore XML specificato.

ReadFrom(AddressingVersion, XmlReader, String, String)

Legge un indirizzo endpoint per una versione di indirizzo specificata con un nome completo specificato da un lettore XML specificato.

ReadFrom(XmlDictionaryReader)

Legge un indirizzo endpoint da un lettore di dizionario XML specificato.

ReadFrom(XmlDictionaryReader, XmlDictionaryString, XmlDictionaryString)

Legge un indirizzo endpoint con un nome completo specificato da un lettore di dizionario XML specificato.

ToString()

Restituisce una rappresentazione canonica in forma di stringa dell'URI contenuto nell'indirizzo endpoint.

WriteContentsTo(AddressingVersion, XmlDictionaryWriter)

Salva tutti i nodi figlio del nodo nel writer di dizionario XML specificato.

WriteContentsTo(AddressingVersion, XmlWriter)

Salva tutti i nodi figlio del nodo nel writer XML specificato.

WriteTo(AddressingVersion, XmlDictionaryWriter)

Salva l'indirizzo endpoint corrente di una versione specificata in un writer di dizionario XML specificato.

WriteTo(AddressingVersion, XmlDictionaryWriter, XmlDictionaryString, XmlDictionaryString)

Salva l'indirizzo endpoint corrente di una versione specificata in un writer di dizionario XML con uno spazio dei nomi e un nome locale specificati.

WriteTo(AddressingVersion, XmlWriter)

Salva l'indirizzo endpoint corrente di una versione specificata in un writer XML specificato.

WriteTo(AddressingVersion, XmlWriter, String, String)

Salva l'indirizzo endpoint corrente di una versione specificata in un writer XML con uno spazio dei nomi e un nome locale specificati.

Operatori

Equality(EndpointAddress, EndpointAddress)

Restituisce un valore che indica se gli indirizzi endpoint specificati non sono equivalenti.

Inequality(EndpointAddress, EndpointAddress)

Restituisce un valore che indica se gli indirizzi endpoint specificati non sono equivalenti.

Si applica a