與JIT 跳隻舞

在幾年前,我寫過一篇 Dynamic Proxies in C#,內容是透過Interface、Proxy的方式置換虛擬函式,這是許多Mock Library用的手法,事實上除了這個手段外,還有另一個可以達到類似效果的技巧,那就是透過JIT 引擎,用更粗暴的方式來置換IL Code,跟Dynamic Proxies手法不同的是這個方式是針對函式本身,可以影響到靜態與非虛擬函式。

...繼續閱讀 »

Batch Updating in Entity Framework in EF6

  多數的O/R Mapping Framework都有個共同的行為模式,在刪除資料或是修改資料前,必須隱式的下達一個Query,由資料庫取得即將要更新的資料列,然後轉成物件後再更新。  這個行為模式,多半也會成為設計師考慮是否使用O/R Mapping Framework的考量之一,因為多一個Query,就代表著效能會因此降低,雖然對於O/R Mapping Framework而言,這是一個必要的行為模式,因為它們得考量到當物件有著關聯時的情況。但對於實際的專案來說,跳過這個Query來更新資料,卻也是必然會出現的情況,既然是必然會出現的情況,多數的O/R Mapping Framework也只好為此做出讓步,提供可跳過Query來更新資料的機制,Entity Framework自然也擁有這個機制。

...繼續閱讀 »

The Windows Azure Toolkits – Integrated ACS with iOS、Windows Phone、Android and Windows 8

隨著Windows Azure Platform的發展,其支援的平台及語言也越來越多,行動裝置自然也是重點之一,從去年開始,Windows Azure Toolkit for Windows Phone率先推出,
緊接著for iOS與Android版本也釋出了。10個月後的今天,這些Windows Azure Toolkits隨著Windows Azure Platform的發展逐步演進

...繼續閱讀 »

談C# 編譯器編譯前的程式碼擴展行為

從2000年C#誕生以來,至今已經過了11年多了,C#的版本號也來到了4.0,在筆者所接觸的語言中,C#算是一個相當具有活力的程式語言,設計者Anders Hejlsberg的大膽且創新的特質充分的反映在這個語言上,

其每次的改版都會出現許多大膽的嘗試,目的是為了讓程式設計師能更快速、簡潔的運用C#來完成一些過去看來很複雜的動作,當然!所謂的大膽及創新的嘗試,通常也會引起正反兩面的意見。

本文列出一些C#中可以減少程式設計師撰寫程式碼數量的特色(語法、指令),其中有些是大家已經耳熟能詳的

...繼續閱讀 »

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之前

...繼續閱讀 »

Windows Phone 7.1 Overview – App Connect

在Windows Phone 7.1(Mango)中,將原本存在於7.0中的Photo Extension功能結合新的Searching Extension統稱為App Connect,透過App Connect,應用程式可整合至Windows Phone的Search及Photo功能內,以Photo來說,當使用者檢視圖片時可透過我們的應用程式進行圖片檢視或是上傳,在Search時,也可以透過我們應用程式對搜尋結果做進一步的動作、

...繼續閱讀 »

[WP7]Windows Phone 7.1 Overview (2) – Background Agents

雖然新的Executing Model加入Dormant讓Windows Phone應用程式進入類多工的模式,但其仍然不是真的完全多工,因為在我們固有印象中的多工,應該是應用程式於背景持續執行,也就是類似常駐程式一樣的效果。
而Dormant模式則是將應用程式暫止,此時該應用程式是被完全暫停,這與舊有印象中的常駐程式相距甚遠。
因此,Windows Phone 7.1加入了Background Agents機制,其細分為兩類,一個是Scheduled Notifications,用來撰寫Reminder(提醒)及Alarm(鬧鐘)類的應用程式,另一個是Scheduled Tasks,用來撰寫需要定時呼叫
的常駐程式,例如收集GPS資料或是於特定時間週期更新網路資料。

...繼續閱讀 »

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裡也很簡單。

...繼續閱讀 »