簡體   English   中英

在客戶端和服務器之間的每個WCF調用之間共享常量

[英]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)

但是,如果可能,我希望有一個更好的解決方案。

很抱歉這個長問題。

您可以為服務創建一個“請求”類作為數據合同,並在此請求中包括ab以及您可能希望從客戶端獲取的任何其他值。 基本請求只能保留ab ,但其他請求也可以從中獲得。
這樣,您只為每種方法向服務發送一個參數。

對於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM