Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
WSStreamedHttpBinding örneği, HTTP aktarımı kullanıldığında akış senaryolarını desteklemek için tasarlanmış bir bağlamanın nasıl oluşturulacağını gösterir.
Uyarı
Bu örnek için kurulum yordamı ve derleme yönergeleri bu konunun sonunda yer alır.
Yeni bir standart bağlama oluşturma ve yapılandırma adımları aşağıdaki gibidir.
Yeni bir standart bağlama oluşturma
TemelHttpBinding ve netTcpBinding gibi Windows Communication Foundation'daki (WCF) standart bağlamalar, temel alınan aktarımları ve kanal yığınını belirli gereksinimler için yapılandırmaktadır. Bu örnekte
WSStreamedHttpBindingkanal yığınını akışı destekleyecek şekilde yapılandırır. Her iki özellik de akış tarafından desteklenmediğinden, kanal yığınına varsayılan olarak WS-Security ve güvenilir mesajlaşma eklenmez. Yeni bağlama,WSStreamedHttpBindingsınıfından türetilen Binding sınıfı içinde uygulanır. şuWSStreamedHttpBindingbağlama öğelerini içerir: HttpTransportBindingElement, HttpsTransportBindingElement, TransactionFlowBindingElementve TextMessageEncodingBindingElement. sınıfı, aşağıdaki örnek kodda gösterildiği gibi sonuçta elde edilen bağlama yığınını yapılandırmak için birCreateBindingElements()yöntem sağlar.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(); }Yapılandırma desteği ekleme
Yapılandırma aracılığıyla taşımayı kullanıma açmak için örnek iki sınıf daha uygular:
WSStreamedHttpBindingConfigurationElementveWSStreamedHttpBindingSection.WSStreamedHttpBindingSectionsınıfı, StandardBindingCollectionElement<TStandardBinding,TBindingConfiguration> olupWSStreamedHttpBinding'yi WCF yapılandırma sistemine sunar. Uygulamanın büyük bir kısmı,WSStreamedHttpBindingConfigurationElement'dan türetilen StandardBindingElement öğesine devredilir. SınıfWSStreamedHttpBindingConfigurationElement,WSStreamedHttpBinding'nın özelliklerine karşılık gelen özelliklere ve her yapılandırma öğesini bir bağlamaya eşlemek için işlevlere sahiptir.Hizmetin yapılandırma dosyasına aşağıdaki bölümü ekleyerek işleyiciyi yapılandırma sistemine kaydedin.
<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>Ardından işleyiciye serviceModel yapılandırma bölümünden başvurulabilir.
<configuration> <system.serviceModel> <client> <endpoint address="https://localhost/servicemodelsamples/service.svc" bindingConfiguration="Binding" binding="wsStreamedHttpBinding" contract="Microsoft.ServiceModel.Samples.IStreamedEchoService"/> </client> </system.serviceModel> </configuration>
Örneği ayarlamak, derlemek ve çalıştırmak için
Aşağıdaki komutu kullanarak ASP.NET 4.0'ı yükleyin.
%windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enableWindows Communication Foundation Örnekleri içinOne-Time Kurulum Yordamı'nda listelenen adımları gerçekleştirdiğinizden emin olun.
Internet Information Services (IIS) Sunucu Sertifikası Yükleme Yönergelerini gerçekleştirdiğinizden emin olun.
Çözümü oluşturmak için Windows Communication Foundation Örnekleri Oluşturma başlığındaki yönergeleri izleyin.
Örneği makineler arası yapılandırmada çalıştırmak için Windows Communication Foundation Örneklerini Çalıştırma başlığındaki yönergeleri izleyin.
İstemci penceresi görüntülendiğinde, "Sample.txt" yazın. Dizininizde "Sample.txtkopyası" bulunmalıdır.
WSStreamedHttpBinding Örnek Hizmeti
kullanan WSStreamedHttpBinding örnek hizmet, hizmet alt dizininde bulunur. Uygulamanın OperationContract kullanımı, MemoryStream döndürmeden önce gelen akıştan tüm verileri almak için öncelikle bir MemoryStream kullanır. Örnek hizmet, Internet Information Services (IIS) tarafından barındırılır.
[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;
}
}
WSStreamedHttpBinding Örnek İstemcisi
kullanarak WSStreamedHttpBinding hizmetle etkileşime geçmek için kullanılan istemci, istemci alt dizininde bulunur. Bu örnekte kullanılan sertifika Makecert.exeile oluşturulmuş bir test sertifikası olduğundan, tarayıcınızda gibi https://localhost/servicemodelsamples/service.svcbir HTTPS adresine erişmeye çalıştığınızda bir güvenlik uyarısı görüntülenir. WCF istemcisinin yerinde bir test sertifikasıyla çalışmasına izin vermek için, güvenlik uyarısını engellemek için istemciye bazı ek kodlar eklenmiştir. Üretim sertifikaları kullanılırken kod ve eşlik eden sınıf gerekli değildir.
// 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");