一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

如何使用Microsoft技術(shù)棧

 昵稱10504424 2014-04-14

Microsoft技術(shù)棧最近有大量的變遷,這使得開發(fā)人員和領(lǐng)導(dǎo)者都想知道他們到底應(yīng)該關(guān)注哪些技術(shù)。Microsoft自己并不想從官方層面上反對Silverlight這樣的技術(shù),相對而言他們更喜歡讓這種技術(shù)慢慢淡出人們的視線,否則局面可能會更加混亂。如果你想了解該問題的答案,那么可以查看“.NET業(yè)務(wù)應(yīng)用程序技術(shù)指南”這個小有名氣的文檔。該文檔發(fā)布于去年早些時候,它深入探討了Microsoft打算在哪些領(lǐng)域付出努力,我們應(yīng)該回避哪些技術(shù)等內(nèi)容。

下面這個概要圖是我們探索Microsoft及其相關(guān)技術(shù)的一個很好的起點。

(單擊放大圖片)

盡量早日放棄Silverlight和Flash

雖然WinForms和Web表單這些舊的.NET技術(shù)依然占有一席之地,但是Silverlight和Flash這樣的RIA容器絕對是出局了。正如下面圖5-15所展示的,Microsoft并不想空等著Silverlight 5所計劃的10年生命周期。他們已經(jīng)打算在2015年底放棄RIA容器。

高端應(yīng)用程序更傾向于完全使用本地技術(shù);而低端應(yīng)用程序則期望HTML5的能力持續(xù)發(fā)展。盡管沒有將開發(fā)人員推向具體的某一種技術(shù),但是對于這種轉(zhuǎn)變我們必須要注意的事情是:

移動

Windows 8商店有三個相等但是不同的選項

就Windows 8商店應(yīng)用而言,Microsoft過去一直不愿意將開發(fā)人員推到某一種具體的技術(shù)棧上。這個政策現(xiàn)在也沒有發(fā)生變化;在.NET/XAML、C++和JavaScript/HTML5這些技術(shù)之間選擇的首要標準是開發(fā)人員最熟悉哪種技術(shù)。

除此之外,他們還提到了C++,因為它具有性能優(yōu)勢??芍赜眯圆⒉皇呛苁荜P(guān)注的一個點,因為這三個平臺都能夠在Windows Phone和Windows桌面之間共享代碼和資源。

本地選項適合Windows Phone

Windows Phone推薦的技術(shù)是.NET和C++。再次重申,需要注意一下C++的性能優(yōu)勢,但是他們說的最多的還是開發(fā)者應(yīng)該使用自己更加熟悉的技術(shù)。

盡管Windows Phone兼容PhoneGap/Apache Cordova,但是這并沒有被提及。推測起來原因可能是他們認為在小設(shè)備上PhoneGap的性能比起.NET或者C++要差。在2013年度的Build大會上性能無疑是最重要的話題,超出了諸如一般可用性、可視化設(shè)計和深度OS集成等其他話題。

移動Web:都可以使用,除了Web表單

如果你想選擇一種能夠在所有移動設(shè)備上運行的、基于Web的解決方案,那么有多種選擇。使用Modernizer的ASP.NET MVC是基線推薦方案,你能夠使用它創(chuàng)建單頁面應(yīng)用程序(ASP.NET SPA)。Microsoft對SPA的看法是它更像是一種設(shè)計模式而不是技術(shù),同時Microsoft還極力推薦使用Knockout和Breeze這兩個類庫。

為了快速地裝配CRUD風(fēng)格的應(yīng)用程序,LightSwitch被列了出來。雖然該框架幾乎沒有對HTML渲染進行控制,但是卻可以讓開發(fā)人員不必為各種各樣的屏幕大小構(gòu)建布局,減少了工作量。

ASP.NET Web頁面是為移動Web提供的第四個選項。它基于Razor語法,為開發(fā)者提供了與PHP和傳統(tǒng)ASP等腳本語言相似的開發(fā)體驗。

