Visual C# 2010 精要剖析
作者:呂高旭、周殷德
出版社:松崗
出版日期:2011年07月08日
語言:繁體中文 ISBN:9789572239223
PART I 基礎篇
l CH01 概觀
C# 是物件導向語言,支援 .NET 平台的應用程式開發,整個C# 語言架構於 .NET Framework 之上,本章將從 C# 程式語言以及 .NET Framework 概念開始,逐步探討相關的技術細節。
l CH02 C# 程式設計入門
從一支最簡單的應用程式開始,本章將陸續介紹C# 程式的組成架構以及各種語法元素,包含型別與運算子。
l CH03 流程控制與迴圈
本章討論程式執行流程控制的語法敘述,其中包含了決策與迭代敘述,決策敘述依據特定的條件決定所要執行的程式區塊,迭代則是一種重複執行特定程式區塊的迴圈敘述,除此之外,與流程控制有關的關鍵字,例如 continue、return 等等,本章亦一併討論。
l CH04 陣列
陣列是一種使用頻率相當高的資料結構,它是最簡單的集合,陣列有幾種不同的種類,本章將從一維陣列開始,陸續說明多維陣列、矩型陣列等不同類型的陣列,同時示範如何使用C# 操作陣列。
PART II 類別與物件導向程式設計篇
l CH05 方法、類別與物件
類別是C# 最重要的核心,亦是建構應用程式最主要的元素,.NET 類別庫提供了大量的功能類別,以支援各種類型的應用程式設計工作。本章針對類別的建立、組成與物件關係,進行詳細的說明,包含類別實作與內容成員的介紹,同時討論如何建構一個以上的類別。
l CH06 物件導向程式設計-繼承
物件導向程式設計是 C# 最重要的基石,亦是相當複雜的議題,本章為讀者作了最精闢完整的入門介紹,建立運用相關技術所需的基礎。
l CH07 物件導向程式設計-抽象類別與介面
這一章的內容繼續討論兩種與類別有關的特殊型別,抽象類別與介面,抽象類別是一種只實作部份內容的類別,它主要的功能在於提供未來新類別設計所需的共同樣版,而介面則是只包含定義,沒有任何實作內容,它本身提供新類別的設計架構。
l CH08 程式錯誤與例外處理機制
本章針對 C# 錯誤處理機制的語法進行了詳細的說明,同時討論了幾個重要的例外類別,相信讀者經過本章課程的洗禮,將可以具備運用例外處理機制的基礎能力。
PART III 視窗程式設計篇
l CH09 Windows 程式設計
本章討論視窗介面設計主題,針對 Windows Form 應用程式專案進行討論,包含表單物件的建立與相關的運用,同時一併說明建立互動式圖形介面最重要的關鍵議題-事件。
l CH10 控制項
控制項用來建構 Windows 應用程式視覺化介面內容的可視元件,例如按鈕、文字方塊以及下拉式選單等等,命名空間 System.Windows.Forms 提供了大量的控制項類別,定義支援各種特定功能的控制項,本章針對常見的控制項逐一作介紹。
PART IV .NET 平台應用程式開發篇
l CH11 應用程式常用類別庫
這一章介紹了幾組重要的類別與結構,讀者經由課程的講解可以體驗 .NET 平台內建類別庫的威力。
l CH12 檔案系統作業
本章首先介紹類別庫的 I/O 類別,依功能與其在繼承架構裡的位置,巡覽整個I/O 系統架構,除此之外同時說明如何透過 C# 引用這些類別,建構具 I/O 功能的應用程式。
l CH13 集合與資料處理
本章將從其中最基礎的 ICollection 介面開始,陸續介紹這些集合類別與介面的實際運用與操作。
l CH14 繪圖
本章討論 .NET 所提供的繪圖服務 GDI+,從最簡單的圖形開始,說明如何引用相關類別所提供的方法成員,繪製各種圖形,例如線條、曲線或是矩形等等,同時介紹色彩的運用與配置。
l CH15 網路程式設計
System.Net.Sockets 主要提供實作Socket 應用程式的相關類別,Sytem.Net 則包含開發網際網路功能所需的應用程式介面,本章討論這兩個命名空間所提供的相關類別功能,同時示範具備網路存取功能的應用程式實作。
l CH16 ADO.NET 與資料庫程式設計
這一章的內容主要提供最基本的概念,討論利用 C# 存取資料庫的基礎實作,未來當讀者想要成為一名真正的資料庫應用程式開發工程師,本章的課程將是一個很好的起點。
.NET 網路與 I/O 技術手冊 第二版
<內容簡介>
本書從基礎的 I/O 類別開始,逐步帶領讀者了解如何在.NET平台底下,運用其 I/O 功能,同時針對發展網路應用程式所需了解的相關技術(例如Socket與通訊協定等等),提供完整的說明。
最終的目的在於讓讀者能夠徹底掌握整個 .NET 平台的 I/O 架構,同時討論如何在這個基礎架構上面,發展具備網路功能的應用程式,無論學習.NET的目的為何,這本書所提供的內容,都是你發展.NET應用程式的過程當中,必須了解的重要進階課題。
<本書特色>
1.全新改版,特別加入了 Silverlight 的 I/O 與網路支援說明
2.提供了 Visual Basic 與 C# 等兩種語法,讀者可以選擇熟悉的語法閱讀以方便理解。
內容涵蓋發展.NET應用程式的過程當中,所必須了解的重要進階課題。
<章節目錄>
Ch1 I/O 與網路技術
本章從最單純的主控台開始,說明如何透過.NET 平台所支援的I/O功能,執行簡單的I/O作業,同時針對具備I/O 功能的相關類別、類別所屬的命名空間與繼承架構,進行概括性的說明,最後一併介紹提供跨越網路的資料存取功能類別。
Ch2 目錄作業
I/O 議題與目錄檔案的存取有很密切的關係,接下來這兩個章節,分別針對I/O命名空間當中,支援檔案目錄作業的相關類別,進行詳細的探討,同時說明如何利用這些類別,完成目錄功能的實作。
Ch3 檔案存取
從簡易的視覺化對話方塊、可程式化的File 以及FileInfo 類別,一直到檔案異動監控,.NET 針對檔案系統的管理維護作業提供了強大的支援,本章將逐一討論其中的各項細節,至於檔案內容的讀寫操作,請參考下一章「資料流與檔案讀寫」。
Ch4 資料流與檔案讀寫
資料流是.NET 實作I/O技術最重要的概念,System.IO命名空間裏的Stream 類別,封裝各種讀寫資料來源所需的資料流通用功能,同時也是所有位元組資料流類別的抽象基底類別,本章除了詳細探討Stream 類別,同時討論資料流讀寫與具備基本I/O功能的應用程式實作。
Ch5 再探資料流
延續前一章資料流的議題,持續討論Stream 類別底下所衍生的其他資料流類別,包含緩衝資料流、記憶體資料流等等,最後進一步針對資料流的相關主題,非同步I/O與隔離儲存區進行說明。
Ch6 文字資料處理
本章討論字元集的相關知識,並且探討使用於字元集編碼的類別,說明如何透過編碼進行文字與其他格式資料的轉換,同時進一步說明專門用以處理字元的I/O類別,包含TextReader、TextWriter 以及這兩個類別所衍生的子類別。
Ch7 資料壓縮與加密
本章討論兩個與資料流有關的特殊主題,資料壓縮與加密,在.NET平台上,它們同樣是以資料流的概念進行實作,因此除了特定的基礎知識,直接套用前述章節的資料流處理觀念,你就可以輕易的藉由本章所介紹的資料流類別,設計具有資料壓縮與加密功能的應用程式。
Ch8 Silverlight I/O 系統
到目前為止前七個章節討論了.NET平台的I/O系統與相關的功能類別,讀者亦建立了完整的資料流觀念,繼續討論接下來的網路議題之前,這一章我們要談談另外一個重要的平台– Silverlight 上的I/O 系統。
Ch9 網路程式設計
本章延續前半部所討論的I/O 資料流的概念,從基本的網路知識開始,說明如何透過相關類別的運用,開發網路應用程式。
Ch10 存取網路資訊
命名空間System.Net.NetworkInformation,提供用來取得諸如網路流量資料、網路位址資訊、偵測網路是否允許存取等相關功能的特定類別,你可以透過引用這個命名空間的類別,取得與網路有關的特定資訊。這一章我們將針對此命名空間的類別進行說明。另外我們也將針對「要求/ 回應」模型進行討論。
Ch11 Sockets 網路程式設計
Socket 概念被廣泛的運用在各種網路應用程式的設計當中,接下來連續兩個章節討論相關的議題。這一章從基礎的Socket觀念進行說明,討論命名空間System.Net.Sockets當中Socket的實作類別,並且提供相關的實作範例,下一章則延續Socket主題,進行更深入的探討。
Ch12 再探 Sockets
本章延續Sockets主題,探討與Sockets有關的應用,包含網路資料流與跨越網路的資料存取、非同步Sockets 應用等等,完成本章的課程,讀者對於Sockets將會有更深入的認識。
Ch13 電子郵件與FTP
接下來本章延續Socket技術主題,討論電子郵件與FTP等網路相關應用,這些服務架構於TCP 通訊協定的基礎之上,除了簡要的說明國際標準組織對於電子郵件以及FTP傳輸協定的相關規範,同時提供相關功能的開發示範說明。
Ch14 UDP 與多點傳送
UDP(User Datagram Protocol)與TCP同樣均屬於傳輸層的通訊協定,只是在資料傳輸的可靠性方面,UDP不似TCP般嚴謹,但是相對的在傳輸速度上,UDP卻具有較佳的優勢,某些特定的網路服務中,UDP扮演了相當重要的角色,本章對於UDP協定的應用以及UDP類別進行說明,同時一併探討運用UDP技術的相關網路服務,多點傳送。
Ch15 序列化
本章針對序列化技術的相關主題作說明,並且探討如何運用類別庫所提供的序列化類別,完成物件的分解與重組等相關的作業。
Ch16 Silverlight 網路程式設計
就如同I/O 功能,適用於Silverlight 的.NET Framework同樣提供相同的網路程式設計功能,相關的類別可以在System.Net、System.Net.Sockets等網路命名空間中找到,支援跨越網路的通訊與資料存取服務,包含資料的下載與遠端主機通訊,這一章我們將針對Silverlight此部份的功能進行完整的說明。
Entity Framework與LINQ開發實戰 預購
專為需要入門LINQ並進一步熟悉Entity Framework的開發人員所設計。
由於Entity Framework是透過LINQ來進行資料模型的存取,
為了協助開發人員擁有駕馭Entity Framework的能力,本書以系統化的解說方式,
從LINQ基礎開始,逐一檢視Entity Framework的各項技術細節。
■ 認識Entity Framework與LINQ
概要描述Entity Framework與LINQ技術的整體技術輪廓,以建立學習觀念。
首先聚焦於LINQ的討論,以便確認你能具備使用LINQ搜尋擷取資料物件的能力,
為將來運用Entity Framework打下良好的基礎。
■ LINQ to ADO .NET
儘管LINQ是以集合物件為基礎而發展出來的一種查詢技術,它同時針對ADO.NET提供相關的支援。
透過實體類別轉換資料庫架構,可避免資料庫開發人員撰寫存取底層資料來源的程式碼,
此種作法與 Entity Framework 類似,但比較單純,可做為進入Entity Framework之前的暖身。
■ Entity Framework的基礎
從資料模型的建立開始,逐步進入Entity Framework基礎的資料運算,
介紹LINQ與Entity Framework的整合,實作資料的搜尋及異動等相關功能。
■ 與Visual Studio的整合
介紹Visual Studio支援的Entity Framework 視覺化介面設計功能,
如資料繫結控制項等,同時涵蓋Windows Form與Web Form相關討論。
最後討論WCF與Entity Framework的整合應用,為將來發展大型應用程式奠定良好基礎。
作者簡介
呂高旭 Kao-Hsu
榮獲程式設計俱樂部網站《2007程式開發技術-網路影響力達人》,且獲得連續三屆微軟 MVP ,
擅長 C#、ASP.NET 等微軟 .NET 平台技術。
著作:
■ LINQ最佳實務講座
■ Silverlight:ASP.NET與AJAX開發實務
■ ASP.NET 商業級資料庫網站開發實務
■ ASP.NET應用程式開發-與AJAX共舞
■ .NET網路與I/O技術手冊
■ C# 2005精要剖析
康廷數位Blog : http://www.kangting.tw/
目錄
CH01 Entity Framework 與 LINQ 概觀
Part 1 LINQ to object
CH02 LINQ 與 C#
CH03 LINQ 與擴充方法
Part 2 LINQ to ADO.NET
CH04 LINQ to SQL
CH05 LINQ to DataSet
Part 3 Entity Framework
CH06 探索 Entity Framework
CH07 資料物件搜尋
CH08 資料物件編輯
CH09 視覺化介面設計整合
CH10 WCF服務與實體資料模型
附錄A Entity Framework 中英詞彙
附錄B Entity Framework命名空間與類別
附錄C切割實體資料模型專案
《逆引導式》商業應用程式開發指南作者:王啟源出版社:碁峰資訊出版日:2009/10/20ISBN:978986181792
新書簽名會 贈書活動 http://blog.xuite.net/keigen/books/27268981 (內有作者精彩介紹短片)http://www.blueshop.com.tw/board/show.asp?subcde=BRD200910140843552JK&fumcde=FUM200410061532262QU內容簡介軟體組裝工廠的模組化組裝手冊使用Visual Studio 2008、SQL Server 2008 Express、CSLA .NET Application Framework‧本書將商業應用程式的特徵歸納出11種模式,並針對該些模式設計出實作練習,每一個練習都可以視為一個獨立的執行單元,可以單獨演練並自行設定場景反復學習,以求達到技藝純熟,舉一反三之成效。‧練習、練習、再練習,是學習程式設計的不二法門。本書最後以一個實際的『人事薪資管理系統』串聯先前所學到的11種模式,期望讀者能再度由練習中,驗收學習成果。‧配合作者精心設計的專案範本、項目範本、程式碼片段,讓程式設計就像組裝積木一樣。‧標準化程式設計流程,簡化繁瑣的程式碼輸入動作,可將心力集中於構思應用程式的功能面上。‧使用者介面層、商業邏輯層、資料存取層完全分離的程式開發技巧,增加程式碼重複再利用。‧逆引導教學法:由案例需求出發,由上而下先確認學習目標,再由下而上逐步建構出所需的技巧。本書適合讀者:‧初學者,想從一開始就立下良好程式設計習慣的人‧學習完基礎程式設計,卻無法完整地設計出應用系統的人‧從不同的職場,想快速進入程式設計領域的人‧想為團隊找出一個協同程式開發模式,增進生產力的人讀者服務網址:http://blog.xuite.net/keigen/books目錄第一部分 做好準備立即出發第01章 導讀第02章 整備開發環境第03章 程式碼撰寫標準第04章 商業物件概述第二部分 商業物件設計範例第05章 使用者身份識別第06章 名稱鍵值清單第07章 可編輯根物件第08章 可編輯根物件清單第09章 動態根物件清單第10章 可編輯根父物件第11章 可切換物件第12章 唯讀根物件第13章 唯讀根物件清單第14章 唯讀根父物件第15章 命令物件第三部分 人事薪資管理系統實作第16章 使用者介面架構第17章 應用程式組裝第四部分 回首過去展望未來第18章 協同作業分工合作第19章 邁向系統分析、專案經理之路附錄 基礎操作
VB.Net 效能監視器運用 (數位儀表板)
可運用於 Win Form , 或 Web Form 監視 Web Server 或 IIS
' 匯入名稱空間 Imports System.Diagnostics Imports System.Management Public Class Form1 ' Processor Private Shared CPU_Core1 As PerformanceCounter = Nothing Private Shared CPU_Core2 As PerformanceCounter = Nothing ' Page File Private Shared PageFile_Usage As PerformanceCounter = Nothing Private Shared PageFile_UsagePeak As PerformanceCounter = Nothing ' My.Computer.Info Private Shared cptInfo As Devices.ComputerInfo = Nothing ' 查詢擷取管理物件 Private Shared Searcher As ManagementObjectSearcher = Nothing Private Shared TotPhyMem As UInt64 = 0 ' Total Physical Memory Private WithEvents tmr As New Timer ' Timer Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load ' 宣告並建立 "效能計數器元件" 類別 ' New PerformanceCounter(CategoryName,CounterName,InstanceName) ' CategoryName : 取得或設定這個效能計數器的效能計數器分類的名稱。 ' CounterName : 取得或設定與這個 PerformanceCounter 執行個體相關的效能計數器的名稱。 ' InstanceName : 取得或設定這個效能計數器的執行個體名稱。 ' 可用 Environment.ProcessorCount 取得 CPU Core 核心數量 ' Processor Core#0 核心1 CPU_Core1 = New PerformanceCounter("Processor", "% Processor Time", "0") ' Processor Core#1 核心2 CPU_Core2 = New PerformanceCounter("Processor", "% Processor Time", "1") ' 分頁檔 PageFile_Usage = New PerformanceCounter("Paging File", "% Usage", "_Total") ' 尖峰分頁檔 PageFile_UsagePeak = New PerformanceCounter("Paging File", "% Usage Peak", "_Total") cptInfo = New Devices.ComputerInfo() ' 取電腦資訊 tmr.Interval = 999 ' Timer.Interval 屬性 : 取得或設定引發 Elapsed 事件的間隔。 tmr.Start() ' 啟動 Timer ' 取得 CPU 名稱 (WMI) For Each MngObj As ManagementObject In New ManagementObjectSearcher(New SelectQuery("Win32_Processor")).Get() ' Get Processor Name imgLstBoxCPU.Items.Add(String.Format(" CPU : {0}", MngObj.GetPropertyValue("Name")), 1) Next GetProcessorInfo() ' 取得 CPU 資訊 (WMI) ' My.Computer.Info.TotalPhysicalMemory TotPhyMem = cptInfo.TotalPhysicalMemory ' 取得全部實體記憶體 lbl實體記憶體.Text = KB2MB(TotPhyMem) ' 顯示到 Label End Sub Private Sub GetProcessorInfo() ' 取得 CPU 資訊 (WMI) '使用 SelectQuery 物件可下 SELECT 陳述式查詢 'Select * From Win32_Processor 語法可省略 , 直接寫 WMI 類別名稱即可 Dim SelQry As New SelectQuery("Win32_Processor") '使用 ManagementObjectSearcher 物件取回一個 WMI 物件基底之查詢的 集合物件(Collection) Using MngObjSch As New ManagementObjectSearcher(SelQry) ' 使用 ManagementObjectSearcher.Get 方法, 叫用指定的 WMI 查詢,並傳回產生的集合。 ' 列舉出 Win32_Processor WMI 類別中每一個處理器 (成員) For Each MngObj As ManagementObject In MngObjSch.Get() ' 顯示 CPU 資訊 lstBox.Items.Add(String.Format("Caption : {0}", MngObj!Caption)) lstBox.Items.Add(String.Format("Manufacturer : {0}", MngObj!Manufacturer)) lstBox.Items.Add(String.Format("Number Of Logical Processors : {0}", MngObj!NumberOfLogicalProcessors)) lstBox.Items.Add(String.Format("L2 Cache Size : {0} KB", MngObj!L2CacheSize)) lstBox.Items.Add(String.Format("Current Clock Speed : {0} MHz", MngObj!CurrentClockSpeed)) lstBox.Items.Add(String.Format("Clock frequency : {0} MHz", MngObj!MaxClockSpeed)) lstBox.Items.Add(String.Format("CurrentVoltage : {0} V", MngObj!CurrentVoltage)) lstBox.Items.Add(String.Format("Number Of Cores : {0}", MngObj!NumberOfCores)) lstBox.Items.Add(String.Format("Address Width : {0}", MngObj!AddressWidth)) lstBox.Items.Add(String.Format("External Clock : {0} MHz", MngObj!ExtClock)) lstBox.Items.Add(String.Format("Data Width : {0}", MngObj!DataWidth)) lstBox.Items.Add(String.Format("Socket Designation : {0}", MngObj!SocketDesignation)) Next End Using End Sub ' Timer Tick 事件 Private Sub tmr_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tmr.Tick Dim Core1 As Int32 = dgt2(CPU_Core1.NextValue) ' 取得 CPU 核心1 使用率 Dim Core2 As Int32 = dgt2(CPU_Core2.NextValue) ' 取得 CPU 核心2 使用率 lblCore1Usage.Text = String.Format("Core #0 {0} % ", Core1) ' 取得 CPU 核心1 使用率 lblCore2Usage.Text = String.Format("Core #1 {0} % ", Core2) ' 取得 CPU 核心2 使用率 Dim AvPhyMem As UInt64 = cptInfo.AvailablePhysicalMemory ' 取得可用實體記憶體 Dim TotVtMem As UInt64 = cptInfo.TotalVirtualMemory ' 取得全部虛擬記憶體 Dim AvVtNen As UInt64 = cptInfo.AvailableVirtualMemory ' 取得可用虛擬記憶體 lblAvPhyMem.Text = KB2MB(AvPhyMem) ' 顯示可用實體記憶體 lblTotVtMem.Text = KB2MB(TotVtMem) ' 顯示全部虛擬記憶體 lblAvVtNen.Text = KB2MB(AvVtNen) ' 顯示可用虛擬記憶體 lblRAMusage.Text = KB2MB(TotPhyMem - AvPhyMem) ' 顯示 RAM 已用 ' 顯示分頁檔使用 lblPageFileUsage.Text = String.Format(" Page File {0:##0.00} %", PageFile_Usage.NextValue) ' 顯示分頁檔尖峰使用 lblPageFileUsagePeak.Text = String.Format(" Page File Peak {0:##0.00} %", PageFile_UsagePeak.NextValue) ' 顯示本程式使用記憶體 ' Process.GetCurrentProcess.WorkingSet ' Process.GetCurrentProcess.WorkingSet64 bsi.Caption = String.Format("本程式記憶體 : {0} MB", KB2MB(Environment.WorkingSet)) End Sub Private Shared Function KB2MB(ByVal kb As Long) As String ' 講 KB 轉 MB ( / 1024 / 1024 ) 並指定格式 ' 四捨五入將值捨入至指定的小數點兩位。 Return Math.Round(kb / 2 ^ 20, 2).ToString("#,##0.00") End Function Private Shared Function dgt2(ByVal value As Single) As String ' 四捨五入將值捨入至指定的小數點兩位。 Return Math.Round(value, 2).ToString() End Function End Class
關於 3rd Party Gauge 元件可參考http://www.devexpress.com/http://www.componentart.com/
關於 CPU 溫度的取得可參考 < VB.Net 使用 WMI 取得 CPU 溫度 >http://blog.blueshop.com.tw/hammerchou/archive/2007/10/11/52873.aspx
由於 Windows 本身並無提供各項硬體溫度的監控方式,因此 WMI 雖然是 Windows 提供的管理服務,但仍然需要硬體支援才能得到所需的資訊。MSAcpi_ThermalZoneTemperature 顧名思義是透過 Acpi 這個共同管理介面來查詢,因此您的系統必須具備 ACPI Thermal Zone 才有辦法問到,而 ACPI Thermal Zone 其實是 Notebook 設計下的產品 在 PC 系統下並無 ACPI Thermal Zone 的設計。一般在 PC 上是使用 Win32_TemperatureProbe 進行查詢,但由於 Win32_TemperatureProbe 是直接問 SMBIOS,由 SMBIOS 裡面挖出資料,但 SMBIOS 是否有支援 WMI 是由主機板廠商決定。也就是說,若主機板廠商有支援 WMI ,便可以使用 Win32_TemperatureProbe 的 CurrentReading 讀到 CPU 溫度。但很不幸的,大多數(幾乎可說是全部)的主機板廠商都沒有支援這項功能。
PC若要知道 CPU 溫度,必須要以 C 語言自行實作 Monitor Chip Driver可參考 http://temperature.myweb.hinet.net/index_en.htm