PIXNET Logo登入

Andrew的部落格

跳到主文

歡迎光臨Andrew在痞客邦的小天地

部落格全站分類:數位生活

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 3月 25 週五 201123:47
  • LINQ To DataSet 設定運算子

1.Distinct

a.get datatable

IEnumerable<DataRow> query = (from c in contact.AsEnumerable()
                              select c).Take(100);

DataTable contactsTableWith100Rows = query.CopyToDataTable();

b.use Distinct operator

List<DataRow> rows = new List<DataRow>();

(繼續閱讀...)
文章標籤

AndrewHsiao 發表在 痞客邦 留言(0) 人氣(717)

  • 個人分類:Dot Net
▲top
  • 3月 25 週五 201116:54
  • LINQ To DataSet 之 Group

Average

取得平均價格

var query = from product in products
            group product by product.Field<string>("Style") into g
            select new
            {
                Style = g.Key,
                AverageListPrice =
                    g.Average(product => product.Field<Decimal>("ListPrice"))
            };

 

LINQ 的另一種表示方法

(繼續閱讀...)
文章標籤

AndrewHsiao 發表在 痞客邦 留言(0) 人氣(84)

  • 個人分類:Dot Net
▲top
  • 3月 21 週一 201105:27
  • MVC (Modual View Controller) 架構介紹 2008

2008 MVC (Modual View Controller) 架構介紹

http://msdn.microsoft.com/zh-tw/magazine/cc337884.aspx#S2

MVC至今已推廣三年,由MVC 發展至 MVC3

未來的發展實令人值得期待,開創Web高速的時代

建置沒有 Web Form 的 Web 應用程式

(繼續閱讀...)
文章標籤

AndrewHsiao 發表在 痞客邦 留言(0) 人氣(231)

  • 個人分類:Dot Net
▲top
  • 3月 21 週一 201101:23
  • LINQ to XML vs XPath的簡單效能測試

from:http://blog.darkthread.net/blogs/darkthreadtw/archive/2009/12/15/5775.aspx

如果你使用的平台是.NET 3.5,在操作XML文件時會有三種選擇: LINQ to XML, LINQ to XML with XPath以及傳統的XmlDocument。既然有三種選擇,排除個人主觀偏好,想知道哪一種做法的效能最好呢?

之前有個迷思,一直覺得LINQ表達方式友善,理論上會付出效能上的代價(正所謂有一好沒兩好)。所以有時針對複雜的元素查詢,我會using System.Xml.XPath,然後改用XPathSelectElements()查詢,直到無意間發現了一篇談LINQ to XML與XPath Benchmark的文章,才發現我錯了。該文作者試了一個120,000筆資料, 54MB大小的XML檔案,LINQ to XML用LINQ語法查詢,竟比叫用XPathSelectElements()快了五倍!!

我自己也做了一個測試,產生一個36M大小20,000 * 100個Node的XML文件,分別用LINQ to XML, XPathSelectElements及XmlDocument.SelectNodes去查詢同樣條件,統計Node數。依我的測試結果,也驗證了LINQ to XML確實比XPathSelectElements來得快,至於XmlDocument,我們就忘了它吧...

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml.Linq;
using System.Diagnostics;
using System.Xml.XPath;
using System.Xml;
 
namespace TestXmlPerformance
{
    class Program
    {
        static void GenSampleXml()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("<root>");
            Random rnd = new Random();
            for (int i = 0; i < 20000; i++)
            {
                sb.AppendFormat("<pack id=\"{0}\">", i);
                for (int j = 0; j < 100; j++)
                    sb.AppendFormat("<item model=\"{0}\" />",
                        rnd.Next(20));
                sb.Append("</pack>");
            }
            sb.Append("</root>");
            File.WriteAllText(".\\Sample.xml", sb.ToString());
        }
 
        static void Main(string[] args)
        {
            //GenSampleXml();
            {
                Stopwatch sw = new Stopwatch();
                sw.Start();
                XDocument xd = XDocument.Load(".\\Sample.xml");
                var q = from o in xd.Descendants("item")
                        where o.Attribute("model").Value == "7"
                        select o;
                Console.WriteLine(q.Count());
                sw.Stop();
                Console.WriteLine("Test 1: {0}ms",
                    sw.ElapsedMilliseconds);
            }
 
            {
                Stopwatch sw = new Stopwatch();
                sw.Start();
                XDocument xd = XDocument.Load(".\\Sample.xml");
                Console.WriteLine(
                    xd.XPathSelectElements("root/pack/item[@model='7']")
                    .Count()
                );
                sw.Stop();
                Console.WriteLine("Test 2: {0}ms",
                    sw.ElapsedMilliseconds);
            }
 
            {
                Stopwatch sw = new Stopwatch();
                sw.Start();
                XmlDocument xd = new XmlDocument();
                xd.Load(".\\Sample.xml");
                Console.WriteLine(
                    xd.DocumentElement
                    .SelectNodes("pack/item[@model='7']").Count
                );
                sw.Stop();
                Console.WriteLine("Test 3: {0}ms",
                    sw.ElapsedMilliseconds);
            }
 
            Console.Read();
        }
    }
}

