防堵SQL Injection

年前,一次全面性的SQL Injection攻擊,導致數千個網站受害,霎時間,讓所有人領教到看似方便的網路世界,也有其陰暗的一面。SQL Injection是一種著床於程式設計師的慣性及惰性上的害蟲,只要有程式設計師持續提供其養份

...繼續閱讀 »

The Windows Azure Role Startup Task



在Windows Azure所提供的Cloud Services服務裡主要分成兩種Role,一是許多人都熟知的Web Role,用於開發可Host於IIS的Web應用程式,例如ASP.NET及PHP等類。另一類是Worker Role,

用於開發不可Host於IIS的應用程式,例如自行開發的TCP Server或是Java/Node.js等類。

...繼續閱讀 »

ASP.NET 4.0 – Pre Application Start Method

在ASP.NET 4.0中,有一個很有趣的特色:Pre Application Start Method,原本在ASP.NET中,當應用程式起始時首先被呼叫的是Global.asax中的Application_Start函式,新增的Pre Application Start Method機制

則稍微改變了這個流程,當某個Assembly標示了PreApplicationStar Method Attribute後,ASP.NET會在應用程式起始時呼叫指定的函式,這個動作發生在Global.asax中的Application_Start之前

...繼續閱讀 »

The Framework Designing (4) – Abstract Data Layout


切出Data Layout,通常是一個資料庫應用程式最初、也是最重要的部分,或許有些初學者對此感到困惑,是的!你可以用SqlDataSource做出客戶資料的編修畫面,

但一旦牽扯到商業邏輯,SqlDataSource絕對不會是選項,硬要使用的話會成為負擔。

想像一下,當設計訂單編修畫面時,你可以使用SqlDataSource來呈現訂單表頭及表身的編輯動作,但儲存前後庫存的控管就一定得回到ADO.NET處理,這時商業

邏輯便會呈現出與UI混雜的窘境,整個應用程式也會變得難以維護。

...繼續閱讀 »

The Framework Designing (3) – Configurable Application

前一篇中,我們設計了GridViewHandler及FormViewHandler,讓商業邏輯可以由主程式中抽離,放置於外部來動態選擇要載入那些商業邏輯,就該例而言,這個設計除了將原本該

置於Data Layout的商業邏輯與UI扯上關聯外,其實並無其它設計較為不當之處,而將商業邏輯與UI扯上關聯這點,其實也是為了讓範例更加簡單易懂而特意設計的,要將這種設計

移置Data Layout裡也很簡單。

...繼續閱讀 »

The Framework Designing(2)- Writing Extensible Application

前一篇中,我們討論了Framework的觀念及設計時的注意事項,不過你我都明白,僅靠這些簡短的敘述,是不可能設計出Framework,更不用談實作部份了。

相對於撰寫應用程式,設計Framework通常需要更多的軟體架構及經驗,在看軟體架構的高度也與一般撰寫應用程式不同,通常設計Framework時,架構師必須要以很高的高度來看整個系統架構,然後逐步地往細節走,一開始,是看整棟大樓的位置,周邊,接著細看到每個房間的佈局,越往細節,所造出的限制就越多,這就是設計Framework的基礎觀念之一。

...繼續閱讀 »

The Framework Designing (1)

在2006年,我寫了一本[Windows Forms 框架設計實務],書中淺略的介紹了Framework,也就是框架的觀念及設計概念,時至今日,算算也過了將近5年之久了,現在的Framework與當年我所專注的Framework雖然有一些差異,但在設計及概念基礎上還是一樣的,本文目的在於重新介紹這些概念,也介紹一些當年沒有出現的Framework觀念。

...繼續閱讀 »

活用HTML Custom Attributes

近年來,在協助多家企業進行ASP.NET專案期間,我撰寫ASP.NET應用程式的風格有了相當大的轉變,以往,我總是以元件為出發點,
提供客戶簡單、易用的元件來解決他們的問題,效果雖然不錯,但對於技術能力較為不足的程式設計師來說,使用元件固然不成問題,
但了解元件的內部、進而掌握她們就有些困難了。
因此,我開始使用一種由來已久的技術,那就是HTML Custom Attributes。

...繼續閱讀 »