Я думаю, что вы не совсем «понимаете» идею WCF по сравнению с MSMQ.
При использовании WCF с netMsmqBinding вся идея в том, что вам не нужно разбираться с деталями MSMQ - пусть среда выполнения WCF справится с этим!
Таким образом, ваш подход должен быть таким же, как и для любой службы WCF:
- определить ваш контракт на обслуживание и его методы (контракт на эксплуатацию)
- определите ваши структуры данных как
[DataContract]
и используйте их в ваших сервисных методах
- внедрить услугу
Так что ваш сервис должен быть примерно таким:
[DataContract]
public class Customer
{
[DataMember]
public int ID { get; set; }
[DataMember]
public string Name { get; set; }
...
}
[ServiceContract]
public interface ICustomerService
{
[OperationContract(IsOneWay=true)]
void SaveCustomer(Customer myCustomer)
[OperationContract(IsOneWay=true)]
void CreateCustomer(int ID, string name);
}
У вас должен быть контракт на данные, чтобы описать ваши данные - просто ваши данные, здесь не нужно никаких подробностей MSMQ! Тогда у вас должен быть один набор сервисных методов, которые будут работать с объектом Customer
- вы можете поместить его в очередь для хранения, создать новый и т. Д.
Затем вы реализуете клиентскую и серверную стороны для этого контракта на обслуживание, и среда выполнения WCF будет обрабатывать все детали транспорта MSMQ, помещая полезную нагрузку (объект Customer
) в сообщение MSMQ и возвращая его обратно. снова и так далее ... вам не нужно иметь дело с этим, на самом деле.