(繼續閱讀...)
文章標籤

AndrewHsiao 發表在 痞客邦 留言(0) 人氣(88)

  • 個人分類:Dot Net
▲top
  • 3月 19 週六 201122:55
  • ASP.NET MVC 概觀

ASP.NET MVC 概觀

模型檢視控制器 (Model-View-Controller,MVC) 架構模式會將應用程式分成三個主要元件:模型、檢視和控制器。 ASP.NET MVC 架構為 ASP.NET Web Form 模式提供建立 Web 應用程式的替代方式。 ASP.NET MVC 架構是可高度測試的輕量型呈現架構,其中 (如同搭配 Web Form 應用程式) 整合了現有 ASP.NET 功能,例如主版頁面和成員資格驗證。 MVC 架構是在 System.Web.Mvc 組件中定義。

MVC 設計模式

模型檢視控制器設計模式

MVC 是許多開發人員熟悉的標準設計模式。 有些類型的 Web 應用程式將受益於 MVC 架構。 有些則繼續使用仰賴 Web Form 和回傳的傳統 ASP.NET 應用程式模式。 還有一些類型的 Web 應用程式將合併兩種方式;兩種方式並不互斥。

MVC 架構包括下列元件:

  • 模型。 模型物件屬於實作應用程式資料網域邏輯之應用程式的一部分。 通常,模型物件會擷取和儲存資料庫中的模型狀態。 例如,Product 物件可能從資料庫擷取資訊、操作該資訊,然後將更新的資訊寫回 SQL Server 資料庫的 Products 資料表。

    在小型應用程式中,模型通常是概念上的分隔而不是實體分隔。 例如,如果應用程式僅讀取資料集並將它傳送到檢視,則應用程式沒有實體模型層和相關聯的類別。 在這種情況下,資料集會接替模型物件的角色。

  • 檢視。 檢視是顯示應用程式中使用者介面 (UI) 的元件。 通常此 UI 是從模型資料建立。 例如 Products 資料表的編輯檢視,它會根據 Product 物件目前的狀態顯示文字方塊、下拉式清單和核取方塊。

  • 控制器。 控制器就是元件,可以處理使用者互動、使用模型並且在最後選擇可以轉譯要顯示 UI 的檢視。 在 MVC 應用程式中,檢視只會顯示資訊;控制器則會處理和回應使用者輸入和互動。 例如,控制器會處理查詢字串值,並且將這些值傳遞至模型,接著模型可能會使用這些值查詢資料庫。

MVC 模式可幫助您建立分隔應用程式不同方面 (輸入邏輯、商務邏輯和 UI 邏輯) 的應用程式,同時在這些項目之間提供鬆散的結合。 此模式會指定每一種邏輯必須出現在應用程式中的位置。 UI 邏輯應該位在檢視中, 輸入邏輯應該位在控制器中, 商務邏輯則應該位在模型中。 此分隔可幫助您在建置應用程式時管理複雜性,因為它可讓您一次專注於實作的一個方面。 例如,您可以專注在檢視上,而不需倚賴商務邏輯。

MVC 應用程式三個主要元件之間的鬆散結合也有助於提升平行開發的效率。 例如,某一位開發人員可以在檢視上執行工作,另一位開發人員可在控制器邏輯上執行工作,而第三位開發人員可專注在模型中的商務邏輯上。

支援以測試為導向的開發

除了管理複雜性之外,MVC 模式在測試應用程式上,比測試 Web Form ASP.NET Web 應用程式更為容易。 例如,在 Web Form ASP.NET Web 應用程式中,一個類別可以同時用來顯示輸出和回應使用者輸入。 為 Web Form ASP.NET 應用程式撰寫自動化測試可能相當複雜,因為您必須具現化網頁類別、類別的所有子控制項,以及應用程式中其他相依的類別,才能測試個別網頁。 由於必須具現化許多類別才能執行網頁,因此要撰寫應用程式的個別部分專用的測試並不容易。 因此,實作 Web Form ASP.NET 應用程式的測試可能比在 MVC 應用程式中進行測試更困難。 此外,Web Form ASP.NET 應用程式中的測試需要 Web 伺服器。 MVC 架構會解除元件之間的連結,並且大量使用介面,介面可讓個別元件獨立於架構的其他部分進行測試。

