URL Monikers
A arquitetura de moniker OLE fornece um modelo de programação conveniente para trabalhar com URLs. A arquitetura de moniker oferece suporte à análise de nome extensível e completa por meio da função MkParseDisplayName e das interfaces IParseDisplayName e IMoniker, bem como nomes imprimíveis por meio do método IMoniker::GetDisplayName. A interface do IMoniker é a maneira como você realmente usa URLs que você encontra, e criar componentes que se encaixam na arquitetura de moniker é a maneira de realmente estender namespaces de URL na prática.
Uma classe de moniker fornecida pelo sistema, o moniker de URL, fornece uma estrutura para criar e usar determinadas URLs. Como as URLs frequentemente veem recursos em redes de alta latência, o moniker de URL oferece suporte à vinculação assíncrona e síncrona. O moniker de URL atualmente não oferece suporte a armazenamento assíncrono.
O diagrama a seguir mostra os componentes envolvidos no uso de monikers de URL. Todos esses componentes devem ser familiares. (Veja Apelidos assíncronos.)
Como todos os clientes de moniker, um usuário de Monikers de URL normalmente cria e mantém uma referência ao moniker, bem como ao contexto de ligação a ser usado durante a vinculação (IMoniker::BindToStorage ou IMoniker::BindToObject). Para oferecer suporte à associação assíncrona, o cliente pode implementar um objeto bind-status-callback, que implementa a interface IBindStatusCallback, e registrá-lo com o contexto bind usando a função RegisterBindStatusCallback. Esse objeto receberá a interface IBinding do transporte durante chamadas para IBindStatusCallback::OnStartBinding.
O URL Moniker identifica o protocolo que está sendo usado analisando o prefixo da URL e, em seguida, recupera a interface IBinding da camada de transporte. O cliente usa o IBinding para suportar a pausa, o cancelamento e a priorização da operação de vinculação. O objeto de retorno de chamada também recebe notificação de progresso por meio de IBindStatusCallback::OnProgress, notificação de disponibilidade de dados por meio de IBindStatusCallback::OnDataAvailable e várias outras notificações de camada de transporte sobre o status da associação. O moniker de URL ou camadas de transporte específicas também podem solicitar informações estendidas do cliente por meio de IBindStatusCallback::QueryInterface, permitindo que o cliente forneça informações específicas do protocolo que afetarão a operação de ligação.
Para Mais informações, consulte os seguintes tópicos: