Aracılığıyla paylaş


Hizmet Ana Bilgisayarı

Hizmet konağı, bir işlem içinde bir hizmeti barındırmak için çalışma zamanı ortamıdır.

Bir hizmet, bir hizmet konağı içinde bir veya daha fazla uç nokta yapılandırabilir.

hizmet uç noktası içeren bir hizmet konağı yapısını gösteren Diyagramı.

Hizmet konağı oluşturma

Hizmet konağı oluşturmadan önce hizmetin uç noktalarını tanımlaması gerekir. Hizmet konağındaki bir uç nokta WS_SERVICE_ENDPOINT yapısında belirtilir ve aşağıdaki bilgilerle tanımlanır:

WS_SERVICE_ENDPOINT serviceEndpoint = {0};
const WS_SERVICE_ENDPOINT* serviceEndpoints[1];
serviceEndpoints[0] = &serviceEndpoint;
WS_STRING url = WS_STRING_VALUE(L"net.tcp://+/Example");

// Method based service contract for the service
static WS_SERVICE_CONTRACT calculatorContract = 
{
    &calculatorContractDescription, // comes from a generated header.
    NULL,
    &calculatorFunctions, // specified by the application
};

serviceEndpoint.address.url = &url;
serviceEndpoint.binding.channelBinding =  WS_TCP_CHANNEL_BINDING; 
serviceEndpoint.contract = &calculatorContract;  
serviceEndpoint.channelType = WS_CHANNEL_TYPE_DUPLEX_SESSION; 
serviceEndpoint.authorizationCallback = AuthorizationCallback; // Authorization callback.

WS_CHANNEL_BINDING numaralandırmasında WS_UDP_CHANNEL_BINDING tarafından temsil edilen UDP üzerinden SOAP için yalnızca tek yönlü sözleşmeler desteklenir.

Bir uç nokta tanımlandıktan sonra, WS_SERVICE_ENDPOINT yapılara işaretçi dizisi alan WsCreateServiceHost işlevine geçirilebilir.

HRESULT hr = WsCreateServiceHost (serviceEndpoints, 1, NULL, 0, &host, error);

Bir uygulama isteğe bağlı olarak, hizmet ana bilgisayarında özel ayarları yapılandırmak için WsCreateServiceHosthizmet özellikleri dizisi sağlayabilir.

Uygulama, istemci isteklerini kabul etmeye başlamak için hizmet ana bilgisayarını açar.

WsOpenServiceHost(serviceHost, NULL, NULL);

Hizmet ana bilgisayarını açtıktan sonra, bunu gerektiren başka işlem yoksa uygulama bu konağı kapatabilir. Bunun kaynaklarını serbest bırakmadığını ve sonraki WsResetServiceHostçağrısıyla yeniden açılabildiğini unutmayın.

WsCloseServiceHost(serviceHost, NULL, NULL);

Hizmet konağı kapatıldıktan sonra, bir uygulama hizmet ana bilgisayarını yeniden kullanmak üzere sıfırlayabilir.

WsResetServiceHost(serviceHost, NULL);

Uygulama hizmet konağıyla tamamlandığında, WsFreeServiceHost işlevini çağırarak hizmet konağıyla ilişkili kaynakları serbest kılabilir. Bu işlevi çağırmadan önce WsCloseServiceHost çağrılması gerektiğini unutmayın.

WsFreeServiceHost(serviceHost, NULL);

Hizmet konağına özel durum ekleme hakkında bilgi için bkz. kullanıcı ana bilgisayar durumu

Belirli bir uç nokta için hizmet ana bilgisayarında yetkilendirme hakkında bilgi için bkz. Hizmet Yetkilendirmesi.

Bir hizmet için hizmet işlemlerini ve hizmet sözleşmelerini uygulama hakkında bilgi edinmek için hizmet işlemleri ve hizmet sözleşmesikonularına bakın.

Güvenlik

Bir uygulama, hizmet konağı tarafından uygulama adına ayrılan kaynak miktarını denetlemek için aşağıdaki özellikleri kullanabilir:

Bu özelliklerin her biri için güvenli varsayılanlar seçilir, bu özellikleri değiştirmek isteyen bir uygulama dikkatli olmalıdır. Yukarıda belirtilen özelliklerin ötesinde, kanalıdinleyici ve ileti belirli özellikler de uygulama tarafından değiştirilebilir. Bu ayarlardan herhangi birini değiştirmeden önce bu bileşenlerin güvenlikle ilgili dikkat edilmesi gereken noktalarına bakın.

