1
我想實現一個WCF服務,它允許兩個節點以對稱的方式在兩個方向上進行通信。特別是,這裏的要求:用於對稱通信的單個TCP連接
- 我不需要一個請求/回覆協議,但我需要異步回覆的回調;
- 必須在兩個節點之間建立單個TCP連接;
- 建立連接時,通信必須是對稱的(兩個節點中的每個節點都可以向另一個節點發送請求,兩個節點中的每個節點都可以接收來自另一個節點的回覆)。
因此,我認爲我應該使用NetTcpBinding並使用相同的接口爲服務和回調通過使用繼承。
interface ICommonInterface
{
void Request(string dataRequest);
void Reply(string dataReply);
void Disconnect(); // both nodes must be able to close the TCP connection
}
[ServiceContract(SessionMode = SessionMode.Required, CallbackContract = typeof(IMyServiceCallback))]
interface IMyService : ICommonInterface
{
[OperationContract(IsOneWay = true, IsInitiating = true, IsTerminating = false)]
void Connect();
[OperationContract(IsOneWay = true, IsInitiating = false, IsTerminating = false)]
void Request(string dataRequest);
[OperationContract(IsOneWay = true, IsInitiating = false, IsTerminating = false)]
void Reply(string dataReply);
[OperationContract(IsOneWay = true, IsInitiating = false, IsTerminating = true)]
void Disconnect();
}
interface IMyServiceCallback : ICommonInterface
{
[OperationContract(IsOneWay = true, IsInitiating = false, IsTerminating = false)]
void Request(string dataRequest);
[OperationContract(IsOneWay = true, IsInitiating = false, IsTerminating = false)]
void Reply(string dataReply);
[OperationContract(IsOneWay = true, IsInitiating = false, IsTerminating = true)]
void Disconnect();
}
請問這種實施方式有效嗎? 有更好的選擇嗎?
我忘了說我應該使用WCF。 – enzom83
啊..對不起,我不確定,因爲我沒有與它合作。我會投票你的問題。祝你好運 – Bengie