2012年5月28日 星期一

LINQ 學習筆記 (pre.2) 隱含型別宣告跟匿名型別 - var, Anonymous Type

繼上一章節,接下來討論,隱含型別宣告 var 。

這個東西在 .NET 發展以來,是一個很...不對盤的東西。該怎麼說,因為發展到 framework 2.0 以來,在型別一直就是採強型別的政策,怎麼會突然跑出這個東西出來,因為 var 的出現不就等於改走向型別不明確的那方面去....嗎?這時候一定要多個嗎...因為基於幾個方法幾乎就可證實。

2012年5月24日 星期四

LINQ 學習筆記 (pre.1) 擴充方法 - Extension Methods

LINQ ( Language-Integrated Query ) 是微軟在 C# 3.0 以及 VB9 之後發展的一套查詢技術,目的在試圖打破資料存取方式 (不是單指資料庫) 與程式溝通的界線。

以往程式需使用資料的時候,例如 SQL SERVER ,便需要利用到 T-SQL 語法,建立 Connection,搭配 Command 來進行資料的存取。中間需要將欲處理資料轉由 Command Text ,搭配  Parameters 以便控制資料庫。

而為什麼說不單指資料庫,因為 XML、EXCEL 等存取媒介也能由 LINQ 來進行資料的控制,這也是微軟想發展 LINQ 的原因之一。

而要發展 LINQ 也因此需要付出一些建置成本,也就是因應需應該有一些環境特性。所以引用In 91的文章。概念如下:

  1. var (隱含型別)
  2. 匿名型別
  3. 擴充方法
  4. yield、Iterator、IEnumerable、IEnumerator
  5. Enumerable與IEnumerable<T>
  6. Fluent Interface
  7. lambda (匿名方法)
  8. 一些特殊的委派型別 (Func<T>, Action<T>, Predicate<T>)
  9. 從foreach了解LINQ
  10. 延遲執行的特性

2012年5月22日 星期二

ASP.NET 顯示 Report Service 的報表(番外) - Web Service, Reporting Service

上次研究如何使用新版的 Reporting Service 2008 的時候,意外發現新版的疑似好像能用 Web service 的方式來叫用報表。所以繼上次的
以上這兩篇外,試著改用 Web Service 的方式來試試看,也促使這次番外篇的撰寫。

 首先要介紹一下麼是 Web Service ,最近看一篇文章,我覺得講得還不賴,所以就不再多做著墨。可以詳看這篇文章 webservice系列教學(1)


2012年5月21日 星期一

讓系統自動發送報表給使用者 - mail, window service, reporting service

最近遇到一個狀況。朋友的老闆希望每天都收到公司的帳務報表,且希望該報表能夠加密。
所以我朋友每天早上就很認命來公司產生完報表,匯出成Excel檔,然後加密,寄信給老闆。
即使生病請假或是想出去玩請假,還是得連到公司電腦,繼續上面的步驟。
便想到如何每天自動產生報表,然後自動加密,然後寄信。
所以就來試寫看看啦。

分析需求:
  1. 首先因為是常駐程式,總不能一直開著。程式的定位就是視窗服務 ( windows service )。
  2. 然後有用到寄信服務,也就是需要 SMTP 服務,所以建議 windows server 的環境。
  3. 因為有需要產出報表,需要有 reporting service (廢話) 。

2012年5月17日 星期四

利用泛型處理常式匯出報表 - ashx, reporting service

報表為了保護機密內容,報表伺服器通常需要做身分驗證。
有些報表有時需要直接產生 PDF 檔供使用者下載,且不太希望使用者自行用介面儲存成其他格式,所以並不會利用 Reportviewer 這個控制項。
這時可利用泛型處理常式來當作中介,自動完成報表伺服器且自動下載 PDF 檔供使用者使用。

2012年5月15日 星期二

利用XPath輕鬆使用XML - XmlDocument, XmlNode, XML

因為前陣子有朋友問我要怎麼讀XML檔案到自己的電腦,那時候腦袋馬上就浮現 DOM 物件跟利用 XPath 的字眼,隨口脫出,但是卻換來對方滿腦的問號,所以趁午休時間整理一下。

DOM ( Document Object Model ) 全名為文件物件模型。 這定義 威基 (Wiki) 裡面寫得很不錯。簡單地說,你可以想像一份 HTML 或 XML 等相關文件都是一種 DOM 物件,而文件裡的每個標籤(tag) 都是該物件中的一個節點 (node) 或是稱作元素 (element)。先前是利用 JavaScript 使用為主要大宗。因為最早期的瀏覽器大戰,就是以微軟以及 Netscape為爭取使用率,便積極開發各自的 JavaScript 因而促使 DOM 物件使用的成熟。

之後個語法也都有相關的 DOM 物件相關的使用 API ,除一開始的 JavaScript 外,PHP、 ASP.net 也都有陸續支援的 API 套件。

XPath (XML Path Language) 便是XML路徑語言,是一種用來確定XML文檔中某部分位置的語言。

2012年5月14日 星期一

Reporting Sevice 2005 無法在 IIS7 正常顯示 - IIS7 , reporting service 2005

最近遇到 Windows 2008 上要把之前開發在 Windows 2003 上的專案放上去。

一般網頁處理都能夠順利地轉移,但在有使用到 Reportviewer 控制項的網頁皆呈現無法使用的404畫面,表示找不到相關頁面。
經多方搜尋及尋找,大致整理出幾個方向,因 VS 2008 發展比 IIS 7 早,所以很多設定都只針對當時環境 IIS 6 所設計。

  • 開發環境為 Visual Studio 2008 
  • 網站架設環境為 Internet Information Services 7 ( IIS 7 )
  • 欲使用 Reportviewer 控制項

所引發問題,因為升級為 IIS 7 之後處理 ASP.NET的模式分為兩種:Classic Mode及Integrated Mode。然而現行網站處理都是直接使用 Integrated Mode 新的有向下相容的版本。而直接對應的 Web.Config 設定也因此除原本的 system.web 外多了 system.webServer。