原创 程序員的成長啓示

在我從工作開始到工作後的四年裏,只認準一件事:做程序員,技術纔是硬道理。實習 在我的實習公司裏(雖然是實習公司,但是我在那裏做了接近一年的時間,而且

原创 WaitHandle——解決線程同步問題

WaitHandle及其子類提供了線程同步問題的解決方案,WaitHandle的類圖如下: ManualResetEvent和AutoResetEvent都是在Signaled和Unsignaled兩種狀態之間切換,所不同的是當aut

原创 一致性控制——解決線程間數據傳遞問題

線程間數據傳遞會產生兩個問題: 1)競爭 兩個線程同時修改一個變量,後一個人的修改會覆蓋前一個人的修改,這種情況叫做競爭。 2)死鎖 當一個線程佔用資源A而請求資源B,另一個線程佔用資源B而請求資源A,兩個線程都無法繼續運行,這種情況叫

原创 Prism應用開發(八)——松耦合組件之間通信

一、Commands 創建一個全局的command,該command將會在各個組件之間共享。 public static class GlobalCommands { public static CompositeCommand MyCo

原创 ASP.NET系統數據庫一鍵式部署策略

ASP.NET系統數據庫部署策略主要是將創建數據庫、Membership數據庫、添加Membership用戶、創建數據庫表、向數據庫中插入數據等腳本,分別組織在單獨的腳本文件中,然後由一個入口批處理文件通過osql命令調用執行各個腳本,這

原创 Prism應用開發(一)—— 概述

Prism框架的設計目的是用來幫助構建豐富、靈活、易維護的WPF和Silverlight應用程序。 關鍵概念 Modules:Modules是能夠獨立開發、測試、部署的功能單元,Modules可以被設計成實現特定業務邏輯的模塊(如Prof

原创 Entity Framework架構

Entity Framework 整體架構如圖: Entity Data Model(EDM)是類和數據庫之間的映射模型,它包含三個映射文件。 LINQ to Entities和Entity SQL是查詢對象模型的兩種語言。 Obje

原创 Prism應用開發(五)——MVVM模式關鍵技術

一、Data Binding Data Binding在MVVM模式中起到了重要的作用,WPF提供了強大的數據綁定功能,因此在設計view和model時應該充分利用這些能力,這意味着你必須實現正確的接口。 1)WPF支持one-way b

原创 LINQ to Entities查詢

在EF中,查詢對象模型有很多種方式: 1)通過Object Services執行LINQ to Entities。 2)通過Object Services執行查詢構建方法(查詢構建方法可以用來構建Entity SQL)。 3)通過Obj

原创 C#高級程序設計(一)——從接口到代理到匿名方法到lambda表達式

問題背景:使用Sort方法對Product對象進行排序。 下面是Sort方法的兩個簽名: public void Sort(Comparison<T> comparison); public void Sort(IComparer<T>

原创 ASP.NET AJAX架構

Ajax本身面臨的問題在於: 1)瀏覽器的兼容性:每個瀏覽器對XMLHttpRequest對象的實現有所不同,而且每個瀏覽器對DOM的實現方式也有所不同, 2)JavaScript語言的問題:大多數開發者不熟悉JavaScript,而且J

原创 Prism應用開發(三)——基於模塊的應用程序開發

Prism使用模塊(Module)的概念來對應用程序進行劃分。一個module封裝相關的關注點,並且具有單一的職責。module既可以按照應用程序的業務邏輯進行劃分,也可以按照應用程序的架構層次進行劃分。很多大型應用可能會同時包含兩種類型

原创 Prism應用開發(六)——MVVM高級話題

一、Commands Composite Commands 情景: 上述情景中,Submit All Command的邏輯是要調用所有Submit Command的邏輯。 解決方案: Prism中提供了CompositeCommand,

原创 LINQ to Entity 動態查詢

LINQ to Entity動態查詢可以將查詢條件寫成一個字符串,然後由Entity Framework動態解析字符串構造成表達式樹,完成查詢,下面是幾個應用。 1、字符串條件 字符串條件可以直接將比較字符串放入雙引號中進行比較,例如:

原创 ASP.NET中大量數據的分頁、排序與過濾

1、背景 在ASP.NET中通常是用GridView顯示數據,然而如果要顯示大量數據,一次性的取得所有的數據d的方法指定是不行的。 2、解決方法 在分頁的時候請求當頁的數據,排序的時候請求排序後的當頁數據,過濾的時候顯示過濾後的數據。 因