Sdílet prostřednictvím


Určení sekvencí protokolu

Serverové aplikace musí vybrat jednu nebo více sekvencí protokolu, která se má použít při komunikaci s klientem přes síť. Volba sekvencí protokolu je závislá na síti. Viz interpretace informací o vazbě a volba pořadí protokolu.

Serverový program může klientům umožnit připojení pomocí libovolné sekvence protokolu, kterou síť podporuje. Uděláte to tak, že vyvoláte RpcServerUseAllProtseqs a předáte RPC_C_PROTSEQ_MAX_REQS_DEFAULT jako první parametr. To ale není doporučený přístup. Použití ncalrpc pro místní volání a ncacn_ip_tcp nebo ncacn_http pro vzdálená volání je obvykle dostačující. Heterogenní sítě jsou neobvyklé a prakticky všechny sítě podporují protokol TCP/IP.

Pokud chcete, aby klient omezil přidělení portů pro dynamické koncové body na konkrétní rozsah portů, místo toho volejte RpcServerUseAllProtseqsEx. Tato funkce je specifická pro Microsoft RPC a je velmi užitečná pro vzdálená volání procedur, která procházejí bránou firewall. K předání příznaků řízení přidělení portů do funkce používá další parametr. Viz Konfigurace registru pro přidělení portů a selektivní vazby.

Při vývoji rozhraní serveru můžete v souboru MIDL zadat sekvence protokolů a informace o koncových bodech. Pokud ano, měl by váš server použít RpcServerUseAllProtseqsIf k registraci všech sekvencí protokolu a přidružených informací o koncových bodech zadaných v souboru IDL. Kromě toho existuje odpovídající RpcServerUseAllProtseqsIfEx funkce, která také umožňuje serveru předávat příznaky kontroly přidělování portů.

Pokud chcete nakonfigurovat klientské a serverové programy pro komunikaci se zadanou sekvencí protokolu, serverová aplikace by měla volat RpcServerUseProtseq. Úplný seznam sekvencí protokolu MICROSOFT RPC naleznete v tématu Konstanty sekvence protokolu.

Microsoft RPC také poskytuje RpcServerUseProtseqEx umožňující aplikacím vybrat konkrétní sekvence protokolů a řídit dynamické přidělování portů.

Kromě protokolů orientovaných na připojení podporuje Microsoft RPC také protokoly datagramu (bez připojení). Doporučují se protokoly orientované na připojení; datagramové protokoly mají odlišné sady funkcí než protokoly orientované na připojení a měly by se používat pouze v případě, že vývojář distribuovaného systému vyžaduje funkci dostupnou pouze v datagramových protokolech. Mezi funkce dostupné při použití protokolů datagramu patří:

  • Datagramy podporují přenosové protokoly UDP a IPX bez připojení.
  • Vzhledem k tomu, že není nutné navázat a udržovat připojení, datagramový protokol RPC vyžaduje méně nároků na prostředky.
  • Datagramy umožňují rychlejší vazbu.
  • Stejně jako u volání RPC orientovaného na připojení jsou volání RPC datagramu ve výchozím nastavení nonidempotentní. To znamená, že je zaručeno, že volání nebude spuštěno více než jednou. V souboru IDL lze funkci označit jako idempotentní, což informuje RPC, že nevadí, když je funkce spuštěna více než jednou na základě jednoho klientského požadavku. To umožňuje, aby běhové prostředí udržovalo na serveru menší množství stavu. Upozorňujeme, že idempotentní volání by bylo znovu vykonáno pouze ve výjimečných případech na nestabilní síti.
  • Datagram RPC podporuje atribut broadcast IDL. Všesměrové vysílání umožňuje klientovi vydávat zprávy na více serverech najednou. Klient tak může vyhledat jeden z několika dostupných serverů v síti nebo současně řídit více serverů. Všimněte si, že vysílání datagramu je platné pouze v rámci lokální sítě a obvykle nepřekračuje směrovače. Volání broadcast jsou implicitně idempotentní. Pokud volání obsahuje parametry [out], vrátí se pouze první odpověď serveru. Jakmile server odpoví, všechny budoucí RPC přes tento popisovač připojení budou odeslány pouze na tento server, včetně volání s atributem broadcast. Pokud chcete odeslat další vysílání, vytvořte nový popisovač vazby nebo zavolejte RpcBindingReset na existujícím popisovači.
  • Datagram RPC podporuje IDL atribut možná. To umožňuje klientovi odeslat volání na server, aniž by čekal na odpověď nebo potvrzení. Volání nemůže obsahovat parametry [out]. Volání pomocí [možná] volání jsou implicitně idempotentní.