發表文章

目前顯示的是 2010的文章

Silverlight果然還是無法存取.NET Remoting

圖片
會有這個問題是因為先前有需要,也希望在Silvelight中看看能否存取.NET Remoting的遠端物件,不過當然,在當下每個人都知道Silverlight目前只支援3種資料存取方式: RIA Service WCF Data Service (之前稱為ADO.NET Data Service) WCF Service 不過筆者還是想要Try一下,當有一些不確定因素時筆者就是喜歡踹(是Try拉),行不行Try一下就知道,Try的過程當中也會有一些發現或是了解其原理,二話不說開始吧! 首先筆者記得.NET 3.0之後,因為新增了WCF,所以在Visual Studio 的IDE之中除了原先的加入 [加入參考] [加入Web參考] 之外,還多了 [加入服務參考],這是為了WCF服務而出現的,所以之後,像您現在如果使用如目前最新的visual Studio 2010的WinForm程式在加入服務參考的視窗下面還會有一個 [進階]按鈕,如下圖: 點選後,如下畫面: 畫面中還有一個加入Web參考的按鈕,在說明的地方也特別標註說這是相容於.NET Framework 2.0的。點選之後就是以前熟悉的Web 參考畫面如下: 而在Silverlight的專案中的[加入服務參考]的畫面中也沒有[加入Web參考]的按鈕,如下: 如果硬是在[加入服務參考]的地方輸入.NET Remoting公開的URL (Web Service/SOAP公開的方式),突然很高興的發現!!可以找的到一個服務ㄝ,還能夠分析的出有一個HelloWorldService,如下圖: 不過按下[確定]後馬上得到一個錯誤訊息,但該錯誤也不是回應出真正的錯誤內容,不過無法作業也是可以想見的!之後說明。 而且所產生出來的Reference.c參考檔案也是空空如也,什麼都沒有!如下畫面: 為什麼後來筆者有想到原因了呢?因為當您手動敲入Remoting的Proxy也就是遠端物件時,因為該物件必須繼承 System.Web.Services.Protocols.SoapHttpClientProtocol, 這本來在參考的畫面就應該要看出來了, 但是因為當初Silverlight為了使下載下來的Plug-In安裝檔盡量愈小愈好,所以是沒有包入System.Web.S

實做篇-將現有網站改成MVC架構

圖片
先前參加了佛心Jed哥的贈書活動,小弟也獲得了保哥的新書 [ASP.NET MVC2 開發實戰]一書,書中小弟獲益良多,最近也試著將現有的專案改以MVC的架構,在實做這個改變的過程,小弟便將其記錄下來並分享給各位。 一般來說,ASP.NET的網頁應用程式不外乎會有商業邏輯層(Business Tier)、資料層 (Data Tier)、網頁 (ASPX),而在網站的架構中我們可能習慣使用不同的NameSpace (資料夾)來區分商業邏輯層與資料層,基於商業機密公司應用程式不方便貼上來,小弟以Northwind資料庫實做一個範例來展現這個典型的網站架構。 這是一個客戶資料查詢的網頁程式,它是個簡單List [清單]類型的查詢的網頁程式,它有兩個查詢條件,1.客戶公司名稱、2.所在城市。查詢設計畫面如下: 查詢會呼叫CustomerBiz的商業邏輯,此為與Customer相關之商業邏輯層,SQL Statement會撰寫於此,通常查詢會是如下程式: 1: protected void lbtSearch_Click( object sender, EventArgs e) 2: { 3: GetDatas(); 4: } 5:   6: private void GetDatas() 7: { 8: CustomerBiz CBiz = new CustomerBiz(); 9: DataView dv = new DataView(CBiz.GetCustomersByID_City(Request.Form[ "txtSearch" ], Request.Form[ "ddlCity" ])); 10: gvwList.DataSource = dv; 11: gvwList.DataBind(); 12: } CustomerBiz.cs的完整程式碼如下所示,這裡Demo的範例很簡單,對應的舊兩個邏輯方法: 1: us

Web Matrix (Part 2) ASP.NET Razor資料庫應用程式開發

