Sdílet prostřednictvím


Hledání koncových bodů

Serverové programy naslouchají koncovým bodům pro požadavky klientů. Syntaxe řetězce koncového bodu závisí na použité sekvenci protokolu. Například koncový bod pro TCP/IP je číslo portu a syntaxe koncového bodu pro pojmenované kanály je platný název kanálu.

Existují dva typy koncových bodů: dobře známé a dynamické. Volba typu koncového bodu, který program používá, určuje, jestli distribuovaná aplikace nebo knihovna runtime určuje koncový bod.

Tato část popisuje koncové body a obsahuje informace o tom, jak je najít. Je uspořádaná do následujících témat:

Poznámka

Termíny statické koncové body a známé koncové body jsou ekvivalentní a používají se zaměnitelně.

 

Klientská aplikace může pomocí mapy koncových bodů určit, jestli je aktuálně spuštěný serverový program nebo ne. Váš klient může volat RpcMgmtInqIfIds, RpcMgmtEpEltInqBegina RpcMgmtEpEltInqDone zjistit, jestli server zaregistroval konkrétní rozhraní, které vyžaduje v mapě koncového bodu.

Použití známých koncových bodů

Známé koncové body jsou předem přiřazené koncové body, které serverový program používá při každém spuštění. Vzhledem k tomu, že server vždy naslouchá určitého koncovému bodu, klient se k němu vždy pokusí připojit. Známé koncové body obvykle přiřazují autorita odpovědná za přenosový protokol. Vzhledem k tomu, že hostitelské počítače serveru mají konečný počet dostupných koncových bodů, vývojáři aplikací důrazně nedoporučuje používat známé koncové body. Další výhodou dynamických koncových bodů je, že zjednodušují dlouhodobou správu a údržbu systému.

Distribuovaná aplikace může v řetězci zadat dobře známý koncový bod a předat ho jako parametr funkci RpcServerUseProtseqEp. Případně se řetězec koncového bodu může objevit v hlavičce rozhraní IDL jako součást atributu rozhraní [koncový bod].

K implementaci dobře známého koncového bodu můžete použít dva přístupy:

  • Uveďte všechny informace v řetězcové vazbě.
  • Uložit dobře známý koncový bod do databáze názvové služby

Při vývoji můžete napsat všechny informace potřebné k vytvoření vazby do distribuované aplikace. Klient může přímo zadat dobře známý koncový bod jako řetězec, zavolat funkci RpcStringBindingCompose pro vytvoření řetězce, který obsahuje všechny informace vazby, a poskytnout tento řetězec funkci RpcBindingFromStringBinding, aby získal popisovač. Klient a server můžou být pevně zakódované tak, aby používaly dobře známý koncový bod nebo zapisovaly tak, aby informace o koncovém bodu pocházejí z příkazového řádku, datového souboru, konfiguračního souboru nebo souboru IDL.

Vaše klientská aplikace může také dotazovat databázi názvové služby na známé informace o koncovém bodu.

Použití dynamických koncových bodů

Počet koncových bodů pro konkrétní server a konkrétní posloupnost protokolů jsou obvykle omezené. Pokud například použijete posloupnost protokolu ncacn_ip_tcp, která indikuje, že k síťové komunikaci RPC dochází pomocí protokolu TCP/IP, je k dispozici pouze omezený počet portů (většina systémů má pouze rozsah 1025 až 5000 otevřených). Knihovny vzdáleného volání procedur umožňují dynamicky přiřazovat koncové body podle potřeby. Vzhledem k tomu, že počet možných identifikátorů UUID rozhraní je prakticky neomezený, použití UUID rozhraní k nasměrování volání nabízí větší prostor pro rozšíření a větší flexibilitu.

Ve výchozím nastavení funkce knihovny RPC run-time při dotazování databáze názvové služby hledají informace o koncovém bodu. Pokud je koncový bod dynamický, databáze názvové služby nebude obsahovat informace o koncovém bodu. Dotaz však poskytne klientskému programu název serveru. Pak může prohledat mapu koncového bodu serveru.

Pokud klient potřebuje provést vzdálené volání procedur pomocí dynamického koncového bodu, upřednostňovanou metodou je volání částečně vázaného vazbového popisovače. Transparentně běhové prostředí RPC určuje koncový bod. Tato metoda je vynikající pro použití funkce RpcEpResolveBinding, protože umožňuje pokročilé mechanismy ukládání do mezipaměti v době běhu RPC.

Pokud se vyžaduje konkrétnější kontrola výběru koncového bodu, mohou klienti prohledávat mapu koncového bodu po jedné položce voláním RpcMgmtEpEltInqBegin, RpcMgmtEpEltInqNexta RpcMgmtEpEltInqDone funkcí.

Export známých koncových bodů do databáze mapy koncových bodů

Dva přístupy k hledání koncových bodů je možné kombinovat, zejména pokud distribuovaný systém přechází z dobře známého modelu koncových bodů na dynamický koncový bod. V takových přechodech bude zprostředkující verze serveru používat dobře známý koncový bod, ale zároveň zaregistruje dobře známý koncový bod v databázi mapy koncových bodů. Tento přístup umožňuje klientům, kteří používají známý koncový bod, a klientům, kteří používají dynamický koncový bod, připojení. Po upgradu všech serverů je možné nasadit novou verzi klienta, která používá pouze dynamické koncové body. Po upgradu všech klientů může konečná verze serveru přestat používat dobře známé koncové body a začít používat jenom dynamické koncové body.

Tento přístup umožňuje přechodovou cestu pro aplikace, které začaly s dobře známým koncovým bodem, ale chtějí migrovat na dynamický koncový bod, aniž by vyžadovaly souběžnou aktualizaci všech serverů a klientů.