建立 MVC 應用程式的時機

您必須仔細考量要使用 ASP.NET MVC 架構或 ASP.NET Web Form 模型實作 Web 應用程式。 MVC 架構不會取代 Web Form 模型;因此您可以針對 Web 應用程式使用任一種架構 (如果您有現成的 Web Form 應用程式,這些應用程式會繼續如往常般執行)。

在您決定針對特定網站使用 MVC 架構或 Web Form 模型之前,務必謹慎評估兩種方式的優勢。

MVC Web 應用程式的優點

ASP.NET MVC 架構提供下列優點:

  • 透過將應用程式細分成模型、檢視和控制器的方式,讓管理複雜性更為容易。

  • 此架構不使用檢視狀態或伺服器表單。 因此對於想要完全掌控應用程式行為的開發人員來說,MVC 架構相當理想。

  • 此架構使用前端控制器模式,透過單一控制器處理 Web 應用程式要求。 如此可讓您設計支援豐富的路由基礎結構的應用程式。 如需詳細資訊,請參閱前端控制器 (英文)。

  • 能為測試為導向的開發工作 (Test-Driven Development,TDD) 提供更佳的支援。

  • 能充分搭配大型開發人員團隊所支援的 Web 應用程式,同時適用於需要充分掌控應用程式行為的 Web 設計人員。

Web Form Web 應用程式的優點

Web Form 架構提供下列優點:

  • 支援事件模型,會在 HTTP 上保留狀態,有益於業務線 Web 應用程式開發工作。 Web Form 應用程式提供數百種伺服器控制項中支援的許多種事件。

  • 使用頁面控制器模式將功能加入至個別頁面。 如需詳細資訊,請參閱頁面控制器 (英文)。

  • 在伺服器表單上使用檢視狀態,能夠讓管理狀態資訊更容易。

  • 適用於希望利用提供的大量元件快速開發應用程式的小型 Web 開發人員和設計人員團隊。

  • 對應用程式開發工作而言一般較不複雜,因為元件 (Page 類別、控制項等) 彼此緊密整合,通常需要的程式碼也比 MVC 模型少。

ASP.NET MVC 架構的功能

ASP.NET MVC 架構提供下列功能:

  • 劃分應用程式工作 (輸入邏輯、商務邏輯和 UI 邏輯)、測試能力及測試為導向的開發工作 (TDD)。 MVC 架構中的所有核心合約都是以介面為主,而且可以使用模擬物件測試,模擬物件是模仿應用程式中實際物件之行為的模擬物件。 您可以對應用程式進行單元測試,而不需在 ASP.NET 程序中執行控制器,如此使單元測試迅速而靈活。 您可以使用與 .NET Framework 相容的任何單元測試架構。

  • 可擴充且可插入的架構。 ASP.NET MVC 架構的元件設計為能夠輕鬆取代或自訂。 您可以外掛自己的檢視引擎、URL 路由原則、動作方法參數序列化,以及其他元件。 ASP.NET MVC 架構還支援使用「相依性插入」(Dependency Injection,DI) 和「控制項反轉」(Inversion of Control,IOC) 容器模型。 DI 可讓您將物件插入類別中,而不需倚賴類別建立物件本身。 IOC 會指定,如果物件需要另一個物件,則第一個物件應從來源外部 (例如組態檔) 取得第二個物件。 如此可讓測試更為容易。

  • 延伸的 ASP.NET 路由支援,這是強大的 URL 對映元件,可讓您建置包含易於了解且可搜尋之 URL 的應用程式。 URL 不必包含副檔名且設計為支援 URL 命名模式,適用於搜尋引擎最佳化 (Search Engine Optimization,SEO) 和代表性狀態傳輸 (Representational State Transfer,REST) 定址。

  • 支援在現有 ASP.NET 網頁 (.aspx 檔)、使用者控制項 (.ascx 檔) 和主版頁面 (.master 檔) 標記檔中使用標記做為檢視範本。 您可以使用現有的 ASP.NET 功能搭配 ASP.NET MVC 架構,例如巢狀主版頁面、內嵌運算式 (<%= %>)、宣告式伺服器控制項、範本、資料繫結、當地語系化等。

  • 支援現有的 ASP.NET 功能。 ASP.NET MVC 可讓您使用許多功能,例如表單驗證和 Windows 驗證、URL 授權、成員資格和角色、輸出和資料快取、工作階段和設定檔狀態管理、健康狀態監控、組態系統及提供者架構。

