其實這個系統也是接了一段時間了,不過因為太忙的關係,說實在都沒有空做。最近因為火燒屁股了,只得硬著頭皮做下去。這段期間內大部分是溝通、流程設計、與程式的苦工。學到不少東西,特別來記錄一下,並且隨時更新。
1. Web Services的asmx頁內容處理:因為寫這個系統的時候,說實在是沒有什麼Spec的(那時候是說某人要設計寫Spec,我要來寫Code的耶,淚),也就是隨時開發,隨時測試,隨時修改。當然開發人員只有我一人的狀態下,文件是不太可能產生的。所以asmx說明頁的內容就變成一開始跟使用者溝通的橋樑。例如下面的東西要如何產生?
這時候可以用WebService與WebMethod的Attribute Name與Description 來做修改,如下:
1 | [ ] |
2. 如何知道呼叫Web Services的IP:這個系統需要鎖對方的IP,因此要取得IP,再跟資料庫的權限比對,就可以知道要不要讓他用了,取得IP的方法如下:
1 | string AccessIP = HttpContext.Current.Request.UserHostAddress; |
3. String太長可以用@來分段,不用辛辛苦苦的用+來自己斷行了:這個Web Services用到大量的資料庫處理,通常那些SQL語法都是落落長,加上一些參數以後,就更長了。如果用@就省去自己斷行的麻煩。
1 | //原來的方法 |
4. 新增一筆資料,想知道他的Index(Ident Insert):在新增完以後,使用SQL的IDENT_CURRENT變數,看看現在的計數值。
1 | sqlcmd.CommandText = "SELECT IDENT_CURRENT('OrderMasterTable')"; |
2010/6/5補充:PTT C_Sharp的blestadsl推文,有不錯的作法。
1 | sqlcmd.CommandText = "INSERT INTO ....; SELECT SCOPE_IDENTITY()"; |
5. DataSet的後製整理:這個Web Services提供了取出資料集的方法,但是因為使用的系統很多,大家想要的Query方法也不一樣,因此只好先停住搜尋條件,請各應用系統取回資料集以後,自己在做處理(To Lisa,真的不是我不想幫你們做,是因為這個是整合平台,而且…我已經快做不完了,淚)。處理的方法是先把DataSet裡的Table轉成DataView,再用DataView.RowFilter去設定篩選條件,最後再看需要綁定在可綁定的東西上面。
1 | MTNetPGWS.MTNet小額支付平台WebServices MTPGNS = new MTNetPGWS.MTNet小額支付平台WebServices(); |
待續…