Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ukázka WSStreamedHttpBinding ukazuje, jak vytvořit vazbu, která je navržená tak, aby podporovala scénáře streamování při použití přenosu HTTP.
Poznámka:
Postup nastavení a pokyny k sestavení pro tuto ukázku najdete na konci tohoto tématu.
Postup vytvoření a konfigurace nové standardní vazby je následující.
Vytvořte novou standardní vazbu
Standardní vazby ve Windows Communication Foundation (WCF), jako je basicHttpBinding a netTcpBinding, konfigurují základní přenosy a zásobník kanálů pro konkrétní požadavky. V této ukázce zásobník kanálu
WSStreamedHttpBindingnakonfiguruje tak, aby podporoval streamování. Ve výchozím nastavení se do zásobníku kanálů nepřidávají WS-Security a spolehlivé zasílání zpráv, protože streamování nepodporuje obě funkce. Nová vazba je implementována ve tříděWSStreamedHttpBinding, která je odvozena z Binding. ObsahujeWSStreamedHttpBindingnásledující prvky vazby: HttpTransportBindingElement, HttpsTransportBindingElement, TransactionFlowBindingElementa TextMessageEncodingBindingElement. Třída poskytuje metoduCreateBindingElements()pro konfiguraci výsledného zásobníku vazeb, jak je znázorněno v následujícím vzorovém kódu.public override BindingElementCollection CreateBindingElements() { // return collection of BindingElements BindingElementCollection bindingElements = new BindingElementCollection(); // the order of binding elements within the collection is important: layered channels are applied in the order included, followed by // the message encoder, and finally the transport at the end if (flowTransactions) { bindingElements.Add(transactionFlow); } bindingElements.Add(textEncoding); // add transport (http or https) bindingElements.Add(transport); return bindingElements.Clone(); }Přidání podpory konfigurace
Pro zveřejnění přenosu prostřednictvím konfigurace ukázka implementuje dvě další třídy –
WSStreamedHttpBindingConfigurationElementaWSStreamedHttpBindingSection. TřídaWSStreamedHttpBindingSectionje StandardBindingCollectionElement<TStandardBinding,TBindingConfiguration>, která zveřejňujeWSStreamedHttpBindingkonfiguračnímu systému WCF. Část implementace je delegována naWSStreamedHttpBindingConfigurationElement, která je odvozena od StandardBindingElement. TřídaWSStreamedHttpBindingConfigurationElementmá vlastnosti, které odpovídají vlastnostemWSStreamedHttpBindinga funkce k mapování každého konfiguračního prvku na vazbu.Zaregistrujte obslužnou rutinu v konfiguračním systému přidáním následující části do konfiguračního souboru služby.
<configuration> <system.serviceModel> <extensions> <bindingExtensions> <add name="wsStreamedHttpBinding" type="Microsoft.ServiceModel.Samples.WSStreamedHttpBindingCollectionElement, WSStreamedHttpBinding, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" /> </bindingExtensions> </extensions> </system.serviceModel> </configuration>Na obslužnou rutinu se pak dá odkazovat z konfiguračního oddílu serviceModel.
<configuration> <system.serviceModel> <client> <endpoint address="https://localhost/servicemodelsamples/service.svc" bindingConfiguration="Binding" binding="wsStreamedHttpBinding" contract="Microsoft.ServiceModel.Samples.IStreamedEchoService"/> </client> </system.serviceModel> </configuration>
Jak nastavit, sestavit a spustit ukázku
Pomocí následujícího příkazu nainstalujte ASP.NET 4.0.
%windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enableUjistěte se, že jste provedli kroky uvedené v One-Time instalačním postupu pro ukázky Windows Communication Foundation.
Ujistěte se, že jste provedli pokyny k instalaci certifikátu internetové informační služby (IIS).
Pro sestavení řešení postupujte podle pokynů v Sestavení ukázek Windows Communication Foundation.
Pokud chcete spustit ukázku v konfiguraci mezi počítači, postupujte podle pokynů v Pokyny pro spuštění ukázek Windows Communication Foundation.
Když se zobrazí okno klienta, zadejte "Sample.txt". V adresáři byste měli najít kopii Sample.txt.
Ukázková služba WSStreamedHttpBinding
Ukázková služba, která používá WSStreamedHttpBinding, se nachází v podadresáři služby. Implementace OperationContract používá MemoryStream k prvnímu načtení všech dat z příchozího proudu, než vrátí MemoryStream. Ukázkovou službu hostuje Internetová informační služba (IIS).
[ServiceContract]
public interface IStreamedEchoService
{
[OperationContract]
Stream Echo(Stream data);
}
public class StreamedEchoService : IStreamedEchoService
{
public Stream Echo(Stream data)
{
MemoryStream dataStorage = new MemoryStream();
byte[] byteArray = new byte[8192];
int bytesRead = data.Read(byteArray, 0, 8192);
while (bytesRead > 0)
{
dataStorage.Write(byteArray, 0, bytesRead);
bytesRead = data.Read(byteArray, 0, 8192);
}
data.Close();
dataStorage.Seek(0, SeekOrigin.Begin);
return dataStorage;
}
}
Ukázkový klient WSStreamedHttpBinding
Klient, který se používá k interakci se službou pomocí WSStreamedHttpBinding , se nachází v podadresáři klienta. Vzhledem k tomu, že certifikát použitý v této ukázce je testovací certifikát vytvořený pomocí Makecert.exe, zobrazí se výstraha zabezpečení při pokusu o přístup k adrese HTTPS v prohlížeči, například https://localhost/servicemodelsamples/service.svc. Aby klient WCF mohl pracovat s testovacím certifikátem, byl do klienta přidán další kód, který potlačí výstrahu zabezpečení. Kód a doprovodná třída nejsou při použití produkčních certifikátů vyžadovány.
// WARNING: This code is only required for test certificates such as those created by makecert. It is
// not recommended for production code.
PermissiveCertificatePolicy.Enact("CN=ServiceModelSamples-HTTPS-Server");