MessageEncoder Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Kodlayıcı, bir akışa ileti yazmak ve bir akıştan gelen iletileri okumak için kullanılan bileşendir.
public ref class MessageEncoder abstract
public abstract class MessageEncoder
type MessageEncoder = class
Public MustInherit Class MessageEncoder
- Devralma
-
MessageEncoder
Örnekler
Aşağıdaki kod, öğesinden türetilen bir sınıf örneğini MessageEncodergösterir.
public class CustomTextMessageEncoder : MessageEncoder
{
private CustomTextMessageEncoderFactory factory;
private XmlWriterSettings writerSettings;
private string contentType;
public CustomTextMessageEncoder(CustomTextMessageEncoderFactory factory)
{
this.factory = factory;
this.writerSettings = new XmlWriterSettings();
this.writerSettings.Encoding = Encoding.GetEncoding(factory.CharSet);
this.contentType = string.Format("{0}; charset={1}",
this.factory.MediaType, this.writerSettings.Encoding.HeaderName);
}
public override string ContentType
{
get
{
return this.contentType;
}
}
public override string MediaType
{
get
{
return factory.MediaType;
}
}
public override MessageVersion MessageVersion
{
get
{
return this.factory.MessageVersion;
}
}
public override bool IsContentTypeSupported(string contentType)
{
if (base.IsContentTypeSupported(contentType))
{
return true;
}
if (contentType.Length == this.MediaType.Length)
{
return contentType.Equals(this.MediaType, StringComparison.OrdinalIgnoreCase);
}
else
{
if (contentType.StartsWith(this.MediaType, StringComparison.OrdinalIgnoreCase)
&& (contentType[this.MediaType.Length] == ';'))
{
return true;
}
}
return false;
}
public override Message ReadMessage(ArraySegment<byte> buffer, BufferManager bufferManager, string contentType)
{
byte[] msgContents = new byte[buffer.Count];
Array.Copy(buffer.Array, buffer.Offset, msgContents, 0, msgContents.Length);
bufferManager.ReturnBuffer(buffer.Array);
MemoryStream stream = new MemoryStream(msgContents);
return ReadMessage(stream, int.MaxValue);
}
public override Message ReadMessage(Stream stream, int maxSizeOfHeaders, string contentType)
{
XmlReader reader = XmlReader.Create(stream);
return Message.CreateMessage(reader, maxSizeOfHeaders, this.MessageVersion);
}
public override ArraySegment<byte> WriteMessage(Message message, int maxMessageSize, BufferManager bufferManager, int messageOffset)
{
MemoryStream stream = new MemoryStream();
XmlWriter writer = XmlWriter.Create(stream, this.writerSettings);
message.WriteMessage(writer);
writer.Close();
byte[] messageBytes = stream.GetBuffer();
int messageLength = (int)stream.Position;
stream.Close();
int totalLength = messageLength + messageOffset;
byte[] totalBytes = bufferManager.TakeBuffer(totalLength);
Array.Copy(messageBytes, 0, totalBytes, messageOffset, messageLength);
ArraySegment<byte> byteArray = new ArraySegment<byte>(totalBytes, messageOffset, messageLength);
return byteArray;
}
public override void WriteMessage(Message message, Stream stream)
{
XmlWriter writer = XmlWriter.Create(stream, this.writerSettings);
message.WriteMessage(writer);
writer.Close();
}
Açıklamalar
MessageEncoder , Çok Amaçlı İnternet Posta Uzantıları (MIME) içerik türünü ve ileti sürümünü destekleyen uygulamalar sağlayan ve iletilerin bu içerik türüne göre seri hale getirilmesi ve seri durumdan çıkarılması için arabirimini tanımlayan bir temel sınıftır. Kendi özel kodlayıcınızı yazmak için temel sınıf olarak kullanın.
Özel ileti kodlayıcı uygulamak istiyorsanız bu sınıfı kullanın. Kendi özel ileti kodlayıcınızı uygulamak için aşağıdaki soyut temel sınıfların özel uygulamalarını sağlamanız gerekir:
Özel Encoder örneğinizi döndürmek için MessageEncoder'ı geçersiz kılın. Ardından bu fabrikanın bir örneğini döndürmek için yöntemini geçersiz kılarak CreateMessageEncoderFactory hizmeti veya istemciyi yapılandırmak için kullanılan bağlama öğesi yığınına özel MessageEncoderFactory bağlantı oluşturun.
Bir iletinin bellek içi gösterimi ile akışa yazılabilir BIR XML Bilgi Kümesi (Infoset) gösterimi arasında dönüştürme görevi, en yaygın olarak belirli XML kodlama türlerini destekleyen XML okuyucuları ve XML yazarları için bir fabrika görevi görür sınıfı içinde MessageEncoder kapsüllenmiştir.
üzerindeki MessageEncoder temel yöntemler ve ReadMessage'tirWriteMessage. WriteMessage bir Message nesneyi alır ve bir nesneye Stream yazar. ReadMessage bir Stream nesne ve üst bilgi boyutu üst bilgi üst bilgisi alır ve bir Message nesne döndürür.
Oluşturucular
| Name | Description |
|---|---|
| MessageEncoder() |
MessageEncoder sınıfının yeni bir örneğini başlatır. |
Özellikler
| Name | Description |
|---|---|
| ContentType |
Türetilmiş bir sınıfta geçersiz kılındığında, kodlayıcı tarafından kullanılan MIME içerik türünü alır. |
| MediaType |
Türetilmiş bir sınıfta geçersiz kılındığında, kodlayıcı tarafından kullanılan medya türü değerini alır. |
| MessageVersion |
Türetilmiş bir sınıfta geçersiz kılındığında, kodlayıcı tarafından kullanılan ileti sürümü değerini alır. |
Yöntemler
| Name | Description |
|---|---|
| BeginWriteMessage(Message, Stream, AsyncCallback, Object) |
İleti kodlayıcı için belirtilen ileti, akış, geri çağırma ve durum ile iletinin yazılarak başlatılmasını başlatır. |
| EndWriteMessage(IAsyncResult) |
İleti kodlayıcı için ileti yazmayı sonlandırır. |
| Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
| GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
| GetProperty<T>() |
Kanal yığınındaki uygun katmandan istenen, varsa, yazılan bir nesne döndürür. |
| GetType() |
Geçerli örneğin Type alır. (Devralındığı yer: Object) |
| IsContentTypeSupported(String) |
Belirtilen ileti düzeyi içerik türü değerinin ileti kodlayıcı tarafından desteklenip desteklenmediğini gösteren bir değer döndürür. |
| MemberwiseClone() |
Geçerli Objectbasit bir kopyasını oluşturur. (Devralındığı yer: Object) |
| ReadMessage(ArraySegment<Byte>, BufferManager, String) |
Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen bir akıştan bir ileti okur. |
| ReadMessage(ArraySegment<Byte>, BufferManager) |
Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen arabellekten bir ileti okur. |
| ReadMessage(Stream, Int32, String) |
Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen bir akıştan bir ileti okur. |
| ReadMessage(Stream, Int32) |
Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen bir akıştan bir ileti okur. |
| ReadMessageAsync(ArraySegment<Byte>, BufferManager, String) |
Kodlayıcı, bir akışa ileti yazmak ve bir akıştan gelen iletileri okumak için kullanılan bileşendir. |
| ReadMessageAsync(Stream, Int32, String) |
Kodlayıcı, bir akışa ileti yazmak ve bir akıştan gelen iletileri okumak için kullanılan bileşendir. |
| ToString() |
İleti kodlayıcı tarafından kullanılan içerik türünü döndürür. |
| WriteMessage(Message, Int32, BufferManager, Int32) |
Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen uzaklıktaki bayt dizisi arabelleğine belirtilen boyuttan küçük bir ileti yazar. |
| WriteMessage(Message, Int32, BufferManager) |
Bayt dizisi arabelleğine belirtilen boyuttan küçük bir ileti yazar. |
| WriteMessage(Message, Stream) |
Türetilmiş bir sınıfta geçersiz kılındığında, belirtilen bir akışa bir ileti yazar. |
| WriteMessageAsync(Message, Int32, BufferManager, Int32) |
Kodlayıcı, bir akışa ileti yazmak ve bir akıştan gelen iletileri okumak için kullanılan bileşendir. |
| WriteMessageAsync(Message, Stream) |
Kodlayıcı, bir akışa ileti yazmak ve bir akıştan gelen iletileri okumak için kullanılan bileşendir. |