Ayrıca, WWSAPI hizmeti konak API'si kullanılırken aşağıdaki uygulama tasarımı konuları dikkatle değerlendirilmelidir:

  • MEX kullanırken, uygulamalar hassas verileri açıklamamaya dikkat etmelidir. Bir azaltma olarak, MEX aracılığıyla kullanıma sunulan verilerin doğası hassassa, uygulamalar EN az kimlik doğrulaması gerektiren güvenli bağlama ile MEX uç noktasını yapılandırmayı ve WS_SERVICE_SECURITY_CALLBACKkullanarak uç noktanın bir parçası olarak yetkilendirme uygulamayı seçebilir.
  • Varsayılan olarak, hatalarla ilgili zengin hata bilgileri hizmet ana bilgisayarında WS_SERVICE_PROPERTY_FAULT_DISCLOSURE özelliği tarafından devre dışı bırakılır. Hatanın bir parçası olarak zengin hata bilgileri göndermek uygulamanın takdirine bağlıdır. Ancak bu durum bilgilerin açığa çıkmasına neden olabilir ve bu nedenle bu ayarın yalnızca hata ayıklama senaryoları için değiştirilmesi önerilir.
  • Temel Profil 2.0 ve XML serileştirmesi için gerçekleştirilen doğrulamanın ötesinde, hizmet ana bilgisayarı hizmet işlemi parametrelerinin bir parçası olarak alınan veri içeriğinde doğrulama gerçekleştirmez. Tüm parametre doğrulamalarını kendi başına gerçekleştirmek uygulamanın sorumluluğundadır.
  • Yetkilendirme, hizmet ana bilgisayarının bir parçası olarak uygulanmaz. Ancak, uygulamalar WS_SECURITY_DESCRIPTION ve WS_SERVICE_SECURITY_CALLBACKkullanarak kendi yetkilendirme düzenlerini uygulayabilir.
  • Uç noktasında güvenli bağlamalar kullanmak uygulamanın sorumluluğundadır. Hizmet konağı, uç noktada yapılandırılanların ötesinde bir güvenlik sağlamaz.

Hizmet konağı ile aşağıdaki API öğeleri kullanılır.

Geri çağırma Açıklama
WS_SERVICE_ACCEPT_CHANNEL_CALLBACK Hizmet konağı tarafından bir uç nokta dinleyicisinde bir kanal kabul edildiğinde çağrılır.
WS_SERVICE_CLOSE_CHANNEL_CALLBACK Bir kanal bir uç noktada kapatıldığında veya durdurulduğunda çağrılır.

 

Sayım Açıklama
WS_SERVICE_ENDPOINT_PROPERTY_ID WS_SERVICE_ENDPOINTyapılandırmak için isteğe bağlı parametreler.
WS_SERVICE_HOST_STATE Bir hizmet konasının içinde bulunabileceği durumlar.
WS_SERVICE_PROPERTY_ID Hizmet ana bilgisayarını yapılandırmak için isteğe bağlı parametreler.

 

Fonksiyon Açıklama
WsAbortServiceHost Hizmet konağındaki geçerli işlemleri kesintiye uğratır ve sonlar.
WsCloseServiceHost İstemciden yeni kanal kabul etmemesi için tüm dinleyicileri kapatır.
WsCreateServiceHost Bir hizmet konağı oluşturur.
WsFreeServiceHost Bir hizmet ana bilgisayar nesnesiyle ilişkili belleği serbest bırakır.
WsGetServiceHostProperty Belirtilen bir Hizmet Konağı özelliğini alır.
WsOpenServiceHost İletişim için bir hizmet konağı açar ve dinleyicileri tüm uç noktalarda başlatır.
WsResetServiceHost Hizmet ana bilgisayarını yeniden kullanmak üzere sıfırlar ve temel kanalı ve dinleyicileri yeniden kullanmak üzere sıfırlar.

 

Kulp Açıklama
WS_SERVICE_HOST Hizmet konağına başvurmak için kullanılan opak bir tür.

 

Yapı Açıklama
WS_SERVICE_ENDPOINT Hizmet konağındaki tek bir uç noktayı temsil eder.
WS_SERVICE_ENDPOINT_PROPERTY Hizmete özgü bir ayar belirtir.
WS_SERVICE_PROPERTY Hizmete özgü bir ayar belirtir.
WS_SERVICE_PROPERTY_ACCEPT_CALLBACK Bir kanal başarıyla kabul edildiğinde çağrılan geri çağırmayı belirtir.
WS_SERVICE_PROPERTY_CLOSE_CALLBACK Bir kanal kapatılacakken çağrılan geri çağırmayı belirtir.