2010-04-22

WCF-FaultException

這陣子在準備WCF的MCTS考試時,看了微軟發行的
[70-503 Microsoft .NET Framework 3.5 – Windows Communication Foundation]
這本書,說實在話,我看到後面第八章之後就有點看不下去
因為越看越模糊,完全不知道書中到底是在講些什麼??

尤其在這本書中提到FaultException的功能
並在書中寫下這樣的範例

   1:  [ServiceContract()]
   2:  public interface ICalculatorService
   3:  {
   4:  [OperationContract()]
   5:  [FaultContract(typeof(string))]
   6:  double Divide(double numerator, double denominator);
   7:  }
   8:  public class CalculatorService : ICalculatorService
   9:  {
  10:  public double Divide(double numerator, double denominator)
  11:  {
  12:  if (denominator == 0.0d)
  13:  {
  14:  string faultDetail = "You cannot divide by zero";
  15:  throw new FaultException<string>(faultDetail);
  16:  }
  17:  return numerator / denominator;
  18:  }
  19:  }

原本以為照這樣書中的練習,應該就可以看到結果,
結果沒想到程式出現了意外的錯誤狀況 >”<

image 

原因是甚麼?請教Google大神之後,我還是沒有找到解答,
(一方面可能是自己找的方向不對,所以就放棄)

事情就這樣結束了嗎? 不~~~這件事情還停在我腦海中,
反正我想總有一天應該會找到解答!!

之後我放棄微軟的Training kit轉而看
Professional WCF Programming - 作者:Scott Klein
書中反而說明的比較詳細,雖然對我來說還是有很多看不大懂的部分
其中又遇到FaultException說明

書中寫的範例跟Training Kit有點不大一樣,
是在FaultContract部分,多設定了ProtectionLevel

   1:      [OperationContract]
   2:      [FaultContract(typeof(MyDefFault),ProtectionLevel=ProtectionLevel.EncryptAndSign)]
   3:      string GetData(int value);

程式就可以Work了,先簡單寫到這,
等我看得比較熟悉清楚後,再來補充這部分。

最近的想法

很久沒更新這裡的網誌,算是自己偷懶偷很大。。。
因為已經隔了超長的一段時間,
所以決定長話短說,簡單列幾個項目說明重新開始寫這裡網誌的理由。

1.工作上的經驗還是得有個記錄。
2.督促自己成長的動力。
3.證明自己走過了哪些路,做了哪些事情,不希望到頭來都是白工。
4.為了更長遠的目標。

----------分隔線----------------------

今年有個目標 - 希望十月底前能拿到
MCPD -Enterprise Application Developer 3.5

會有這樣的想法,或許多多少少因為現在工作的關係,
最近常在想自己,已經在程式Coding中打混了三年多的時間,
到底會了些什麼?
說實在我真的也很難說明,可是平常很努力的完成很多事情,
但到現在卻說不清楚到底做了甚麼,也都沒留下甚麼記錄!
總覺得很可惜。。。

我希望接下來的日子裡,一定要花點時間來維護這裡,
希望自己千萬不要偷懶。。。
也期望自己能多多加油才行!!

2009-08-12

感想-收拾殘局

要求自己一定要做個紀錄,其實還滿難堅持的
當然,能都把所經歷過的事情
詳細記錄下來,這樣是最好的,但事實卻不是那樣的稱心如意

今天,我想寫一些想法
寫程式也寫了一陣子了,不算長、也不算短的時間
常常會面臨到要去看別人程式
去維護"前人"寫的程式

好的程式,你一眼就可以很一目暸然
詳細的註解、功能清楚的劃分、物件導向的設計
以及最重要的一點[每段程式碼都是簡短的!]
今天,若是將幾百行程式碼放在你的面前
你要怎麼看?

正常來說,你必須從頭看到尾
所以會演變到你若要更動其中的程式
情況好,只要更動一小部份就好
但是萬一整個邏輯更動
就會發生[牽一髮而動全身]的窘境
聽到我這樣說,曾碰過這樣情形的人
應該已經會心一笑了!!
接下來你就會發現,你不是在維護程式
而是在重寫程式。。。

現在我寫程式都是掌握幾個要點
1.用物件的觀念來思考架構,但不急著動手去Coding,
詳細考慮過後,才會著手進行。
2.程式碼區段不超過30行以上,若是過長的程式區段
,會想辦法再抽離出來。
3.註解盡量詳細,若是Method的參數已經很明瞭
,就不需要註解。
4.要設想未來可能所發生的問題,
你無法實際掌握可能發生的情況,但你可以設法去猜測。
5.要愛用Namespace,程式碼中也多用region。
6.….等

會有這樣的想法,是因為今天我正在重寫
某位仁兄的程式碼,他的一個Method區段
就快300多行。。
他的程式碼是長這樣的

//Step1
....程式碼
//Step2
....程式碼
//Step3
....程式碼
//Step4
....程式碼
//Step5
....程式碼
//Step6
....程式碼
//Step7
....程式碼

看到這,是否已經可以體會我心中想說的?