Postupy: Použití monikeru služby Windows Communication Foundation bez registrace
Pro připojení ke službě Windows Communication Foundation (WCF) a komunikaci s ní musí klientská aplikace WCF obsahovat podrobnosti o adrese služby, konfiguraci vazby a kontraktu služby.
Moniker služby WCF obvykle získává požadovanou smlouvu prostřednictvím předchozí registrace požadovaných typů atributů, ale mohou existovat případy, kdy to není možné. Místo registrace může moniker získat definici smlouvy ve formě dokumentu WSDL (Web Services Definition Language) prostřednictvím použití parametru wsdl
nebo prostřednictvím serveru Metadata Exchange prostřednictvím použití parametru mexAddress
.
To umožňuje scénáře, jako je například distribuce excelové tabulky, kde se některé hodnoty buněk počítají prostřednictvím interakcí webové služby. V tomto scénáři nemusí být možné zaregistrovat sestavení kontraktů služeb na všech klientech, kteří mohou dokument otevřít. Parametr wsdl
nebo mexAddress
parametr umožňuje samostatné řešení.
Poznámka:
Vzájemné ověřování musí být použito k ochraně před neoprávněnou manipulací nebo falšováním požadavků a odpovědí. Konkrétně je důležité, aby klienti měli jistotu, že koncový bod Exchange metadat, který reaguje, je zamýšlenou důvěryhodnou stranou.
Příklad
Tento příklad ukazuje použití monikeru služby se smlouvou MEX. Služba s následujícím kontraktem je vystavena wsHttpBinding.
using System.ServiceModel;
// ...
[ServiceContract(Namespace = "http://Microsoft.ServiceModel.Demo")]
public interface IAffiliate
{
[OperationContract]
bool NewAffiliate(string ID, string company, string fullname, string accountsCode);
[OperationContract]
bool RemoveAffiliate(string ID);
[OperationContract]
double RevenueCheckMonthly(ref string ID);
[OperationContract]
double RevenueCheckTotal(ref string ID);
}
K vytvoření klienta WCF pro vzdálenou službu lze použít následující příklad řetězec moniker.
service4:mexAddress="http://servername/Affiliates/service.svc/mex",
address="http://servername/Affiliates/service.svc",
contract=IAffiliate, contractNamespace=http://Microsoft.ServiceModel.Demo,
binding=WSHttpBinding_IAffiliate, bindingNamespace=http://tempuri.org/
Během provádění klientské aplikace provede klient WS-MetadataExchange
s poskytnutou mexAddress
. To může vrátit adresu, vazbu a podrobnosti smlouvy pro řadu služeb. Funkce address
, contract
contractNamespace
binding
a bindingNamespace
parametry slouží k identifikaci zamýšlené služby. Jakmile jsou tyto parametry spárovány, moniker vytvoří klienta WCF s příslušnou definicí kontraktu a volání lze pak provést pomocí klienta WCF, stejně jako u zadaného kontraktu.
Poznámka:
Pokud je moniker poškozený nebo pokud je služba nedostupná, volání vrátí GetObject
chybu s informacemi o neplatné syntaxi. Pokud se zobrazí tato chyba, ujistěte se, že je název, který používáte, správný a že je služba dostupná.