TFS是Team Fundation Server的簡稱,是微軟VSTS的一部分,它是Microsoft應用程式生命週期管理(ALM)工具的核心協作平台,簡單的說它是管理和開發軟體項目的整個生命週期的平台工具。 TFS的分為用戶端層、應用程式層、資料層。 他們的資料模型流轉如: 用戶端層分為架構師用戶端、開發人員用戶端、測試人員用戶端等。 應用程式層分為:版本控制、團隊產生、團隊網站(SharePoint)、工作項目跟蹤、團隊報告(Sql Server
面向服務 服務是複用進化的結果,起初的複用是函數,物件導向編程的出現使複用從函數上升到對象,隨後面向組件編程又將複用從對象上升到組件,現在面向服務編程將複用提升到服務層次。
.NET應用程式的設定檔 前述樣本中Host項目中的App.config以及Client項目中的App.config稱為應用程式設定檔,通過該檔案配置可控製程序的運行時行為,相對於在設計時通過程式來設定運行時行為,設定檔具有更高的靈活性:我們無需重新編譯器即可修改應用程式行為。編譯器最終會將App.config編譯成 [應用程式名稱].exe.config 檔案,並放在當前應用程式目錄中。而對應Web應用程式(ASP.NET)其對應的設定檔為Web.config。
樣本一中我們使用了scvutil命令自動產生了服務的用戶端代理類: svcutil http://localhost:8000/?wsdl /o:FirstServiceClient.cs 命令中http://localhost:8000/?wsdl串連返回一個XML,該XML即為中繼資料:用以描述如何與服務的終結點進行互動。正因為有中繼資料的存在,svcutil命令才能自動產生用戶端代理類。
通道及通道棧 前面已經提及過,WCF中用戶端與服務端的互動都是通過訊息來進行的。訊息從用戶端傳送到服務端會經過多個處理動作,在WCF編程模型中,這些動作是按層次進行的:上一層次對訊息處理完成後,將訊息傳遞給下一層次,依次類推。這裡對應的每個層即為通道(我們可以理解為訊息通道)。而這一些列的通道層構成了一個通道棧。明顯的,通道棧中的最後一個通道應該是傳輸通道,該通道將處理後的訊息發送給服務端或接受從服務端返回的訊息應答,而在傳輸通道之上還有一系列的協議通道,這些通道將對訊息進行加工處理。
在WinForm中,將DataGridView控制項的列的AutoSizeMode屬性設定為Fill,然後將FillWeight屬性設定為列寬所佔的權重,這樣可實現列寬自動填滿列,說明自動填滿寬度的演算法: 但是在Silverlight中,DataGrid控制項的列寬只有四種模式:Auto、Pixel、SizeToCells、SizeToHeader,沒有Fill模式,無法實現自動填滿列寬。那怎麼實現此功能呢?用自訂模板?似乎比較麻煩,並且很難實現重用。看來只有用自訂控制項了,先初步分析,首先,
之所以說MVC架構很靈活,在於其擴充性很強,幾乎在請求處理管道的任何一個節點都可以擴充。本系列文章將會對擴充點進行總結整理,以此增強對MVC架構的瞭解。 MVC是建立在路由系統之上的,所以嚴格上講,路由系統並不屬於MVC架構,路由系統是.NET Framework 3.5 SP1新增的內容,位於System.Web.Routing命名空間。 下面為ASP.NET MVC請求處理管道(註:來源於Steven Sanderson所著《Pro ASP.NET MVC
當路由系統找到與當前請求匹配的路由資訊(RouteData),而路由資訊中的RouteHandler為MvcRouteHandler,那麼此請求將由MvcRouteHandler返回的MvcHandler來負責處理。預設情況下MvcHandler將根據請求上下文(RequestContext)中的資訊找到對應的控制器和活動方法,通過調用活動方法,返回應答內容,將其返回給用戶端。
今年剛畢業,畢業進了一家實習時的公司。從業務上說,對一些基本的業務到也不陌生了,進入這家公司開發部,我是年齡最小,也是唯一一個新人(公司基本不招應屆生)。所以每一個同事都是自己的老師,有的是做Java的,有的是做.net的,但總體過了一段時間後都不陌生了。也就習慣下來了。 剛來的時候,給老大打打下手,熟悉一下業務,寫點預存程序什麼的,相比在學校學習的東西多了很多,此時才明白代碼是如何為實際服務!這個過程更多的是學習業務去了。一個多月後,老大讓我單獨去做一個小的項目,這個是第一個我自己的項目
古時候有個財主,從擁有九十九隻羊的那一天起,就眼巴巴地盼望著能再添上一隻羊,好湊夠一百隻。一天深夜,他輾轉反側之際,忽然想起村後的山上有一座寺院,寺院裡有一位得道的禪師養了一隻羊。於是,第二天一大早,財主便前去懇求禪師慈悲為懷,將那隻羊讓給自己。當時,禪師正閉目靜思,眼皮也沒有動一下,只淡淡地說:“牽走吧!”一個月之後,財主又來求見禪師。禪師見他愁眉苦臉、面容憔悴,便問他為何如此心焦?財主苦笑著說:“現在我已經有了一百零五隻羊了。”禪師困惑不解:“既然如此,應當高興才是啊!”財主搖頭歎息:“可我
過濾器是一組.NET特性,MVC在特定運行時點調用這些特性上的指定方法,以此實現功能注入。MVC包含四個基本的過濾器類型:授權(Authorization)、活動(Action)、結果(Result)以及異常(Exception)。MVC為這四中過濾器提供了介面定義:IAuzhorizationFilter、IActionFilter、IResultFilter、IExceptionFilter,所以MVC在運行時知道如何調用過濾器上的方法。
前一篇中我們介紹了過濾器,通過方法和結果過濾器我們可以在MVC執行方法及結果的前後注入自己的功能,通過授權過濾器可以執行一些許可權檢查,阻止無權使用者調用方法,通過異常過濾器處理方法執行過程中產生的異常。那麼在執行方法之前,MVC又是如何確定使用何種控制器及其方法的呢? 我們已經知道,MVC使用DefaultControllerFactory控制器工廠來執行個體化控制器,其大致過程如下:1、預設Route類的GetRouteData方法將按我們設定的Url規則解析當前請求的Url,
文是我的編輯,畢業於複旦大學中文系,學生時代就在省級報刊發過作品,一畢業便被一家大報高薪聘了去,年紀輕輕就當上了部主任。可謂少年得志。那天他打電話給我,談了會兒稿子的事,快結束時,告訴我他剛剛過了30歲生日,語氣中透著些許感慨。於是我問他有何感想?他說很多,最大的感想是終於明白了一個道理:那就是一直埋在心裡的3個夢想,永遠也無法實現,藏在心裡只能折磨自己,所以決定刪除。 我一時無語,靜靜地等著下文。 “第一個要刪除的夢想,是英語,你知道嗎?我從7歲就開始學英語,開始是被父母逼著學,為此沒
ActionResult是控制器方法執行後返回的結果類型,控制器方法可以返回一個直接或間接從ActionResult抽象類別繼承的類型,如果返回的是非ActionResult類型,控制器將會將結果轉換為一個ContentResult類型。預設的ControllerActionInvoker調用ActionResult.ExecuteResult方法產生應答結果。 MVC中實現的預設ActionResult如下:1、ContentResult:
MVC中的輔助方法與ASP.NET中的伺服器控制項類似,都是用於產生特定的HTML代碼。MVC提供了三個輔助類,它們分別是:用於產生HTML元素的HtmlHelper,用於Ajax處理的AjaxHelper,以及用於產生Url的UrlHelper。這三個輔助類通過ViewPage的Ajax、Html、Url屬性向外提供。由於視圖都是是從ViewPage繼承的,所以,我們在視圖模板中可以直接通過這三個屬性來調用輔助方法。
在Silverlight 4中受信應用已經被支援,受信應用簡單的說就是可以訪問一些本地受限資源的Silverlight應用。在Silverlight 4中受信應用必須是OOB類型,即必須先安裝在本地,同時受信應用能訪問的資源也有限,例如只能訪問我的文件、我的圖片等位置的檔案。而在Silverlight
本節將講述三個Silverlight中應用的小技巧:Silverlight頁面的放大縮小、Silverlight操作Html、Html操作Silverlight控制項。一、Silverlight頁面的放大縮小 首先對於Silverlight頁面的放大縮小我們可以使用ScaleTransform對Canvas控制項進行設定。這樣所有在該Canvas控制項內的所有子控制項都被放大縮小。 下面我們看Xaml源碼如下: <Canvas
Silverlight不支援讀寫伺服器端的硬碟,可是很多時候使用者需要在Silverlight用戶端往伺服器端上傳檔案,那麼本節將講述Silverlight中最簡單的上傳檔案的方式:在Silverlight用戶端將檔案序列化為Byte[]字元組,然後伺服器端使用webService接收用戶端的資料並且還原為檔案即可。