2013年4月28日 星期日

讓專案透過 NuGet 安裝 Enterprise Library 5.0 - Data Access Application Block

我想很多人看到文章標題之後一定都會說,這有什麼難的嗎?這值得寫一篇文章嗎?

再看一下文章標題,我要說的是「EntLib DAAB 5」而不是最近才剛發佈的「EntLib 6」,的確,在 Enterprise Library 6.0 Release 之前,這實在是不必專門寫一篇文章來說明,但就在 EntLib 6 正式發佈之後就有點不一樣了,還是有些事情要說明一下,不然一定會有很多人撞牆的。

 


2013年4月27日 星期六

ASP.NET MVC 4 使用 Unity bootstrapper for ASP.NET MVC

上上一篇分層架構系列文章「ASP.NET MVC 專案分層架構 Part.6 - DI/IoC 使用 Unity.MVC」 介紹了如何在一個 ASP.NET MVC 4 的分層架構專案中使用 Unity.MVC4 實作 DI/IoC,不管是 Unity.MVC3 or Unity.MVC4 都是使用了 Enterprise Library Unity Application Block 2.1 版 ( Unity.MVC3 為 2.1.505.0, Unity.MVC4 為 2.1.505.2 ),然而就在 2013-04-26 的時候 Enterprise Library 6.0 正式 Release 了,而 Unity Application Block 也進展到 3.0 版。

此次 EntLib 6.0 增加了兩個 Application Block,而既有的 Application Block 也有很多的更新功能,而其中一點就是 Unity Application Block 加強了對 ASP.NET MVC 與 ASP.NET Web API 的技術整合,另外也推出了自家官方的 ASP.NET MVC, ASP.NET Web API 整合組件,在 NuGet 就可以取得、安裝,這一篇就用之前分層架構的程式來介紹如何在 ASP.NET MVC 4 網站裡使用 Unity bootstrapper for ASP.NET MVC

 


2013年4月24日 星期三

Visual Studio 2008 增加 HTML5 與 CSS3 的支援

今天同事突然問起我這個問題,怎麼讓 VS2008 增加 HTML5 與 CSS3 的支援?

老實說,我聽到的時候是楞了一下,因為會以 VS2008 開發的專案是比較早期的,所以不會在早期的專案中使用到 HTML5 與 CSS3,而我自己的電腦早就沒有安裝 VS2008 了(公司的電腦裡還存在著 VS2003……),自己開發專案的時候初非必要,不然也都是選用 VS2012 為優先,VS2010 與 VS2012 都可以使用 HTML5、CSS3,在預設的情況下,VS2008 並沒有 HTML5、CSS3 可以使用,也不像 VS2010 or VS2012 有擴充功能可以增加通能套件,不過在 Google 上面搜尋一下相關的資訊,還蠻多篇是介紹如何解決這個問題,這邊就記錄一下怎麼讓 VS2008 增加 HTML5 與 CSS3 的支援。

 


2013年4月14日 星期日

ASP.NET MVC 專案分層架構 Part.6 - DI/IoC 使用 Unity.MVC

2014-12-02 補充說明:
這一系列的文章並不適合初階及中階的開發人員,如果你是程式開發的初學者或是 ASP.NET MVC 初學者,甚至是開發經驗少於兩年的開發人員,請馬上離開此篇文章。

隔了好長一段時間沒有接續這個系列的文章,現在直接從 DI/IoC  來繼續專案分層架構的主題,有關在專案裡實作 DI/IoC 的 Framework 有相當多,例如:Autofac, Castle Windsor, StructureMap, Ninject, Simple Injector, Enterprise Library Unity Application Block 等,其實還有很多的 Framework 可以使用,但這邊並不是探討哪一種 Framework 的優劣,這些 DI/IoC Framework 都相當不錯而且也有很多人使用,在網路上也可以找到豐富的文件以及參考文章,而這篇文章則是使用「Unity.MVC4」。

DI:Dependency Injection 依賴注入.
IoC:Inversion of Control 控制反轉.

P.S.
其他 DI/IoC Framework 的使用則會另開文章來做介紹,就不是隸屬於「分層架構」的分類中。

 


