MsmqIntegrationBinding について学習しています。これまで見てきたすべてのサンプルとガイドラインは、1 つのデータ コントラクトで 1 つの操作しかないシナリオをカバーしていました。別の契約を追加しようとしましたが、サービスは正常に開始されました。ただし、2番目の操作に到達する方法がわかりません。このバインディングでもそのようなことは可能ですか?
[ServiceContract]
[ServiceKnownType(typeof(Data1))]
[ServiceKnownType(typeof(Data2))]
public interface ISampleService
{
[OperationContract(IsOneWay = true, Action = "*")]
void Operation1(MsmqMessage<Data1> msg);
[OperationContract(IsOneWay = true)]
void Operation2(MsmqMessage<Data2> msg);
}
public class SampleService : ISampleService
{
[OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
public void Operation1(MsmqMessage<Data1> msg)
{
var data = msg.Body;
}
[OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
public void Operation2(MsmqMessage<Data2> msg)
{
var data = msg.Body;
}
}
呼び出しコード
var queue = new MessageQueue(@".\private$\samplequeue");
var body = new Data1() { Data = "some data" };
var message = new Message(body);
message.Label = "some label";
queue.Send(body, MessageQueueTransactionType.Single);
これにより、Action が「*」に設定された Operation1 が起動されます。