[C#.NET][WCF] 實作 單向 MSMQ @self-host for MsmqIntegrationBinding

[C#.NET][WCF] 實作 單向 MSMQ @self-host for MsmqIntegrationBinding

MsmqIntegrationBinding 是 WCF 提供的另一種 MSMQ 格式,它與 NetMsmq 的格式有很大的不同,基本上不能混用

費了點時間找出合約規則,其餘的用法就跟上一篇 http://www.dotblogs.com.tw/yc421206/archive/2013/10/23/125276.aspx 一樣了,不浪費太多篇幅,這裡只記載一些重點,有需要的人直接拉範例玩玩看

合約規範

1.要使用 ServiceKnownType

2.方法要定義 IsOneWay / Action 及 void

3.方法參數要使用 MsmqMessage<T>類別

 

範例如下:


[ServiceContract()]
[ServiceKnownType(typeof(User))]
public interface IProcessor
{
    [OperationContract(IsOneWay = true, Action = "*")]
    void SendUser(MsmqMessage<User> request);
}

 

 

SerializationFormat

因 MsmqIntegrationBinding 是透過序列化在處理資料交換

SNAGHTML18e0290

 

所以資料類別要定義正確的序列化特性,以本篇是以 Xml 為主


[DataContract]
[Serializable]
public class User
{
    [DataMember]
    public Guid ID { get; set; }

    [DataMember]
    public string Name { get; set; }

    [DataMember]
    public int Age { get; set; }

    public override string ToString()
    {
        return string.Format("ID: {0}, Name: {1}, Age: {2}", this.ID, this.Name, this.Age);
    }
}

端點位置

以 msmq.formatname: 為開頭

msmq.formatname:DIRECT=OS:.\private$\myQueue

 


文章出自:http://www.dotblogs.com.tw/yc421206/archive/2013/10/24/125478.aspx

飯粒下載:https://dotblogsfile.blob.core.windows.net/user/yc421206/1310/201310241740255.zip

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo