HOW TO:建立單向合約
本主題說明的基本步驟可用來建立使用單向合約的方法。此類方法會從用戶端叫用 Windows Communication Foundation (WCF) 服務上的作業,但是不會期待收到回覆。例如,您可以使用此合約類型,將通知發行給許多訂閱者。您也可以在建立雙工 (雙向) 合約時使用單向合約,以供用戶端與伺服器彼此各自進行通訊,並方便任何一方初始化對另一方的呼叫。這麼做可以特別允許伺服器對用戶端進行單向呼叫,而用戶端會將此呼叫視為事件。如需指定單向方法的詳細資訊,請參閱 IsOneWay 屬性與 OperationContractAttribute 類別。
如需詳細資訊為雙工合約建立用戶端應用程式的詳細資訊,請參閱 HOW TO:使用單向和要求-回覆合約來存取 WCF 服務。如需實用範例,請參閱單向。
若要建立單向合約
將 ServiceContractAttribute 類別套用至用來定義服務要實作之方法的介面,以建立服務合約。
指出介面中可供用戶端叫用的方法,方法是將 OperationContractAttribute 類別套用到這些方法上。
將 IsOneWay 屬性設為 true,以便將不得包含輸出的作業 (沒有傳回值,也沒有 out 或 ref 參數) 指定為單向。請注意,帶有 OperationContractAttribute 類別的作業預設都會滿足要求-回覆合約,因為 IsOneWay 屬性會預設為 false。因此如果您希望方法使用單向合約,就必須明確地將屬性值指定為 true。
範例
下列程式碼範例定義包含數個單向方法的服務合約。所有的方法都具有單向合約,除了 Equals 以外,因為它會預設為要求-回覆,並傳回結果。
<ServiceContract(Namespace:="http://Microsoft.ServiceModel.Samples", SessionMode:=SessionMode.Required)> _
Public Interface ICalculatorSession
<OperationContract(IsOneWay:=True)> _
Sub Clear()
<OperationContract(IsOneWay:=True)> _
Sub AddTo(ByVal n As Double)
<OperationContract(IsOneWay:=True)> _
Sub SubtractFrom(ByVal n As Double)
<OperationContract(IsOneWay:=True)> _
Sub MultiplyBy(ByVal n As Double)
<OperationContract(IsOneWay:=True)> _
Sub DivideBy(ByVal n As Double)
<OperationContract()> _
Function Equal() As Double
End Interface
[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples", SessionMode=SessionMode.Required)]
public interface ICalculatorSession
{
[OperationContract(IsOneWay=true)]
void Clear();
[OperationContract(IsOneWay = true)]
void AddTo(double n);
[OperationContract(IsOneWay = true)]
void SubtractFrom(double n);
[OperationContract(IsOneWay = true)]
void MultiplyBy(double n);
[OperationContract(IsOneWay = true)]
void DivideBy(double n);
[OperationContract]
double Equals();
}
另請參閱
工作
HOW TO:定義 Windows Communication Foundation 服務合約
工作階段
HOW TO:建立雙工合約
參考
ServiceContractAttribute
OperationContractAttribute