2013年4月13日 星期六

ASP.NET MVC 讓 jQuery Validation Plugin 動態切換顯示訊息語系

上一篇「改變 jQuery Validation Plugin 預設訊息的語言 (localization)」介紹了如何讓 ASP.NET MVC 網站內使用 DataType Attribute 的屬性於前端頁面驗證時可以顯示正體中文訊息,而非預設顯示的英文訊息,在該篇文章當中也提到了多語系的應用,所以這一篇就來說如何讓 ASP.NET MVC 於切換語系的時候也讓 jQuery Validation Plugin 的預設顯示訊息也隨著語系的切換來做改變。

P.S.
本篇並不會完全實作全網站的多語系資源設定(App_GlobalResources),先把關注點放在怎麼讓 jQuery Validation Plugin 的眼正顯示訊息可以隨著語系的切換而作變化。


改變 jQuery Validation Plugin 預設訊息的語言 (localization)

在點部落看到一篇有關於 ASP.NET MVC 的文章是說明怎麼讓 DataType.EmailAddress 的錯誤訊息顯示中文,作者將自己的發現與嘗試給寫出來並且讓大家分享,我十分認同這樣的作法,因為我自己也是這麼做的,各位看到的這個部落格裡的文章幾乎都是這樣的方式產生的,既然是研究與嘗試,那麼就一定會有一些錯誤或是可以再加強改善的地方,所以我也常常收到很多朋友給予我的任何回應,而藉由這樣的回應讓我得以了解我還有哪些的不足以及需要改進的地方。

再回到剛剛我所提到的那篇文章,我看到那篇文章的內容後,其實原先的作法也是可以,但是那樣的修改是種硬修改的方式,這樣的修改除非之後不會有任何因為更新版本或是其他原因而去影響,我盡量不會去對原本的第三方 JS 原始碼去做任何的變動,而我也知道 jQuery Validation Plugin 這樣的前端套件為了擴充性以及應用在多國語言環境上,所以是有提供各種語言的 Message 擴充文檔,讓有需要的人可以取用適合自己語系環境的文檔並應用在系統當中,其實這樣的作法在很多的前端套件中都有,有需要的話可以到這些前端套件的官方網站或是存放的 GitHub 網站裡去找找,而 jQuery Validation Plugin 有提供正體中文版的 Message 文檔,這些語言文檔也通常都是各國熱心網友所提供的,我以前也曾經提供正體中文的文檔給某個前端套件過。

又離題了,再回到剛剛我所提到的那篇文章,我看了那篇文章的作法後,我就回應了 jQuery Validation Plugin 的正體中文 Messages_zh_TW.js 給作者,而該文作者之後也做了一些修改,我這邊也分享一下我所做的應用方式,然後下一篇文章再介紹可以進階應用的方式給大家。

 


2013年4月10日 星期三

AutoMapper 的設定 (Configuration)

上一篇「使用 AutoMapper 處理類別之間的對映轉換」像各位說明在系統中可以使用 AutoMapper 來處理類別之間的轉換,例如:Entity Model to DTO, DTO to Entity Model, Entity Model to ViewModel, ViewModel to Entity Model … etc.

應該有人會覺得每次要使用 AutoMapper 處理類別轉換的時候總是要先建立類別轉換的設定,然後再執行轉換,如果同樣的類別轉換設定會在不同地方出現時,豈不是每次都要重複建立嗎?比如說以下的這個設定:

image

這一篇就跟大家說明如何處理 AutoMapper 的設定。

 


2013年4月5日 星期五

使用 AutoMapper 處理類別之間的對映轉換

以往使用傳統 ADO.NET 方式對資料庫存取資料時都會碰上資料對映的處理,這是指已經在系統中使用物件導向開發的情況(而沒有使用物件導向的程式中大多是不會遇到這個問題),當從資料庫取得資料後為了要對映到我們所定義的類別,如果沒有使用輔助方法的話,很多人都是乖乖地在程式中去將一筆筆的資料做迴圈處理,然後再一個欄位對映到類別指定的屬性,因為這樣一筆一筆地對映實在太花時間了,所以就有很多輔助方法的產生,有些人會自己寫,而我則是使用 Enterprise Library Data Access Application Block 裡的 RowMapper 方法,在我之前的文章也曾經介紹過,如下:

簡述 Oracle + Enterprise Library 5.0 Data Access Application Block 的操作
Entity Framework 與 Stored Procedure - 回傳多種資料集

而 Microsoft MVP - 91 也曾經發表了他所設計的 RowMapper 模組「[.NET]RowMapper模組」「[.NET]透過 T4 產生對應 DB table 的 entity」,都是用在資料與類別對映的處理上。

而到了完全以物件導向開發的時候,尤其是已經在專案中使用 ORM Solution,如:ADO.NET Entity Framework or nHibernate 等,大多都是資料庫的 Table 對映到專案的類別,這一段的對映處理不必由我們動手做,在大部分的專案開發上都是一個類別用到底,但有些專案開發時會因為需求而產生了 一些類別,這些類別的屬性可能來自不同的原生類別,而在 ASP.NET MVC 裡最常碰到的就是 ViewModel 類別,而處理這些類別的對映,又遇到上面我所描述過的狀況,如果沒有使用輔助方法的話,又需要一筆一筆資料去做對映,但只少比一般 ADO.NET 的對映處理已經是方便許多,而 AutoMapper 就是可以幫我們簡化這種類別之間的對映轉換處理,讓程式在處理時可以更加簡易也可以更加優雅些,也可以省下更多的開發時間;接著就來讓我簡單介紹怎麼使用 AutoMapper。

 


2013年4月4日 星期四

Sublime Text 2 - Find Function Definition 移到方法定義

會寫這篇的起因是這樣的,

image

Eclipse 並不是我的開發工具,所以我不清楚,不過對比到我主要的開發工具「Visual Studio」上面的功能,例如在 C# 程式中,在程式中對使用的方法或是變數按下 F12 或 Shift + F12 就可以移到定義或是找出哪些程式有使用變數或方法,VS2010 只能對 C# 或是其他 Server 端語言才能使用這樣的功能(或是安裝第三方工具後也會有這樣ˇ功能),而到了 VS2012 除了 Server 端語言有這樣的功能外,也開始支援在 Javascript 程式裡有這樣尋找定義的功能,在 Sublime Text 2 也是有類似的 Package「Find Function Definition」。

 


2013年4月2日 星期二

Telerik OpenAccess ORM 與 Stored Procedure - 回傳多種資料集

前幾篇文章都圍繞著 Entity Framework 與 Stored Procedure 打轉,而上一篇則是討論到回傳多資料結果時在 Entity Framework 的處理方式,最後我還是回歸到使用 ADO.NET 的方式來處理,雖然最後是有提到有一篇國外文章有說明可以去修改 EDMX 檔案內容讓 Entity Framework 可以直接處理 SP 所回傳的多資料結果,但去修改 EDMX 內容實在有太大的風險,而且算是一種非正式的處理方式,所以我選擇不採用。

而在網路上找尋相關解決方案的時候,我看到了 Telerik OpenAccess ORM 可以處理這種 SP 回傳多資料結果的方法,再加上 Telerik OpenAccess ORM 是免費的,而且設定與使用方式跟 Entity Framework 大致相同,在使用過 Telerik OpenAccess ORM 來解決這個處理後覺得有些案子是可以考慮使用它。

這一篇就從一開始在專案中加入使用 Telerik OpenAccess ORM,然後加入 Model 與 Stored Procedure,最後再使用 Telerik OpenAccess ORM 所提供方法來完成這個回傳多資料結果的處理。

 


提醒

千萬不要使用 Google Talk (Hangouts) 或 Facebook 及時通訊與我聯繫、提問,因為會掉訊息甚至我是過了好幾天之後才發現到你曾經傳給我訊息過,請多多使用「詢問與建議」(在左邊,就在左邊),另外比較深入的問題討論,或是有牽涉到你實作程式碼的內容,不適合在留言板裡留言討論,請務必使用「詢問與建議」功能(可以夾帶檔案),謝謝。