(繼續閱讀...)
文章標籤

AndrewHsiao 發表在 痞客邦 留言(0) 人氣(76)

  • 個人分類:Dot Net
▲top
  • 3月 14 週一 201101:57
  • 行動裝置各軟體加持

行動裝置各軟體加持

http://lifeorganizers.com/

http://www.evernote.com/about/intl/zh-tw/download/

http://www.toodledo.com/info/details.php

(繼續閱讀...)
文章標籤

AndrewHsiao 發表在 痞客邦 留言(0) 人氣(0)

  • 個人分類:Hardware
▲top
  • 3月 11 週五 201123:37
  • 全國四季花曆

全國四季花曆

No 花名

(繼續閱讀...)
文章標籤

AndrewHsiao 發表在 痞客邦 留言(0) 人氣(1)

  • 個人分類:旅遊
▲top
  • 6月 04 週一 201223:06
  • Singleton Pattern

from http://www.dotblogs.com.tw/pin0513/archive/2010/03/08/13931.aspx

 1: public class Singleton{

 2: //透用一個靜態變數記錄實體
 3: private static Singleton uniqueInstance;
 4: //建構式的啦

(繼續閱讀...)
文章標籤

AndrewHsiao 發表在 痞客邦 留言(0) 人氣(2)

  • 個人分類:系統分析與專案管理
▲top
  • 6月 04 週一 201221:08
  • VS 2010 快捷鍵

在這邊分享自己常用的快速鍵,也記錄一下讓自己不小心忘記的時候可以查一下

移至定義

F12

在方法定義和調用之點切换

Ctrl + Shift + 7(8)

(繼續閱讀...)
文章標籤

AndrewHsiao 發表在 痞客邦 留言(0) 人氣(68)

  • 個人分類:系統分析與專案管理
▲top
  • 3月 12 週一 201211:31
  • 部署MVC網站

在已安裝ASP.NET MVC的機器找到以下檔案(32位元OS則在C:\Program Files (x86)\Microsoft ASP.NET目錄),把它們Copy到部署機器的BIN目錄下就OK囉! (注意: 主機IIS要安裝SP.NET 4.0,網站也要設定使用ASP.NET 4.0)

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\Assemblies

  • System.Web.Helpers.dll
  • System.Web.Razor.dll
  • System.Web.WebPages.dll
  • System.Web.WebPages.Razor.dll
  • System.Web.WebPages.Deployment.dll
  • Microsoft.Web.Infrastructure.dll

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies

  • System.Web.Mvc.dll
    (Phil文章中提到的System.Web.Abstractions.dll, System.Web.Extensions.dll, System.Web.Routing.dll在.NET Framework 4.0已屬內建)

(繼續閱讀...)
文章標籤

AndrewHsiao 發表在 痞客邦 留言(0) 人氣(11)

  • 個人分類:MVC
▲top
12...4»

個人資訊

AndrewHsiao
暱稱:
AndrewHsiao
分類:
數位生活
好友:
累積中
地區:

熱門文章

  • ()C# 兩個From相互傳值
  • ()使用 Windows API Code Pack 取得影片長度
  • ()C# XML操作範例
  • ()MVC (Modual View Controller) 架構介紹 2008
  • ()LINQ To DataSet (Select)
  • ()LINQ To DataSet 設定運算子
  • ()filedownload.ashx 檔案下載的另一種寫法
  • ()2 月 11 日「微軟線上專家對談」主題: 以 Web services 實現應用程式整合
  • ()取得Web.Config設定的變數值
  • ()泛型 where T:class 限制回傳範圍

文章分類

toggle 資訊 (2)
  • Web (0)
  • 資訊 (1)
toggle 生活 (5)
  • 旅遊 (1)
  • 投資資料 (0)
  • 個人心情小語 (0)
  • English (0)
  • 生活 (0)
toggle 其他程式語言 (3)
  • Java (0)
  • Embarcadero (0)
  • Asp (0)
toggle Net (6)
  • WCF (0)
  • JQuery (0)
  • Asp Dot Net UI (0)
  • Dot Net 之例外探討 (0)
  • Dot Net (31)
  • AJAX (0)
toggle 系統分析與管理 (6)
  • SQLServer (0)
  • DataBase (0)
  • Sample速查 (0)
  • Unicode (0)
  • 整合 (0)
  • 系統分析與專案管理 (2)
toggle MIS (2)
  • Hardware (3)
  • Windows作業系統 (0)
  • 未分類文章 (1)

最新文章

    動態訂閱

    文章精選

    文章搜尋

    誰來我家

    參觀人氣

    • 本日人氣:
    • 累積人氣: