2008年4月30日 星期三

Step-By-Step教學(8):使用LINQ查詢檔案系統

1.建立一個主控台應用程式 .
2.在程式檔案最上方繪入命名空間:


using System.IO;


3.在Main方法加入以下程式,將c:\temp目錄下所有附檔名為txt的檔案名稱印出:

4.完成!

2008年4月23日 星期三

將WCF服務裝載在Windows 2008的IIS 7.0之中

今天寫了一個WCF服務,企圖裝載在Windows 2008的IIS7上執行
遇到了一些問題, 在瀏覽器輸入 http://localhost/IISHost/Service.svc 時,顯示無法識別Service.svc
歸納解決方案如下:
  • IIS 7在安裝時, 要確定有安裝了「IIS 6管理相容性」,才能利用Visual Studio 2008在IIS 7上建立一個專案
  • Visual Studio 2008要以系統管理員身份啟動(和Vista有異曲同工之妙),才能在Visual Studio 2008建立一個IIS的應用程式
  • 執行C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication foundation目錄下的 ServiceModelReg.exe -i 安裝WCF
完成這些動之後,就可以順利在IIS 7上設計WCF服務了!!

2008年4月18日 星期五

Step-By-Step教學(7):使用VS2008設計Silverlight網頁

Silverlight 2 Beta 1釋出了,也提供了在Visual Studio 2008開發Silverlight的套件
以下步驟說明如何安裝這些套件與撰寫一個簡單的Silverlight網頁.

1.下載並安裝 Microsoft Silverlight Tools Beta 1 for Visual Studio 2008
2.下載並安裝 Microsoft® Silverlight™ 2 Software Development Kit Beta 1
3.在Visul Studio 2008中建立一個 Silverlight Script Web網站
4.開啟Scene.xmal檔案到設計畫面:

5.在Canvas下方加入一個矩形 Rectangle, 利用Name取一個名字,Fill用來設定填入的顏色:

6.在矩形 Rectangle下方再加入一個矩形 Rectangle:
7.並在矩形 Rectangle下方再加入一個圖片Image (請加一個mi.jpg檔案到專案):
8.在圖片Image下加一個文字方塊 TextBlock:
9.執行網頁
10.執行結果!

2008年4月11日 星期五

Windows 2008 與IIS 7安裝實錄

Windows 2008中文版推出也好一陣子了,為了試一試在Windows 2008上的IIS 7開發功能和Vista上的IIS7是否有差別, 今天就開始Windows 2008 安裝之旅!當然為了安裝失敗不會搞砸我的工作環境, 這安裝的動作,當然是裝在VPC上!

在開始安裝之前,發現 Windows 2008 有分有介面的,還有完全沒有介面的安裝選項(操作動作全部使用敲指令方式)! 當然我是選擇使用有介面的,不過,Windows 2008的安裝倒真的沒什麼好說的,一直按下一步之後,就裝起來了...

裝完之後, 當然就是登入了:
登入畫面:
登入之後,又是迷路之旅,但確定一件事,預設沒有裝IIS.寫程式的人,應該要裝一下IIS 7吧,找了很久,原來是從這邊裝,登入之後Windows 2008會自動顯示一個"初始設定工作"畫面,其中有一個"新增角色"選項:
選新增所需功能:
選伺服器角色,勾選"應用程式開發"相關功能:
裝吧裝吧....
完成之後,就有IIS管理工具了,看來應該順利:
但電腦似乎不夠力了,開始有鬼影出現:
接下來就是裝Visual Studio 2008了:
等待安裝中.....

2008年4月9日 星期三

Step-By-Step教學(6):使用LINQ to XML轉換XML文件

LINQ to XML除了支援利用XSLT樣式表來轉換XML文件這種標準作法之外,還有另一種選擇:利用LINQ to XML的功能結構(Functional construction) 技術來進行轉換。例如你有一份XML文件如下:

利用功能結構(Functional construction)技術將其轉換為以下格式:

為了達到此目標所使用的步驟如下:

1. 建立一個Console程式。

2. 加入以下命名空間:

    1 using System.Xml.Linq;
    2 using System.Xml;
    3 using System.Xml.Xsl;

3. Main方法之中加入以下程式:

   1  XDocument doc =
   2        new XDocument(
   3        new XElement("Employees" ,
   4          new XElement("Employee" , 
   5            new XAttribute("id" , "1") ,
   6            new XElement("Name" , "Vivid Hsu") ,
   7            new XElement("Department" , "SD")) ,
   8          new XElement("Employee" , 
   9            new XAttribute("id" , "2") ,
   10            new XElement("Name" , "Mary Wang") ,
   11            new XElement("Department" , "SE"))
   12      ));
   13 
   14       Console.WriteLine("原始文件===========");
   15       Console.WriteLine(doc.ToString());
   16       doc.Save("EmployeesBefore.xml");
   17       Console.WriteLine();
   18       Console.WriteLine("新文件:============");
   19       XDocument docNew = new XDocument(
   20            new XElement("員工清單" ,
   21                doc.Element("Employees")
   22                .Elements("Employee")
   23                .Select(b => new XElement("員工" ,
   24        new XAttribute("員工編號" , (int)b.Attribute("id")) ,
   25        new XAttribute("名稱" , (string)b.Element("Name")) ,
   26        new XAttribute("部門" , (string)b.Element("Department"))
   27        ))));
   28 
   29       Console.WriteLine(docNew.ToString());
   30       docNew.Save("Employees.xml");