指南中并沒有提及比較老的ASP.NET渲染工具箱——Web表單。雖然該技術(shù)依然在積極的開發(fā)中,同時從理論上說它也能夠渲染設(shè)備特定的HTML,但是在實踐中Web表單并沒有發(fā)揮其真正的潛力。它所渲染的HTML和JavaScript好像比較低效,此外其高級功能所必須的view state能快速地壓垮一個手機的網(wǎng)絡(luò)連接。

服務(wù)

因為大部分應(yīng)用程序都依賴于外部的數(shù)據(jù)存儲和處理,所以服務(wù)器端開發(fā)依然是一個非常重要的考慮因素。Microsoft認為現(xiàn)在有6種可行的技術(shù)選項。

首選:ASP.NET Web API

根據(jù)Microsoft所提供的信息,新項目的默認選擇應(yīng)該是ASP.NET Web API。如果要開發(fā)遵循REST風(fēng)格的服務(wù),或者需要兼容“Akamai、Windows Azure CDN、Level3等”Internet緩存,那么可以使用該技術(shù)。

開發(fā)者在使用Web API的時候應(yīng)該關(guān)注OData和JSON,前者標準化了REST端點的暴露方式。

第二選擇:WCF

與Web API相比WCF被認為是一種更加靈活的選項,因為它并沒有與任何特定的傳輸協(xié)議或者消息格式綁定。例如,你能夠利用TCP或者命名管道和二進制消息提升性能。缺點是WCF使用起來比較困難,特別是當你想要以JSON或者其他非基于SOAP的格式暴露數(shù)據(jù)時更是如此。

WCF是面向企業(yè)設(shè)計的,理念是RPC風(fēng)格的通信。雖然它也可以使用面向大眾的REST風(fēng)格的設(shè)計模式,但是這并不是該場景下的首選項。

WCF和OData

如果你的主要工作是CRUD風(fēng)格的服務(wù)層,同時想要使用WCF技術(shù)棧,那么WCF數(shù)據(jù)服務(wù)是一個不錯的選擇。它與ASP.NET Web API共享OData類庫,并且通常會與Entity Framework結(jié)合使用。

Workflow服務(wù)

Workflow服務(wù)是Windows Workflow與WCF的結(jié)合。使用它的原因只有一個,那就是你的服務(wù)內(nèi)部已經(jīng)使用了Windows Workflow。Microsoft認為沒有讓你選擇這個選項的其他原因。

使用SignalR進行雙向通信

如果你僅想使用基于.NET的客戶端,那么WCF為良好的雙向通信提供了很多選項。但是如果你想要的是能夠同時支持.NET和基于Web的客戶端,那么SignalR是一個非常不錯的選擇。

根據(jù)Microsoft提供的信息,SignalR甚至能夠擴展到上百萬用戶。Web客戶端喜歡使用WebSockets,但是可以在必要的時候自動地回退到舊的模式,例如長輪詢。

SignalR還有一個針對.NET客戶端的類庫,允許Web和本地客戶端共享服務(wù)。

LightSwitch,另一個OData提供者

Microsoft對OData的喜愛程度夸張到我們幾乎難以用語言來描述。到現(xiàn)在為止,我們已經(jīng)看到了用于WCF和Web API的OData,但是這并沒有結(jié)束。盡管通常情況下我們使用的是LightSwitch的客戶端,但是很顯然我們還可以使用它的服務(wù)器端能力快速地生成一個服務(wù)層。

Microsoft宣稱LightSwitch不需要任何編碼,但是同時也警告說這樣會喪失靈活性。

中小型企業(yè)應(yīng)用程序指南

Microsoft為中小型企業(yè)編寫指南時一直遵循如下目標:

通俗點說,它的意思就是“讓事情變得更快,成本更低”。Microsoft提供的這個具體的指南取決于你喜歡什么樣的展示模式。

中小型企業(yè)Web應(yīng)用程序

對于快速而隨意的CRUD風(fēng)格的應(yīng)用程序而言,Microsoft推薦的首選平臺依然是LightSwitch。LightSwitch最初被描述為一個針對非專業(yè)程序員的工具。許多人將它看作是一個訪問的多層替代。但是隨著現(xiàn)在Microsoft更多的將其作為一個服務(wù)于需要快速推出應(yīng)用程序的IT部門的工具,這個愿景似乎也已經(jīng)消失。

接下來要講的是Web表單。是的,令人尊敬的Web表單依然是新項目推薦使用的技術(shù)。Microsoft將其看作是一種折中技術(shù),介于易用但是有限制的LightSwitch和復(fù)雜的ASP.NET MVC之間。Web表單包含豐富的數(shù)據(jù)表格等功能,它依然能夠非常好的適用于企業(yè)內(nèi)部的應(yīng)用程序。

此外還提到了ASP.NET Web頁面,但僅僅是簡單介紹了一下。如果你認為Web表單所提供的渲染能力依然無法滿足自己的需求,那么可以選擇ASP.NET MVC。但是Microsoft針對其較長時間的學(xué)習(xí)曲線提出了警告。

構(gòu)建Windows桌面程序

雖然所有基于C++的GUI工具集(例如MFC和ATL/WTL)都不在列表上,但是最初的.NET UI工具集WinForms以及WPF依然被認為是可行的選項。這兩者都支持現(xiàn)代的理念,例如數(shù)據(jù)綁定和async/await,同時都能夠使用WCF或者SignalR進行雙向通信。

在WPF和WinForms之間做出選擇之前需要考慮下面幾點因素:

首先是難度。比起WPF來WinForms更容易理解,甚至對高級開發(fā)者也是如此。WinForms使用非常簡單的數(shù)據(jù)綁定,同時更喜歡傳統(tǒng)的MVC或者MVP機制。而對于WPF而言,用戶在能夠正確地使用MVVP模式之前需要學(xué)習(xí)一個復(fù)雜的數(shù)據(jù)綁定框架。成功地使用WPF還需要了解資源字典、轉(zhuǎn)換器、ICommands和XAML模版引擎方面的知識。

另一方面,如果你還打算把Windows Phone或者Windows 8 商店作為目標平臺,那么你需要學(xué)習(xí)如何使用XAML。在這種情況下,從WPF入手會讓你更有可能在不同的平臺之間共享代碼。

與常見的WinForms應(yīng)用程序相比,WPF靈活的渲染引擎渲染的外觀更漂亮。當然這也是有代價的,在同等條件下WPF應(yīng)用程序通常比WinForms應(yīng)用程序運行的慢。

順便提一下LightSwitch桌面客戶端。好像它并不能提供任何可以在桌面客戶端中使用的東西,所以似乎沒有太多的理由選擇它。

應(yīng)該避免使用客戶端—服務(wù)器模式

當Microsoft談到“客戶端—服務(wù)器”的時候,他們實際上指的是那些直接與數(shù)據(jù)庫通信的應(yīng)用程序。盡管他們承認這依然是一個非常常見的模式,但是他們還是希望新項目使用3層設(shè)計,在客戶端和數(shù)據(jù)庫之間創(chuàng)建一個服務(wù)層。與直接訪問數(shù)據(jù)庫相比,這提供了更好的可伸縮性,同時還提供了一種可以繞開防火墻及其他障礙物的方式。另外它允許將應(yīng)用程序移植到數(shù)據(jù)庫驅(qū)動不可用的平臺上。

對于如何“現(xiàn)代化”桌面應(yīng)用程序Microsoft提供了很多建議。下面的建議大部分是有關(guān)于做好將應(yīng)用程序遷移到其他平臺上的準備的,但是即使你并沒有打算放棄Windows桌面,這些指導(dǎo)對你而言依然是有一定用處的。相關(guān)建議的摘要如下:

Android和iOS平臺上的.NET

Microsoft正在和一些合作伙伴一起努力,以幫助用戶實現(xiàn)現(xiàn)代化。下面是針對每一個合作伙伴所必須說的內(nèi)容:

邊注:Microsoft正在積極推動Xamarin和MonoCross的事實最終應(yīng)該會平息一直流傳的Microsoft打算控告Mono制造商的謠言。

大型、關(guān)鍵業(yè)務(wù)應(yīng)用程序指南

對于大型企業(yè)以及它們的關(guān)鍵業(yè)務(wù)應(yīng)用程序而言,焦點不再是成本和生產(chǎn)率,而是復(fù)雜性管理和服務(wù)的質(zhì)量。下面的指導(dǎo)方針并不適合數(shù)據(jù)驅(qū)動或者CRUD風(fēng)格的應(yīng)用程序,從事這種工作的開發(fā)者應(yīng)該參照中小型企業(yè)指南。這些指導(dǎo)方針適用于有許多相互聯(lián)系的部分同時有大量獨立子系統(tǒng)的系統(tǒng)。

企業(yè)Web應(yīng)用程序

Microsoft對于這一點的態(tài)度是明確的,他們認為關(guān)鍵的Web網(wǎng)站應(yīng)該使用ASP.NET MVC。唯一的架構(gòu)問題是是否應(yīng)該在它上面使用單頁面應(yīng)用程序設(shè)計模式。

不推薦使用其他Web技術(shù),例如Web表單和Web頁面。因為它們不具備MVC的控制性和可測試性,這反過來限制了可獲得的服務(wù)的質(zhì)量。

企業(yè)桌面應(yīng)用程序

對于小型應(yīng)用程序,Microsoft的推薦列表中依然包含WPF和WinForms。這種場景下他們還增加了C++和Win32/MFC。Microsoft推薦在可以與Microsoft Office相比的這種大型、長期項目中使用C++。這里的一個假定是AutoCAD和Paint.NET在規(guī)模方面是不同的。

企業(yè)Windows商店/Windows Phone

對于這一場景,Microsoft給出的建議類似于“新興應(yīng)用程序模式”部分所給出的建議,除此之外并沒有其他內(nèi)容。這樣的態(tài)度并沒有給用戶灌輸太多的信心,但是也沒有徹底地放棄平臺。

模式和實踐

在指南的最后,Microsoft并沒有繼續(xù)討論產(chǎn)品,而是花了大約20頁左右的篇幅討論模式和實踐。

控制反轉(zhuǎn)

Microsoft在討論依賴注入和控制反轉(zhuǎn)容器上花費的大量時間簡直令人驚訝。他們列出了9個單獨的控制反轉(zhuǎn)容器,其中最主要的一個是非附屬于Microsoft的社區(qū)運行的項目。應(yīng)該注意的是,他們列出的許多框架并不是真正意義上的IoC容器,而是依賴注入框架。

Microsoft并沒有在這一部分清晰地表述出自己更喜歡組合根(一種DI模式)還是更喜歡服務(wù)定位(一種IoC容器模式),所以用戶對這兩者的疑惑依然存在,這相當令人沮喪,因為正如Mark Seemann所說:他們在本質(zhì)上是對立的。

Microsoft使用了“單一職責(zé)模式”證明依賴注入的使用。例如,他們說SRP可能會導(dǎo)致一個類的構(gòu)造函數(shù)中有15個依賴。為了“解耦”這些依賴,他們建議從構(gòu)造函數(shù)中移除這些依賴,然后使用控制反轉(zhuǎn)容器進行注入。

Microsoft還提到應(yīng)使用面向切面的編程添加一些其他的間接層,并且進一步注入依賴。

邊界上下文和復(fù)雜性管理

為了控制復(fù)雜性,Microsoft花了幾頁討論“邊界上下文”的概念。據(jù)Eric Evans所說,它的基本思想是將應(yīng)用程序分成更小的部分,各部分之間使用有限的共享。下面的例子有4個獨立的棧,它們使用不同的后端和一個共同的UI。

(單擊放大圖片)

Microsoft在這一部分的建議非常有道理。對于被識別出來作為關(guān)鍵任務(wù)的邊界上下文,你可以使用更加昂貴的命令、查詢職責(zé)分離(CQRS)或者領(lǐng)域驅(qū)動設(shè)計(DDD)模式以及完全的自動化測試。同時,輔助性的邊界上下文可以使用輕量級的、CRUD風(fēng)格的架構(gòu)。當然,遺留代碼會有它自己的倉庫,在那里它們會被隔離并被慢慢替代。