圖片
上一次筆者介紹了Web Matrix的開發方式,也大致介紹了什麼是ASP.NET Razor ,其實 Razor 並不算是一種新的語言,它在@符號後面所接的其實都還是C#語法。而且ASP.NET Razor對於ASP.NET MVC有著很密切的關係,它之所以出現是為了改進ASP.NET MVC的View的程式撰寫風格,也許不要說是改進,也可以當作多了一種View的撰寫方式。在Web Matrix所提供的ASP.NET Razor 可以說是個預覽版,未來的ASP.NET MVC 3會含括此功能在裡面。 而關於 ASP.NET Razor 的設計目標有下面幾個: 希望程式碼撰寫是一連貫,一氣呵成的。 學習門檻低,容易上手 不是一套新的程式語言,希望使用既有的ASP.NET/C#基礎即可快速的上手。 使用任一種純文字檔編輯器都可進行開發。 也支援使用Visual Studio 2010來開發,使用Visual Studio 2010強大的Intellisense的支援。 同樣可進行View的Unit Test。 OK!再回到筆者今天的主題,先使用這個預覽的版本來體驗一下資料庫應用程式的開發方式,就順著下面的步驟來時做看看。 1.首先是先安裝OData Helper 1.0元件,這是存取資料庫必要的元件,請開啟Admin畫面將OData Helper 1.0安裝進來。 圖(一)、安裝OData Helper 1.0元件 2.點選左下方的Database,Web Matrix此時會切換到資料庫功能的頁籤。若預設一開始您也是選擇Empty Site,在沒有改名子的情況下,會有一個Empty Site.sdf的SQL Compact資料庫。請在Tables的節點選滑鼠右鍵"New Table"或點選上方的工具列的 New Table建立一個Employes的Table,並同時建立[id]、Name、Title 等三個欄位,如圖二。 圖(二)、建立SQL Compact 資料庫 3.接著任一建立幾筆資料,如圖三。 圖(三)、任一建立三筆資料 4.回到Files頁籤,並新增一個EmployeesList.cshtml 程式檔案,並撰寫如下程式。要注意的地方是,如果要撰寫多行的Razor,可以使用 @{.. } 包起來,

Microsoft ASP.NET Web Matrix 有趣的簡單Web開工具

圖片
相信許多讀者都使用過ASP.NET Web Matrix這個精簡版的ASP.NET編輯器,在當時.NET 1.0/1.1的時代很風行,因為安裝檔案非常的小,只有1.2M多一點而已,卻能夠以視覺化的方式來撰寫ASP.NET的Web Form Page,現在ASP.NET Web Matrix又有新版本了,現在稱做Microsoft Web Matrix (目前為Beta2),同時他引進了新的Web Framework,能夠更容易的來開發簡單型的網站,不過它的目標會是一個簡單雲端應用程式為基礎的開發,支援Web Deploy佈署至其他協力廠商的如ADHost的Cloud Servers,而它程式檔案使用.cshtml的副檔名。安裝此工具可以從Web Platform Installer 3.0進行安裝,如下: 圖(一)、安裝畫面 安裝時會連同Microsoft SQL Server Compact 4.0 tools CTP 2、IIS Express等工具一同安裝進來,它可以與Visual Studio 2010安裝在同一台機器。安裝完成後會發現新版本與舊版本畫面的風格可說是大異其趣,如圖(二)   圖(二)、起始畫面 值得一提的是新版本在"Site From Web Gallery" 整合許多知名的線上範本,應該說比較像是Starter Kit。在這裡也大概的分門別類了一下,如圖(三) 圖(三)、Site From Web Gallery   接下來我們來進行簡單的測試與開發,眼尖的讀者應該會發現,當開啟了Web Matrix開發工具時,已經自動啟動了一個IIS應用程式伺服器,如下圖(四)   圖(三)、一個Port:2796 的IIS應用程式開發伺服器已經啟動   個位如果有上Web Matrix的網站會發現一些有趣的範例,只要簡單的幾行程式就可以得到特殊的支援與效果。而在Web Matrix網站上所提供的範例是必須安裝Microsoft的Dynamic動態資料存取元件才可以順利執行並看到結果,若您直接撰寫網站上的範例並執行會得到如下的錯誤訊息:   開發前先來了解一下什麼是cshtml檔案,所謂的cshtml其是是一種Razor 語法撰寫的ASP.