程式說明分解如下:
  • 1-12行先利用XDocument建立原始XML檔案。
  • 14-16行將建立的XML文件印出到主控台,並將之儲存成檔案。
  • 19行建立一個新的XDocument來處理轉換的過程。
  • 20行建立新XML文件的根節點「員工清單」。
  • 21-23行建立「員工清單」標籤之中的「員工」元素,為了將來源XML文件中的Employee元素轉換成「員工」,程式之中利用Select運算子來處理。
  • 24行將「id」代換成「員工編號」。
  • 25-26行將「Name」與「Department」代換成「名稱」與「部門」。
  • 29行將產生的新XML印到主控台。
  • 30行將產生的新XML儲存成一個檔案。


2008年4月6日 星期日

Step-By-Step教學(5):使用LINQ to XML操作XML

這個教學將建立一個主控台應用程式,利用LINQ to XML技術產生一份XML文件,將之儲存到檔案之中,再將檔案中的XML文件載入記憶體,透過LINQ to XML進行查詢。LINQ to XML類別架構圖:

1. 建立一個主控台應用程式。
2. 在程式最上方匯入以下命名空間:

    1 using System.Xml.Linq;

3. 在Main方法中,加入以下程式,建立XElement:

   1    XDocument doc = new XDocument(
   2       new XElement("books" ,
   3         new XElement("book" , new XAttribute("publisher" , "DP") ,
   4           new XElement("id" , "1") ,
   5           new XElement("title" , "ADO.NET 3.5 精研講座")) ,
   6         new XElement("book" , new XAttribute("publisher" , "DP") ,
   7           new XElement("id" , "2") ,
   8           new XElement("title" , "ADO.NET 2.0 精研講座"))
   9     ));
   10       doc.Save("adobooks.xml");

LINQ to XML提供一種新的功能結構(Functional construction) 技術,能利用建構函式 (Constructor) 透過一行程式碼就可以初始化XML樹狀結構中多個XML Element的值。此程式範例,利用XDocument物件建立一份XML文件,然後利用XElement 的建構函式,建立一個名為books的XML Element;在books Element的建構函式中,建立publisher屬性,與id、title兩個Element。

接著利用XDocument的Save方法儲存XML檔案。XDocument提供一個Save方法,可以將產生的XML輸出成一個XML檔案、或輸出至一個XmlWriter、TextWriter,此範例,將產生的XML儲存成一個XML檔案。


4. 載入XML檔案到XDocument。透過 XDocument類別的Load方法將其載入XDocument物件。接著利用XContainer的Elements方法,取得books下的所有book Element,然後再透過foreach語法將book下的id、title與publisher資料讀取出來。

    1 XDocument docNew = XDocument.Load("adobooks.xml");
    2       Console.WriteLine(docNew.ToString());
    3       IEnumerable<XElement> eles = 
    4         doc.Element("books").Elements("book");
    5       foreach (XElement el in eles) {
    6         Console.WriteLine(el.Element("id").Value 
    7           + " , " + el.Element("title").Value 
    8           + " , " + el.Attribute("publisher").Value);
    9       }

5. 執行的結果:

2008年4月2日 星期三

Step-By-Step教學(4):使用LinqDataSource與ListView分組顯示資料

以下步驟展示如何將Pubs資料庫中Publishers資料表的資料,根據state欄位分組之後,將分組資料顯示在網頁,執行結果如圖。

1. ASP.NET 3.5網站加入一個LINQ to SQL類別。

2. Server Explorer拖曳publishersPubs.dbml


3.開啟Default.aspx設計畫面。從「工具箱」拖曳一個ListView控制項到Default.aspx設計畫面。從ListView控制項智慧型標籤,選擇「新資料來源」:

4. 選擇「LINQ」,按「下一步」:

5. 選擇PubsDataContext,按「下一步」。

6. 選擇Publishers

7. Groupby選取「State」,OrderGroupBy選「key」,按「完成」:

8. ListView控制項智慧型標籤,選擇「設定ListView」,選一個配置與樣式,按「確定」。


完成以上步驟後,檢視產的HTML標籤。精靈設定LinqDataSourceContextTypeName為「PubsDataContext」物件,設定TableName為「publishers」,其中包含欲分組的資料。設定GroupBy屬性為「state」,其中state代表分組依據的欄位,若欲分組的欄位有兩個以上,則以逗號區隔:

指定在GroupBy屬性中的state屬性,是透過一個特殊的key物件取回的。進行分組後,想要取得某一分組中個別的資料,可以利用It關鍵字。這個關鍵字代表目前資料物件的實體。LinqDataSource查詢回傳的資料之中,將包含分組的資料和此群組中的個別資料。

9. 為了讓分組後的明細資料顯示在GridView控制項之中,修改ItemTemplateAlternatingItemTemplate,將GridViewDataSource屬性利用資料繫結語法顯示Publishers資料:

10. 完成!

總網頁瀏覽量