中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

Azure和Bing Maps API示例經(jīng)驗分享

  頭疼的Bug,糟糕的代碼,崩潰的調(diào)試作為開發(fā)人員的你,遇到上述任何一種情況可能就會陷入抓狂。如果能直接獲得需要的代碼,編程的活兒就會輕松許多。

  微軟最新推出的一站式示例代碼庫,讓開發(fā)人員可以免費獲得所需的示例代碼或向微軟工程師提出示例請求,輕松解決常見的編程問題,大大減輕工作負擔。

  本文以一個名為AzureBingMaps的示例應(yīng)用程序為例,分享了一些在開發(fā)該示例過程中積累的經(jīng)驗,以期對廣大開發(fā)人員有所幫助。AzureBingMaps是一個旅游站點管理系統(tǒng),演示了很多技術(shù),可以認為是一個實際項目。

  寫這個示例的初衷

  在Windows Azure論壇,我們常見到這樣的開發(fā)人員:他們已經(jīng)學(xué)習(xí)了很多開發(fā)技術(shù),例如ASP、.NET、Silverlight等,并對這些技術(shù)有了較深入的了解。但當他們需要將學(xué)到的知識應(yīng)用到實際項目中時,新的問題便產(chǎn)生了。

  • 針對特定場景該如何選擇平臺和技術(shù)?
  • 不同的技術(shù)怎樣結(jié)合起來使用?
  • 如果在使用某項技術(shù)的過程中發(fā)現(xiàn)了局限性該如何解決?
  • 如果必須使用不熟悉的技術(shù)該怎么辦?

  如今的網(wǎng)絡(luò)技術(shù)資源絕大多數(shù)都只針對某一種特定的技術(shù),指導(dǎo)人們?nèi)绾问褂靡粋€特定的功能,對那些希望學(xué)以致用、開發(fā)實際項目的開發(fā)人員而言,這遠遠不夠。

  鑒于此,我們開始嘗試使用微軟的各種技術(shù)開發(fā)一個相對完整的項目,體會大家可能遇上的問題,從而形成了本文。

  選擇合適的平臺與技術(shù)

  了解用戶需求

  在項目開發(fā)前,必須了解客戶的需求。這項工作的范圍很廣,但由開發(fā)人員負責(zé)的部分通常僅限于選擇合適的平臺與技術(shù)。因此作為一個示例,我們省略了與客戶訪談以了解需求的過程,直接將非功能性需求定義如下。

  • 本系統(tǒng)在旅游旺季需要支持1,000,000個用戶同時訪問,在非旅游旺季只需要支持1,000個用戶同時訪問。
  • 公司沒有自己的數(shù)據(jù)中心,IT部門最多只能提供3臺中檔服務(wù)器給我們的系統(tǒng)。
  • 我們團隊對.NET和Visual Studio比較熟悉。
  • 本系統(tǒng)對操作系統(tǒng)及網(wǎng)絡(luò)環(huán)境并沒有特定的需求。
  • 第三方開發(fā)人員應(yīng)該可以針對我們的服務(wù)自行開發(fā)客戶端應(yīng)用程序。

  這些需求也正是我們的客戶—Windows Azure論壇上參與討論的開發(fā)人員—常常需要解決的問題。

  選擇合適的平臺

  需求明確地指出可伸縮性是必須考慮的因素。為了滿足旅游旺季時1,000,000個用戶同時訪問的需求,我們可能會考慮如下方案。

  • 采用負載平衡,然而3臺中檔服務(wù)器即使采用了負載平衡也很難保證滿足我們的需求。
  • 尋找云計算供應(yīng)商,將我們的系統(tǒng)部署在外部的數(shù)據(jù)中心,如果選擇的供應(yīng)商合適,支持多臺服務(wù)器負載平衡,就能確保滿足高并發(fā)訪問的需求。

  于是,我們的需求引領(lǐng)我們考慮選擇云計算。然而市場上也有很多云計算供應(yīng)商,選擇哪家最適合呢?這個問題還是要通過需求來解答。

  • 在非旅游旺季我們只需要支持1,000個用戶同時訪問,因此我們選擇的供應(yīng)商必須允許我們隨時更改使用計劃,例如,旅游旺季租用2,000臺服務(wù)器,非旅游旺季只租用2臺服務(wù)器
  • 鑒于項目組對.NET和Visual Studio比較熟悉,我們希望應(yīng)用現(xiàn)有的知識進行開發(fā),這意味著我們選擇的供應(yīng)商必須支持.NET
  • 既然我們的系統(tǒng)對操作系統(tǒng)和網(wǎng)絡(luò)環(huán)境沒有特定的需求,我們就不希望花太多的時間在這些環(huán)境配置上。例如,我們不希望手工配置操作系統(tǒng)和安裝各種需要的軟件;希望即使需要租用2,000臺服務(wù)器,也可以讓項目組致力于應(yīng)用程序的開發(fā),而不是基礎(chǔ)設(shè)施的配置。

  綜上所述,我們發(fā)現(xiàn)Windows Azure平臺可以滿足需求。在Windows Azure平臺中,我們可以隨時簡單通過修改配置文件的方式來選擇租用幾臺服務(wù)器,而且理論上可租用的服務(wù)器數(shù)量確實沒有上限。它也完全支持.NET平臺,而且操作系統(tǒng)以及常用的軟件(例如數(shù)據(jù)庫),也不需要手工配置。

  當然,我們承認如上定義正好符合WindowsAzure平臺的需求,這也是出于我們是針對這個平臺撰寫示例的考慮。但在實際項目中,大家確實需要考慮上述因素。如果你不需要高度可伸縮性,Windows Azure平臺可能就不適合你,畢竟它的價格相對于一般的Web供應(yīng)商而言是比較高的。如果你對操作系統(tǒng)和網(wǎng)絡(luò)環(huán)境有特定的需求,那么目前Windows Azure平臺也不適合你。你應(yīng)該根據(jù)實際需求,尋找合適的平臺。

  選擇合適的技術(shù)

  在選取技術(shù)的過程中,客戶需求以及開發(fā)團隊的經(jīng)驗也是非常重要的。

  需求指出第三方開發(fā)人員需要針對我們的服務(wù)自行開發(fā)客戶端程序,因此開發(fā)服務(wù)時我們需要選擇一個能讓較多客戶端平臺都接受的技術(shù),最好是一個國際標準。于是我們決定使用REST。此外,我們的服務(wù)需要暴露一些數(shù)據(jù)給客戶端,因此將使用OData。OData是基于REST標準,定義了如何訪問數(shù)據(jù)的一種拓撲,并且被廣泛地使用著。我們的開發(fā)團隊熟悉.NET,于是我們選擇在.NET平臺上能方便地實現(xiàn)OData的一項技術(shù),也就是WCF Data Services。

  在數(shù)據(jù)存儲方面,Windows Azure平臺上有兩種常見的數(shù)據(jù)存儲服務(wù):Table Storage和SQL Azure。考慮到Table Storage目前還有較多局限性(例如不支持排序),我們決定使用SQL Azure。不過SQL Azure也有自己的局限性,最重要的一點就是目前它不具備Table Storage所提供的自動伸縮功能,也就是說當數(shù)據(jù)量大的時候,如何確保高效訪問數(shù)據(jù),是一個問題。不過這個問題也不是特別難以解決,請參考本文設(shè)計可伸縮的數(shù)據(jù)庫章節(jié)尋找解決方案。此外,SQL Azure還支持空間數(shù)據(jù)(Spatial Data),也就是存放地理信息的數(shù)據(jù),我們示例的場景正需要地理信息,所以空間數(shù)據(jù)也是一個很自然的選擇。

  至于數(shù)據(jù)訪問,.NET平臺提供了Entity Framework,這是一種O/R Mapping的框架,可以讓開發(fā)人員在不需要考慮如何撰寫SQL語句的情況下進行數(shù)據(jù)訪問操作,而將精力專注于面向?qū)ο蟮脑O(shè)計。不過目前Entity Framework對空間數(shù)據(jù)的支持并不很完美,所以采用它將會給項目帶來一定風(fēng)險。

  另外一個選擇是直接使用SqlConnection以及SqlCommand,但這種方式比較煩瑣,而且代碼也不易維護。綜合考慮,我們決定先做一個簡單的原型,嘗試將Entity Framework和Spatial Data結(jié)合使用,如果在開發(fā)該原型的過程中遇上了太多困難,我們將采用SqlConnection的方式。當然最終證明困難并不是很大,于是我們的示例還是采用了Entity Framework。

  最后還有客戶端,在客戶端的技術(shù)選擇上,我們首先考慮是選擇Web還是Desktop。絕大多數(shù)情況下,Web應(yīng)用程序都占據(jù)著得天獨厚的優(yōu)勢,因為用戶不需要安裝,甚至不需要下載。當然Web應(yīng)用程序在用戶體驗上可能略有不足,不過隨著HTML5以及Silverlight的普及,差距也是越來越小了。如今Desktop程序最大的優(yōu)勢在于能夠訪問更多的系統(tǒng)資源,以及可以更好地支持離線使用。

  對于我們的場景而言,我們不需要訪問特定的系統(tǒng)資源,而且可以暫時不考慮離線訪問的狀況,所以針對PC類的大型設(shè)備我們選擇了Web。不過,手機類的設(shè)備則是另外一回事。大多數(shù)手機瀏覽器不僅相對而言屏幕較小,而且功能支持也比較少,例如Silverlight一類的插件不受支持,而且也缺乏PC瀏覽器常見的那種TabbedView一類的效果。所以如果針對手機設(shè)備開發(fā),往往還需要選擇該設(shè)備直接支持的技術(shù)。

  至于為何選擇AJAX和Silverlight兩個PC客戶端,以及Windows Phone,就純粹是出于示例的需要了。還是那句話,如果你的需求不同,你就應(yīng)該根據(jù)需求選擇適合于當前項目的技術(shù),而不是生搬硬套...

NET技術(shù)Azure和Bing Maps API示例經(jīng)驗分享,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 嫩草网| 伊人婷婷| 91精品亚洲 | 91视频.| 国产精品久久久久久久久久不蜜臀 | 国产精品免费看 | 免费久久精品视频 | 国产乱人伦 | 天天曰天天曰 | 国产精品久久久久久久7电影 | 国产大毛片 | 五月免费视频 | 一区二区国产精品 | 99久久免费精品国产免费高清 | 欧美成人精品二区三区99精品 | 操操操av | 中文字幕视频网 | 国产乱码精品一区二区三区五月婷 | 国产精品99久久久久久动医院 | 国产91久久精品一区二区 | 99精品亚洲国产精品久久不卡 | 91久久久久 | 久久精品91久久久久久再现 | 91精品国产91久久久久青草 | 欧美日韩精品一区二区 | 成人免费网站 | 国产欧美视频一区二区三区 | 夜夜爽99久久国产综合精品女不卡 | 欧美激情视频一区二区三区在线播放 | 日韩伦理一区二区 | 欧美一级黄带 | 91av国产在线视频 | 中文字幕免费视频 | 日韩欧美精品在线 | 日韩www视频 | 国产乱肥老妇国产一区二 | 欧美日韩精品一区二区 | 中文字幕一区二区三区在线视频 | 99精品国产一区二区三区 | 高清av电影 | 色婷婷亚洲一区二区三区 |