客戶端出現找不到來自來源 DCOM 之事件識別碼 10016 的描述的解法

圖片
最近客戶端Server事件檢視器常常出現一個訊息: 找不到來自來源 DCOM 之事件識別碼 10016 的描述。本機電腦可能並未安裝引發此事件的元件,或安裝已損毀。您可以在本機電腦上安裝或修復該元件。 如果事件源自其他電腦,則儲存它們時必須一併儲存顯示資訊。 下列資訊已隨附於該事件: 應用程式特定 本機 啟用 {0C0A3666-30C9-11D0-8F20-00805F2CD064} NT AUTHORITY NETWORK SERVICE S-1-5-20 通常面對如{0C0A3666-30C9-11D0-8F20-00805F2CD064} 這樣的ClassID可以調查Registry的HKEY_CLASSES_ROOT\CLSID機碼,如圖(一)。 圖(一)、找到的{0C0A3666-30C9-11D0-8F20-00805F2CD064}的ClassID機碼 發現此機碼就是Microsoft的指令碼偵錯管理員MDM.EXE (Machine Debug Manager)所註冊的機碼。因為ASP.NET所執行的Network Service並沒有權限進行偵錯而導致此訊息的發生。如圖(二) 圖(二)、為Microsoft的指令碼偵錯管理員MDM.EXE (Machine Debug Manager)   解決方式可以透過Dr. Watson來改變系統預設的偵錯管理員,可在開始工具列執行: drwtsn32 –i 引數-i表示Install的意思,這會將Dr. Watson安裝為系統預設的錯誤處理器此問題即可解決! 註:此問題解法只適用於Windows XP/2003,在Vista/7/2008機制以不同,也找不到機碼{0C0A3666-30C9-11D0-8F20-00805F2CD064},當然也找不到drwtsn32.exe

實作Silverlight 4 的RSS閱讀器

圖片
在黃忠成老師10/6發表的Expression Blend 4中的資料繫結一文中,小弟體驗到Silverlight 4 與Expression Blend 4強大的資料繫結功能,也受益匪淺。也開始探討其他的應用方式。因為在Silverlight中可繫結的資料也可以是XML檔案,甚至是位於其他網站上的XML的檔案、如RSS等,因此在Expression Blend 4中要製作一個Silverlight的RSS閱讀器非常的容易。 因為筆者隨機瀏覽到聯合新聞網的網站,因此就以新聞網的 (RSS資訊服務 –> 焦點要聞 –> 焦點) 的RSS連結作為本次的範例: 下面以英文版Expression Blend 4解說這個範例。 1.首先以Expression Blend 4開啟一個包含Web Site 的 Silverlight 4的專案,並在”Data”的頁籤選擇"Import Sample Data from XML.."。 2.在Import Sample Data from XML的視窗中將剛才複製的連結貼上。 3.接著會在Data的頁籤下的Project下面出現focusSampleDataSource的資料來源, 4.在畫面上拖曳一個DataGrid。 5.在這個focusSampleDataSource的資料來源中包含一個rss的XML資料基礎結構,其中在channel下的ItemCollection就是我們所需要的,請將他拖曳至DataGrid上,此動作Expression Blend 4會自動完成資料繫結的動作。 6.此時Expression Blend 應該會替DataGrid產生DataGrid.Columns 的XAML,如下紅色圈起來處。 而且在Expression Blend 4的設計畫面也可以看見預覽的資料,不過因為欄位的順序不是我們要的,因此筆者將title移至為第一個欄位,並且將欄位名稱 title改為"標題"、link改為"連結"、pubDate改為"發布日期"。此時設計模式畫面應該會是如下的畫面: 現在基本的畫面雛形已經出來了,可以開始寫程式了。在channel下的itemCollection中有