Aracılığıyla paylaş


Standart Uç Noktaları

Uç noktalar bir adres, bağlama ve sözleşme belirtilerek tanımlanır. Bir uç noktada ayarlanabilen diğer parametreler davranış yapılandırması, üst bilgiler ve dinleme URI'leridir. Belirli uç nokta türleri için bu değerler değişmez. Örneğin, meta veri değişim uç noktaları her zaman sözleşmeyi IMetadataExchange kullanır. Her zaman belirli bir uç nokta davranışı gerektiren gibi WebHttpEndpoint diğer uç noktalar. Bir uç noktanın kullanılabilirliği, yaygın olarak kullanılan uç nokta özellikleri için varsayılan değerlere sahip uç noktalara sahip olunarak geliştirilebilir. Standart uç noktalar, bir geliştiricinin varsayılan değerleri olan veya bir veya daha fazla uç noktanın özelliklerinin değişmediği bir uç nokta tanımlamasına olanak tanır. Bu uç noktalar, statik nitelikteki bilgileri belirtmek zorunda kalmadan böyle bir uç nokta kullanmanıza olanak sağlar. Standart uç noktalar altyapı ve uygulama uç noktaları için kullanılabilir.

Altyapı Uç Noktaları

Bir hizmet, hizmet yazarı tarafından açıkça uygulanmayan bazı özelliklere sahip uç noktaları kullanıma sunabilir. Örneğin, meta veri değişim uç noktası sözleşmeyi IMetadataExchange kullanıma sunar, ancak bir hizmet yazarı olarak bu arabirimi uygulamazsanız WCF tarafından uygulanır. Bu tür altyapı uç noktaları, bir veya daha fazla uç nokta özelliği için varsayılan değerlere sahiptir ve bazıları değiştirilemez olabilir. Contract Bağlama gibi diğer özellikler geliştirici tarafından sağlanabilirken meta veri değişim uç noktasının özelliği olmalıdırIMetadataExchange. Altyapı uç noktaları, özelliği trueolarak ayarlanarak IsSystemEndpoint tanımlanır.

Uygulama Uç Noktaları

Uygulama geliştiricileri adres, bağlama veya sözleşme için varsayılan değerleri belirten kendi standart uç noktalarını tanımlayabilir. sınıfından ServiceEndpoint bir sınıf türeterek ve uygun uç nokta özelliklerini ayarlayarak standart uç nokta tanımlarsınız. Değiştirilebilen özellikler için varsayılan değerler sağlayabilirsiniz. Diğer bazı özelliklerin değiştiremeyen statik değerleri olacaktır. Aşağıdaki örnekte standart uç noktanın nasıl uygulanacakları gösterilmektedir.

public class CustomEndpoint : ServiceEndpoint
{
    public CustomEndpoint()
        : this(string.Empty)
    { }

    public CustomEndpoint(string address)
        : this(address, ContractDescription.GetContract(typeof(ICalculator)))
    { }

    // Create the custom endpoint with a fixed binding
    public CustomEndpoint(string address, ContractDescription contract)
        : base(contract)
    {
        this.Binding = new BasicHttpBinding();
        this.IsSystemEndpoint = false;
    }

    // Definition of the additional property of this endpoint
    public bool Property { get; set; }
}

Yapılandırma dosyasında kullanıcı tanımlı özel uç nokta kullanmak için, öğesinden StandardEndpointElementbir sınıf türetmeli StandardEndpointCollectionElement<TStandardEndpoint,TEndpointConfiguration>ve yeni standart uç noktayı app.config veya machine.config içindeki uzantılar bölümüne kaydetmelisiniz. StandardEndpointElement aşağıdaki örnekte gösterildiği gibi standart uç nokta için yapılandırma desteği sağlar.

public class CustomEndpointElement : StandardEndpointElement
{
    // Definition of the additional property for the standard endpoint element
    public bool Property
    {
        get { return (bool)base["property"]; }
        set { base["property"] = value; }
    }

    // The additional property needs to be added to the properties of the standard endpoint element
    protected override ConfigurationPropertyCollection Properties
    {
        get
        {
            ConfigurationPropertyCollection properties = base.Properties;
            properties.Add(new ConfigurationProperty("property", typeof(bool), false, ConfigurationPropertyOptions.None));
            return properties;
        }
    }

    // Return the type of this standard endpoint
    protected override Type EndpointType
    {
        get { return typeof(CustomEndpoint); }
    }

    // Create the custom service endpoint
    protected override ServiceEndpoint CreateServiceEndpoint(ContractDescription contract)
    {
        return new CustomEndpoint();
    }

    // Read the value given to the property in config and save it
    protected override void OnApplyConfiguration(ServiceEndpoint endpoint, ServiceEndpointElement serviceEndpointElement)
    {
        CustomEndpoint customEndpoint = (CustomEndpoint)endpoint;
        customEndpoint.Property = this.Property;
    }

