基本看網上例子服務都是如下開啟方式 簡單服務類CalculatorService
using (ServiceHost host = new ServiceHost(typeof(CalculatorService)))
{
host.Opened += (s, e) => Console.WriteLine("service is running...");
host.Open();
//Console.ReadLine();
}
初學WCF,可能是概念搞錯了,但也沒心思沉下去翻大頭書。我想知道 這個CalculatorService 類如何傳引數進去。
public class CalculatorService:ICalculator
{
public double Add(double x, double y)
{
return x + y;
}
//我想在這里寫個驗證函式
//定義一個變數 clients=new list<clientinfo>
// 這個clients 如果不在類里面定義,那么如何傳參進來,如果在類里面定義,又如何被外部參考? 除了靜態變數
public bool verify(string pass )
{ 對 clients 進行操作 }
}
譬如說我想建立一個客戶串列物件 list<clientinfo>(非靜態)來做密碼驗證
這個客戶串列如果建在CalculatorService 類里面,我如何取出來?又如果我建立在外面,又如何傳遞進去被CalculatorService類所參考?
=================另外
由CALLBACK 引發的客戶端訊息,可以直接messagebox,也可以直接寫控制臺訊息,但如何把這個訊息給發送到前臺form? 我在網上翻到個例子,竟然是用sendmessage API來做,有其他辦法么?
5: class CalculateCallback:ICallback
6: {
7:
8: public void DisplayResult(double x, double y, double result)
9: {
10: Console.WriteLine("x + y = {2} when x = {0} and y = {1}", x, y, result);
11: }
12: }
uj5u.com熱心網友回復:
不要看網上的,特別是有些所謂的“萬能服務”的博客不要看,實踐中你就會陷入泥潭。你應該至少學一本正規教程。
uj5u.com熱心網友回復:
實際上,像我這樣的,很多時候只是為了完成一個小案例,也許只是卡在一個概念上而已。我的目的也不在成為一個專家,上網的目的就是為了求知,網上大多WCF例子都沒有點出我的疑問。也困擾了好幾天了,所以才來求助。

uj5u.com熱心網友回復:
蛋疼,感覺每次都是花了老久找不出答案,然后出分提問之后得到答案 切不到點子上。再然后繼續百度 自己找到答案。
問題其實不難,臨門一腳,費了我三天時間,竟然沒人知道,也是醉了。
服務端實作服務契約類的實體模式,有三種型別,分別為
PerCall-每次服務操作呼叫創建一次,呼叫完后進行銷毀;
PerSession-同一個會話期間創建一次,客戶端代理第一次操作(IsInitiating = true)呼叫創建,呼叫代理的Close方法銷毀或者呼叫IsTerminating服務操作銷毀;
Single-服務只會創建一次,服務開始時創建,服務完成時銷毀
這玩意兒寫在服務定義的頭部
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
class CalculatorService :ICalculator
{
。。。。。。。
}
然后,對服務的呼叫可以先實體化再呼叫。 用法就可以跟傳統SOCKET 一樣了。
CalculatorService myservice =new CalculatorService();
//myservice.引數 =任意引數;
//在這里可以寫EVENT
ServiceHost host = new ServiceHost(myservice);
host.open();
uj5u.com熱心網友回復:
應該是:[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]uj5u.com熱心網友回復:
大神推薦一本啊
uj5u.com熱心網友回復:
說得太對了@raynors,有時候就是這樣子,可能就是需要有人來點撥一下,那邊就一個單詞啊!uj5u.com熱心網友回復:
很簡單,將這個外部類生成的實體通過引數傳遞到 WCF 契約函式即可。前提是 WCF 契約需要參考這個外部類的定義。其實 WCF 是一種框架,不建議在契約中對實際應用的類定義進行參考,因為耦合機制方向反了(雖然網上千篇一律地這樣做)。另外 WCF 比較繁瑣,還有些小 bug,我們已經打算放棄這個框架了。至于如果將 callback 的資訊進行界面展示,請參考事件(或委托)處理機制。
uj5u.com熱心網友回復:
你問這些問題,不是技術問題,是你經驗不足導致的。其實你的問題蠻簡單的,就是記憶體資料如何布局。
但是你描述的,不一定是你想要的,所以大家很難回答你。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/172923.html
標籤:C#
上一篇:layui時間控制元件問題
