Protokol Dizilerini Belirtme

Sunucu uygulamalarının ağ üzerinden istemciyle iletişim kurarken kullanmak üzere bir veya daha fazla protokol dizisi seçmesi gerekir. Protokol dizilerinin seçimi ağa bağlıdır. Bkz. Bağlama Bilgilerini Yorumlama ve Bir Protokol Dizisi Seçme.

Sunucu programınız istemcilerin ağın desteklediği herhangi bir protokol dizisini kullanarak bağlanmasına izin verebilir. Bunu yapmak için, RpcServerUseAllProtseqs çağırın ve ilk parametre olarak RPC_C_PROTSEQ_MAX_REQS_DEFAULT'i geçirin. Ancak, önerilen yaklaşım bu değildir. Bunun yerine, yerel aramalar için ncalrpc ve uzak aramalar için ncacn_ip_tcp veya ncacn_http kullanılması genellikle yeterlidir. Heterojen ağlar yaygın değildir ve neredeyse tüm ağlar TCP/IP'yi destekler.

İstemcinizin dinamik uç noktalar için bağlantı noktası ayırmayı belirli bir bağlantı noktası aralığıyla kısıtlamasını istiyorsanız, bunun yerine RpcServerUseAllProtseqsEx fonksiyonunu çağırın. Bu işlev Microsoft RPC'ye özgüdür ve güvenlik duvarından geçen uzaktan yordam çağrıları için son derece kullanışlıdır. Bağlantı noktası ayırma denetimi bayraklarını işlevine geçirmek için ek bir parametre kullanır. Bkz. Bağlantı Noktası Ayırmaları ve Seçmeli Bağlama için Kayıt Defterini Yapılandırma.

Sunucunun arabirimlerini geliştirirken MIDL dosyanızda protokol dizilerini ve uç nokta bilgilerini belirtebilirsiniz. Bunu yaparsanız, sunucunuz IDL dosyasında sağlanan tüm protokol dizilerini ve ilişkili uç nokta bilgilerini kaydetmek için RpcServerUseAllProtseqsIf kullanmalıdır. Buna ek olarak, sunucunun bağlantı noktası ayırma-denetim bayraklarını geçirmesine de izin veren ile ilgili RpcServerUseAllProtseqsIfEx işlevi vardır.

İstemci ve sunucu programlarınızı belirtilen bir protokol dizisiyle iletişim kuracak şekilde yapılandırmak istiyorsanız, sunucu uygulaması RpcServerUseProtseqçağırmalıdır. Microsoft RPC protokol dizilerinin tam listesi için bkz. protokol dizisi sabitleri .

Microsoft RPC ayrıca uygulamaların belirli protokol dizilerini seçmesini ve dinamik bağlantı noktası ayırmasını denetlemesini sağlamak için RpcServerUseProtseqEx sağlar.

Bağlantı odaklı protokollere ek olarak, Microsoft RPC veri birimi (bağlantısız) protokollerini de destekler. Bağlantı odaklı protokoller önerilir; veri birimi protokolleri, bağlantı odaklı protokollerden farklı özellik kümelerine sahiptir ve yalnızca dağıtılmış bir sistem geliştiricisi yalnızca veri birimi protokollerinde kullanılabilen bir özellik gerektiriyorsa kullanılmalıdır. Veri birimi protokolleri kullanılırken kullanılabilen özelliklerden bazıları şunlardır:

  • Veri birimleri UDP ve IPX bağlantısız aktarım protokollerini destekler.
  • Bağlantı kurmak ve sürdürmek gerekli olmadığından, veri birimi RPC protokolü daha az kaynak yükü gerektirir.
  • Veri birimleri daha hızlı bağlamayı sağlar.
  • Bağlantı odaklı RPC'de olduğu gibi, veri birimi RPC çağrıları varsayılan olarak idempotent olmayan. Bu, çağrının birden çok kez yürütülmemesi garantisi olduğu anlamına gelir. Ancak, bir işlev IDL dosyasında bir kez etkili olarak işaretlenebilir ve RPC'ye tek bir istemci isteğine yanıt olarak işlevin birden çok kez yürütülmesinin zararsız olduğunu söyler. Bu, çalışma süresinin sunucuda daha az durum bilgisi tutmasına olanak tanır. Tek etkili bir çağrının yalnızca kararsız bir ağda nadir durumlarda yeniden yürütüleceğini unutmayın.
  • Datagram RPC, yayın IDL özniteliğini destekler. Yayın, istemcinin aynı anda birden çok sunucuya ileti göndermesini sağlar. Bu, istemcinin ağdaki birkaç kullanılabilir sunucudan birini bulmasına veya birden çok sunucuyu aynı anda denetlemesine olanak tanır. Veri birimi yayınının yalnızca yerel bağlantı içinde geçerli olduğunu ve genellikle yönlendiriciler arasında geçiş yapılmadığını unutmayın. Yayın çağrıları örtük olarak idempotenttir. Çağrı [] parametreleri içeriyorsa, yalnızca ilk sunucu yanıtı döndürülür. Bir sunucu yanıt verdikten sonra, bu bağlama tutamacı üzerindeki gelecekteki tüm RPC'ler, yayın özniteliğine sahip çağrılar da dahil olmak üzere yalnızca bu sunucuya gönderilir. Başka bir yayın göndermek için yeni bir bağlama tutamacı oluşturun veya mevcut tutamacı kullanarak RpcBindingReset çağırın.
  • Datagram RPC IDL özniteliğini destekler. Bu, istemcinin yanıt veya onay beklemeden sunucuya çağrı göndermesine olanak tanır. Çağrı [] parametresi içeremez. [belki] çağrıları kullanan çağrılar zımnen aynı sonucu veren çağrılardır.