[英]Share constants across each WCF call between Client and Server
在調用WCF服務之前,WCF客戶端會計算幾個整數常量。 我希望這些整數常量在WCF服務上可用。 請注意,我不希望將它們用作方法參數,因為無論服務中的方法如何,這些常量都是必需的。 每個方法都具有相同的參數將是多余的。
需要明確的是,客戶端在進行WCF服務調用之前會一直為“ a”和“ b”計算值。 撥打電話后,服務可以訪問整個通話中的“ a”和“ b”。 這類似於將它們用作方法的參數。 唯一的區別是WCF服務中的每種方法都需要“ a”和“ b”。 因此,我希望有一個更好的解決方案,而不是在WCF調用中為每個方法添加“ a”和“ b”作為參數。
因此,假設我在WCF服務中有3種方法->
void Count1()
void Count2()
void Count3()
客戶端將為每個WCF方法調用計算不同的'a'和'b'值。 一種解決方案是使方法保持這種格式。
void Count1(int a, int b)
void Count2(int a, int b)
void Count3(int a, int b)
但是,如果可能,我希望有一個更好的解決方案。
很抱歉這個長問題。
您可以為服務創建一個“請求”類作為數據合同,並在此請求中包括a
, b
以及您可能希望從客戶端獲取的任何其他值。 基本請求只能保留a
和b
,但其他請求也可以從中獲得。
這樣,您只為每種方法向服務發送一個參數。
對於WCF服務,這不是正常的模式,但是,您可以創建一個持續在客戶端持續時間的“粘性”服務類。 請注意, InstanceContextMode
設置為session,這意味着只要客戶端尚未斷開連接/放棄或沒有發生超時,此類實例將一直掛起(如果您的客戶端需要發送定期脈沖以使其保持喚醒狀態,不chat不休)。 另外,請注意ConcurrencyMode
。
[ServiceBehavior(Name = "MyStickyServicee",
InstanceContextMode = InstanceContextMode.PerSession,
ConcurrencyMode = ConcurrencyMode.Single)]
public class MyStickyService : IMyStickyService, IDisposable
{
}
這是有關在wcf中實例化的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.