通信和防護

如果想要在邊界上下文之間共享信息,那么Microsoft推薦盡可能地使用異步消息。這樣每個部分就能夠獨立工作,即使某個部分失敗了也不會影響其他部分。對于簡單的場景,命名管道和Microsoft消息隊列是比較容易的選項,而更復(fù)雜的系統(tǒng)則需要一個服務(wù)總線。Microsoft提到了Windows Server服務(wù)總線、Windows Azure服務(wù)總線以及NServiceBus,但是并沒有說更喜歡哪一個。

邊界上下文暴露的所有服務(wù)都應(yīng)該有一個防護層對其進行保護。就像應(yīng)該對參數(shù)進行檢查以保護公共函數(shù)一樣,邊界上下文的防護層可以讓底層的數(shù)據(jù)存儲免受畸形消息的侵害。這一層會驗證進入的消息,執(zhí)行所有必要的轉(zhuǎn)換,并且確保壞數(shù)據(jù)會被處理和存儲。用戶可以使用普通的.NET代碼實現(xiàn),但是對于復(fù)雜的、有很多頻繁變化的業(yè)務(wù)規(guī)則的場景,Microsoft推薦使用規(guī)則引擎和集成平臺,例如BizTalk。

處理遺留代碼

處理遺留代碼的第一步是為其創(chuàng)建一個外觀層。該外觀層應(yīng)該使用現(xiàn)代的技術(shù),例如持續(xù)的、可擴展的緩存,并且應(yīng)該隱藏舊代碼使用的所有模式。隨著時間的推移,遺留代碼將會被置換,外觀層會被重定向到新的服務(wù)層。

結(jié)論

Microsoft推薦使用所有的.NET 本地、Web和通信框架,瀏覽器端的Silverlight和.NET Remoting除外。在一些場景下他們還推薦使用C++和JavaScript。像VB 6和傳統(tǒng)ASP這樣的舊平臺根本沒有被提及,所以依然在使用這些技術(shù)的公司應(yīng)該盡快地遷移到新技術(shù)上。

不出所料,Microsoft繼續(xù)強調(diào)了依賴注入,特別是它們與ASP.NET MVC及Entity Framework的結(jié)合。企業(yè)試圖集成現(xiàn)場和云架構(gòu)的趨勢讓BizTalk這個一度被認為已經(jīng)死亡的技術(shù)看到了再度煥發(fā)生機的希望。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产又色又爽又黄又大| 色婷婷丁香激情五月天| 国产精品国产亚洲区久久| 日本熟女中文字幕一区| 亚洲天堂一区在线播放| 日本高清加勒比免费在线| 日韩一区二区三区四区乱码视频 | 激情亚洲内射一区二区三区| 国产日韩熟女中文字幕| 日韩国产精品激情一区| 欧美国产亚洲一区二区三区| 成人欧美精品一区二区三区| 久久黄片免费播放大全 | 九九久久精品久久久精品| 日韩色婷婷综合在线观看| 午夜久久久精品国产精品| 日本熟女中文字幕一区| 亚洲一区二区精品免费| 中文字幕亚洲精品乱码加勒比| 美女黄色三级深夜福利| 日本熟女中文字幕一区| 超薄肉色丝袜脚一区二区| 伊人久久五月天综合网| 日本不卡在线视频中文国产| 麻豆视频传媒入口在线看| 国产水滴盗摄一区二区| 国产传媒一区二区三区| 欧美日本亚欧在线观看| 国产日韩精品激情在线观看| 国产午夜福利一区二区| 五月婷日韩中文字幕四虎| 日韩三极片在线免费播放| 成人午夜视频精品一区| 国产午夜精品美女露脸视频 | 国产欧美一区二区另类精品| 久久精品蜜桃一区二区av| 国产性色精品福利在线观看| 激情视频在线视频在线视频| 激情五月天免费在线观看| 国产一级内射麻豆91| 香蕉网尹人综合在线观看|