Hizmet Ara Sunucusu
Hizmet proxy'si, bir hizmetin istemci tarafı ara sunucusudur. Hizmet ara sunucusu, uygulamaların yöntem çağrıları olarak bir kanalı üzerinden iletileri gönderip almasını sağlar.
Hizmet proxy'leri gerektiğinde oluşturulur, açılır, bir hizmeti çağırmak için kullanılır ve artık gerekli olmadığında kapatılır. Alternatif olarak, bir uygulama, bir hizmet ara sunucusunu birden çok kez başlatmak için gereken zaman ve kaynak harcamaları olmadan aynı hizmete tekrar tekrar bağlanmak için bir hizmet ara sunucusunu yeniden kullanabilir. Aşağıdaki diyagramda hizmet ara sunucusunun olası durumlarının akışı ve bir durumdan diğerine giden işlev çağrıları veya olayları gösterilmektedir.
Bu hizmet proxy durumları WS_SERVICE_PROXY_STATE numaralandırmasında numaralandırılır.
Yukarıdaki diyagramda ve aşağıdaki kodda gösterildiği gibi, WsCreateServiceProxy işlevine yapılan çağrı tarafından bir hizmet ara sunucusu oluşturulur. Bu çağrının parametreleri olarak WWSAPI aşağıdaki numaralandırmaları sağlar:
Ayrıca aşağıdaki veri türlerini kullanarak isteğe bağlı parametreleri kabul eder:
Hizmet ara sunucusu oluşturulduğunda, WsCreateServiceProxy işlevi bir out parametresi aracılığıyla hizmet ara sunucusuna WS_SERVICE_PROXYbir başvuru döndürür.
WS_SERVICE_PROXY* serviceProxy = NULL;
hr = WsCreateServiceProxy (
WS_TCP_CHANNEL_BINDING,
WS_CHANNEL_TYPE_DUPLEX_SESSION,
NULL,
NULL,
0,
NULL,
0,
&serviceProxy,
error);
Hizmet proxy'si oluşturulduğunda, uygulama WsOpenServiceProxy işlevini çağırarak, bağlanacak hizmet uç noktasının ağ adresini içeren bir adresi yapısı geçirerek hizmetle iletişim için hizmet ara sunucusunu açabilir.
WS_ENDPOINT_ADDRESS address = {0};
address.uri.chars = "net.tcp://localhost/example";
address.uri.length = wcslen("net.tcp://localhost/example";);
hr = WsOpenServiceProxy(serviceProxy, &address, NULL, error);
Hizmet ara sunucusu açıldığında, uygulama hizmete çağrı yapmak için bunu kullanabilir.
hr = Add(
serviceProxy,
1,
2,
&result,
NULL,
0,
NULL,
error);
Uygulama artık hizmet ara sunucusuna ihtiyaç duyduğunda, WsCloseServiceProxy işlevini çağırarak hizmet ara sunucusunu kapatır. Ayrıca WsFreeServiceProxyçağırarak ilişkili belleği serbest bırakır.
hr = WsCloseServiceProxy(
serviceProxy,
NULL,
error);
hr = WsFreeServiceProxy(
serviceProxy,
error);
Hizmet Ara Sunucusunu Yeniden Kullanma
Alternatif olarak, bir uygulama WsCloseServiceProxy çağrıldıktan sonra WsResetServiceProxy işlevini çağırarak hizmet ara sunucusunu yeniden kullanabilir.
hr = WsResetServiceProxy(
serviceProxy,
error);
Hizmet proxy'lerinin farklı bağlamlarda nasıl kullanıldığı hakkında daha fazla bilgi için aşağıdaki konulara bakın:
- Hizmet Ara Sunucusu ve Oturumlar
- Hizmet İşlemi
- İstemci Tarafı Hizmet İşlemleri
- httpCalculatorClientExample
Güvenlik
WWSAPI hizmeti proxy API'sini kullanırken aşağıdaki uygulama tasarımıyla ilgili dikkat edilmesi gereken noktalara dikkat edilmelidir:
- Hizmet proxy'si, Temel Profil 2.0 doğrulaması ve XML serileştirmesi dışında hiçbir veri doğrulaması gerçekleştirmez. Çağrının bir parçası olarak geri aldığı parametrelerde yer alan verileri doğrulamak uygulamanın sorumluluğundadır.
- WS_PROXY_PROPERTY_MAX_PENDING_CALLSWS_PROXY_PROPERTY_ID numaralandırma değerini kullanarak hizmet proxy'sinde bekleyen çağrı sayısı üst sınırının yapılandırılması, yavaş çalışan bir sunucuya karşı koruma sağlar. Varsayılan üst sınır 100'dür. Uygulamalar varsayılanları değiştirirken dikkatli olmalıdır.
- Hizmet ara sunucusu, sunucuyla iletişim kurmak için kullanılan WS_SECURITY_DESCRIPTION yapısında belirtilenlerin ötesinde hiçbir güvenlik garantisi sağlamaz.
- Hizmet proxy'sinde varsayılan ileti ve kanalı değiştirirken dikkatli olun. İlgili özelliklerden herhangi birini değiştirmeden önce iletilerle ve kanallarla ilişkili güvenlik konularını okuyun.
- Hizmet ara sunucusu, bellekte tuttuğu tüm kimlik bilgilerini şifreler.
Aşağıdaki API öğeleri hizmet proxy'leriyle ilgilidir.
Geri çağırma | Açıklama |
---|---|
WS_PROXY_MESSAGE_CALLBACK | Giriş iletisinin üst bilgileri gönderilmek üzere olduğunda veya bir çıkış iletisi üst bilgileri yeni alındığında çağrılır. |
Sayım | Açıklama |
---|---|
WS_CALL_PROPERTY_ID | İstemci tarafı hizmet işleminde bir çağrıyı yapılandırmak için isteğe bağlı parametreleri numaralandırır. |
WS_PROXY_PROPERTY_ID | Hizmet ara sunucusunu yapılandırmak için isteğe bağlı parametreleri numaralandırır. |
WS_SERVICE_PROXY_STATE | Hizmet proxy'sinin durumu. |
Fonksiyon | Açıklama |
---|---|
WsAbandonCall | Belirtilen hizmet proxy'sinde belirtilen çağrıyı bırakır. |
WsAbortServiceProxy | Belirtilen hizmet proxy'sinde bekleyen tüm girişi ve çıkışı iptal eder. |
WsCall | Yalnızca dahili. Bağımsız değişkenleri bir iletide seri hale getirerek kanal üzerinden gönderir. |
WsCloseServiceProxy | İletişim için bir hizmet ara sunucusunu kapatır. |
WsCreateServiceProxy | Bir hizmet proxy'si oluşturur. |
WsFreeServiceProxy | Bir hizmet ara sunucusuyla ilişkili belleği serbest bırakır. |
WsGetServiceProxyProperty | Belirtilen bir hizmet ara sunucusu özelliğini alır. |
WsOpenServiceProxy | Hizmet uç noktasına bir hizmet ara sunucusu açar. |
WsResetServiceProxy | Hizmet ara sunucusunu sıfırlar. |
Kulp | Açıklama |
---|---|
WS_SERVICE_PROXY | Hizmet ara sunucusuna başvurmak için kullanılan opak bir tür. |
Yapı | Açıklama |
---|---|
WS_CALL_PROPERTY | Bir çağrı özelliği belirtir. |
WS_PROXY_PROPERTY. | Bir proxy özelliği belirtir. |