    // Read the value given to the property in config and save it
    protected override void OnApplyConfiguration(ServiceEndpoint endpoint, ChannelEndpointElement channelEndpointElement)
    {
        CustomEndpoint customEndpoint = (CustomEndpoint)endpoint;
        customEndpoint.Property = this.Property;
    }

    // No validation in this sample
    protected override void OnInitializeAndValidate(ServiceEndpointElement serviceEndpointElement)
    {
    }

    // No validation in this sample
    protected override void OnInitializeAndValidate(ChannelEndpointElement channelEndpointElement)
    {
    }
}

, StandardEndpointCollectionElement<TStandardEndpoint,TEndpointConfiguration> standart uç nokta yapılandırmasındaki bölümün altında <standardEndpoints> görünen koleksiyon için yedekleme türünü sağlar. Aşağıdaki örnekte bu sınıfın nasıl uygulanacakları gösterilmektedir.

public class CustomEndpointCollectionElement : StandardEndpointCollectionElement<CustomEndpoint, CustomEndpointElement>
{
    // ...
}

Aşağıdaki örnekte, uzantılar bölümünde standart uç noktanın nasıl kaydedilecekleri gösterilmektedir.

<extensions>
      <standardEndpointExtensions>
        <add
          name="customStandardEndpoint"
          type="CustomEndpointCollectionElement, Example.dll,
                Version=1.0.0.0, Culture=neutral, PublicKeyToken=ffffffffffffffff"/>
      </standardEndpointExtensions>
</extensions>

Standart Uç Nokta Yapılandırma

Standart uç noktalar koda veya yapılandırmaya eklenebilir. Koda standart uç nokta eklemek için, aşağıdaki örnekte gösterildiği gibi uygun standart uç nokta türünün örneğini oluşturun ve bunu hizmet konağına ekleyin:

serviceHost.AddServiceEndpoint(new CustomEndpoint());

Yapılandırmaya standart uç nokta eklemek için öğesine bir <endpoint> öğe ve öğesinde <service> gerekli yapılandırma ayarları ekleyin <standardEndpoints> . Aşağıdaki örnekte .NET Framework 4.6.1 ile birlikte gelen standart uç noktalardan birinin nasıl ekleneceği UdpDiscoveryEndpointgösterilmektedir.

<services>
  <service>
    <endpoint isSystemEndpoint="true" kind="udpDiscoveryEndpoint" />
  </service>
</services>
<standardEndpoints>
  <udpDiscoveryEndpoint>
     <standardEndpoint multicastAddress="soap.udp://239.255.255.250:3702" />
  </udpDiscoveryEndpoint>
</standardEndpoints>

Standart uç nokta türü öğesindeki kind özniteliği <endpoint> kullanılarak belirtilir. Uç nokta öğesi içinde <standardEndpoints> yapılandırılır. Yukarıdaki örnekte bir UdpDiscoveryEndpoint uç nokta eklenir ve yapılandırılır. öğesi, <udpDiscoveryEndpoint> özelliğini UdpDiscoveryEndpointayarlayan MulticastAddress bir <standardEndpoint> içerir.

.NET Framework ile Birlikte Gönderilen Standart Uç Noktalar

Aşağıdaki tabloda .NET Framework 4.6.1 ile gönderilen standart uç noktalar listelenmektedir.

Mex Endpoint Hizmet meta verilerini kullanıma açmak için kullanılan standart uç nokta.

AnnouncementEndpoint Hizmetler tarafından duyuru iletileri göndermek için kullanılan standart uç nokta.

DiscoveryEndpoint Bulma iletileri göndermek için hizmetler tarafından kullanılan standart uç nokta.

UdpDiscoveryEndpoint UDP çok noktaya yayın bağlaması üzerinden bulma işlemleri için önceden yapılandırılmış standart uç nokta.

UdpAnnouncementEndpoint Udp bağlaması üzerinden duyuru iletileri göndermek için hizmetler tarafından kullanılan standart uç nokta.

DynamicEndpoint Çalışma zamanında uç nokta adresini dinamik olarak bulmak için WS-Discovery kullanan standart uç nokta.

ServiceMetadataEndpoint Meta veri değişimi için standart bir uç nokta.

WebHttpEndpointDavranışı otomatik olarak ekleyen bağlamaya WebHttpBehavior sahip standart uç WebHttpBinding nokta

WebScriptEndpointDavranışı otomatik olarak ekleyen bağlamaya WebScriptEnablingBehavior sahip standart uç WebHttpBinding nokta.

WebServiceEndpoint Bağlaması olan standart uç WebHttpBinding nokta.

WorkflowControlEndpoint İş akışı örneklerinde denetim işlemlerini çağırmanızı sağlayan standart bir uç nokta.

WorkflowHostingEndpoint İş akışı oluşturmayı ve yer işareti yeniden başlatmayı destekleyen standart bir uç nokta.