你不用懷疑,這是真的。筆者在2008年所寫的這本書,現在全部全文開放免費下載,而且沒有時限。
[ASP.NET][碎碎念] ASP.NET 問題解決實戰 全書開放電子檔 - 以及台灣技術書市的警訊
- 162957
- 0
- ASP.NET - Web Forms and Core Development
- 2021-11-04
你不用懷疑,這是真的。筆者在2008年所寫的這本書,現在全部全文開放免費下載,而且沒有時限。
最近看了一些文章,發現有些人對這三個模式似乎仍有些誤解,之前曾經有寫過一篇這樣的文章,這回就再深入一點討論它們的差別吧。
隨著 DDD 的崛起,愈來愈多人開始討論所謂的貧血模型 (Anemic Domain Model),然後就開始有人指責這樣的設計怎樣怎樣 (像是物件導向沒學好之類的),但是既然是一個流行已久的設計方式,事出必有因,先理解它是怎麼出現的再來評論或批判或許會比一股腦批判要好的多。
Delegate 和 Lambda 的概念在 2008 年就出來了,Delegate 更是最早最早 (.NET 1.0) 時就已經有的概念,隨著技術的演進,Lambda 讓 Delegate 變得更好使用也更容易發揮,但似乎有些人不這麼認為,所以我還是再講一些吧。
在四人幫 (GoF) 的設計模式 (Design Patterns) 一書中,最容易被用到的模式,非策略模式 (Strategy Pattern) 莫屬了,不過也就是因為它太容易被用到,它也是很容易被誤會的一種設計模式,特別是和多型 (Polymorphism) 的混淆。
因為最近分層架構的流行 (拜三隻豬之賜?),愈來愈多人談論起 Repository 的設計,也開始有人認為 Repository 無用,說實在的,Repository 有用於否,存乎一心,當你認為它有用時,隨手寫了它也不會覺得奇怪,但如果一開始就認為它是多餘的,就算人家給你程式產生器,你還是會認為它是多餘的。
昨天有個自稱 ASP.NET Web Form 界最強的大作者,寫了一篇文章,裡面說使用 Windows 驗證連線資料庫是最不建議的作法,但這只是凸顯該大作者一點都不懂資訊安全的其中一個點而己,殊不知他認為的最不建議的作法,卻是 Microsoft 官方最建議的作法。
在資料表結構 (table schema) 中,每個欄位除了基本的欄位名稱、型態、大小等資料外,有一個有趣的欄位很特別,就是是否允許 NULL,NULL 這個東西對程式設計師來說是又愛又恨,有時會被它搞得嫑嫑的,但是它有時卻又是一個有必要的存在。
晚期繫結是一種程式語言與作業系統的手法,用意在於避免因為編譯時期的型別檢查機制,導致程式員在編寫程式時,需要處理過多的型別資訊 (Type Information),晚期繫結可以有效的處理在平台之間型別資訊的隔離,讓編譯出來的程式可以在特定的平台之間執行,而不需要被型別資訊綁住,不過也不能過度濫用,除非原生平台就是要用晚期繫結 (例如 JavaScript)。
ASP.NET 5 改名為 ASP.NET Core 1 後,下一個 RC 版本 (RC2) 將會改成與 .NET Core 1 的 CLI (dotnet) 合併在一起使用,本文即是使用 dotnet CLI 的 Hello World 初體驗教學。
Build 2015 正在如火如荼的進行中,我在利用 Keynote 的期間寫下這篇文章,給大家一些令人激賞的新資訊,因為資訊很多,所以分不同部份來寫。
ASP.NET 5 正式將 Dependency Injection 的功能植入核心內,以提供開發人員與元件開發商更具彈性的 ASP.NET 5 基礎建設,MVC 6 內也利用了 Dependency Injection 的功能重新設計了 Controller 以及 View 的 Service Injection 能力,而未來 Dependency Injection 還有可能會更深入許多的 API,所以還不知道什麼是 Dependency Injection 的人,可要好好學它一下了。
ASP.NET 5 的核心架構,除了徹底拔除 System.Web 的相依之外,為了要讓它更小更快,微軟為 ASP.NET 5 發展了一個新的核心執行引擎,其專案代號為 Project K。
ASP.NET 5 在 Connect(); 研討會中正式定名,並且隨著 Visual Studio 2015 Preview 的版本釋出,雖然不像之前在試用 alpha 階段時的高度不確定性,但是 ASP.NET 5 畢竟是一個核心大幅改版的平台,因此它勢必會和我們平時使用的 ASP.NET 4.5 (或之前的版本) 有所不同,而且還是很大的不同。
Connect() 研討會在昨晚於 Channel 9 線上開幕,發表了數個 .NET 的未來走向,以及新工具的發表,其中最令人期待的當然就是 Visual Studio 2015,這個代號 VS 14 的新版開發工具,它除了持續性的功能演化外,另一個我們一直在關注的新平台:ASP.NET vNext,正式定名為 ASP.NET 5,這可不是 MVC 5,而是整個平台的版本,而 .NET Framework 本身也分為兩支,一支是原本的 .NET Framework,持續演化並維持與舊版本的相容性,版本號碼為 4.6;另一支則是全新的 .NET Framework,稱為 .NET "Core",這個版本是輕量化的 .NET Framework,所有組件都重新設計,擺脫與 .NET Framework 大多數核心組件的相依性,以作為 Cloud 平台的核心執行引擎,同時它也搭配了 .NET Native 等新一代的執行環境一起釋出,它也是首個正式進軍 Linux 與 Mac 的官方 .NET 平台。
.NET Framework 才剛宣佈 4.5.2 沒多久,隨即在 TechEd 2014 North America 上宣布 .NET Framework 的 vNext 版本,它也是 ASP.NET vNext 的核心,這次的 .NET vNext 倒不會看到在 BCL (Base Class Library) 上有多少改變,倒是為了配合微軟的新策略,大量引進 Open Source 的概念,將原本專屬於微軟的相關技術都開放,並且針對 Device 和 Cloud 的應用情境做專屬的最佳化,讓 .NET 在 Device 和 Cloud 都能獲得最佳表現,同時也讓 .NET 可以跨出 Windows 平台 (之前只有 Mono,微軟希望有更多的平台加入...
今年的 TechEd 2014 North America 可真是豐富又紮實啊,除了 Microsoft Azure 多了一堆新東西外,連 .NET Framework 以及 ASP.NET 也宣布了下一個新的未來版本 vNext,.NET Framework 的部份著重在新一代的編譯平台 (Compiler Platform) Roslyn,新一代的機器語言編譯器 .NET Native 以及新一代的即地編譯系統 RyuJIT。而針對 ASP.NET 的部份則是很恐怖的大幅改版,不是針對功能面,而是針對核心面...
Covert Redirect 是由新加坡南洋科技大學的博士生王靜 (Jing Wang) 所發現的,它是一個在 OAuth 2.0 與 Open ID 驗證之間的一個弱點 (vulnerability),有使用過 OAuth 協定的開發人員應該會有印象,就是 Web 應用要使用 OAuth 2.0 做驗證與授權時,都要給它一個 redirect_uri 的參數,作為接取 code 以作為二次驗證的網址,Covert Redirect 弱點就是利用這個機會來進行攻擊...
Visual Studio 2013 甫於 10/18 正式發行正式版本,且所屬的 Windows Azure SDK for .NET 及 Visual Studio Tools for Windows Azure Platform 2.2 也在隔約四五天後正式發行了,Visual Studio 2013 在 Web 端的重大改變之一就是 ASP.NET 的開發由過去的各自為政整合為單一入口,稱為 “One ASP.NET”,並且導入了一個新的身份識別框架:ASP.NET Identity...
點部落在前兩天出現了一個使用 ASP.NET Web API CORS 功能的分享文,文中提到了由 myget.org 下載 ASP.NET Webstack Prerelease 的套件,不過我在試的時候卻無法下載,原因和語系有關係,只是我試著將語系檔解除安裝,仍然無法解決問題,因此我換了一個角度思考,是不是因為整個 ASP.NET MVC 套件的關係,導致相依性無法完全切開...
LINQ 語法中有兩個很令人玩味的方法,一個是 Any(),另一個則是 Count(),Any() 的功能是判斷集合中是否有物件,Count() 則是用來計算集合中的物件數量,功能其實很像,以一般的使用習慣來說,我們多半會使用 Count() 來判斷集合中是否有物件,而且在大多數的情況下是沒問題的。
在此藉本文來感謝這本書的六位功力深厚的作者,也期待讀者能多加支持。
我們在前面一篇文章中使用了 ValuesController 這個預設的 API Controller,但畢竟它只是展示給你看 API Controller 要怎麼寫,所以這回我們要自己寫一個簡單的 Web API。
ASP.NET MVC 4.0 的其中一項新功能,就是 Web API,這項自 WCF Web API 衍生的產物,讓開發人員實作 REST-style Web Service 服務所需要的工作簡化很多,尤其是在現今 Modern Web Development 的時代,輕量化的 Web API 變成前端應用上,可以取代 Web Service 的重要技術。
這絕對是 ORM 的使用者,開發人員與 DBAs 共同想要問的議題,到底我使用了 ORM 和使用傳統的 ADO.NET 下 SQL 指令的方式會差多少? 這個問題不但會發生在 Entity Framework 上,也會發生在 NHibernate 等 ORM Framework 內,連同我自己在這個系列文中開發的 ORM 機制也會受到影響...
ORM 原理前面8集中己經講述了基本的ORM核心內的運作方式,大多數的ORM其實都是這麼做,當然還會做一些更進一步的最佳化工作,例如產生SQL的方式等。不過既然都是寫程式的,當然會希望這些對應欄位的設定工作可以完全的程式化 (Coded Map),而不用再假手那麼多的設定檔。
其實這種 DataReader vs. DataAdapter 的文己經夠多了,隨便 Google 一下就能看到一堆,以往我們接收到的訊息都是 DataReader 會比 DataAdapter 要快,這個說法在早期的 .NET 版本應該適用,不過在較新的 Framework 版本可就不一定適用了。
在前一個範例中,我們己經實作出來一個簡單的應用程式,而這次我們要來展示 SignalR 的另一個功能:由伺服端呼叫用戶端的 JavaScript 指令碼的功能,而這個功能的要求必須是要實作成 Hub 的模式,因此我們可以順便看到如何實作 Hub 類型的 SignalR 應用程式。
SignalR 是一個使用上並不困難的 Framework,而在 Visual Studio 上使用更容易,透過 NuGet 的功能,我們可以很容易的整合 SignalR 到專案內,只要在 Package Manager Console 中使用一個指令就能自動安裝與整合 SignalR 與相依的組件到專案內。