自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺談在Azure云中部署支持MVC的ASP.NET程序

開發(fā) 后端
作者的寫作風(fēng)格可能與一般程序員的風(fēng)格不太一樣,有些云里霧里。不過云計(jì)算現(xiàn)在給人的感覺也不正是云里霧里嗎?先看看作者是怎么實(shí)現(xiàn)的。

之前我就像某人說的那樣,I’m not quite a cloud guy,但是后來看了各式各樣的演示,認(rèn)識(shí)了 Cloud Project 的構(gòu)成,以及 Mix 09 里面某人說 "It’s fun!” 以后,就沖著這句 It’s fun,我就扔了個(gè) Hello World 上去,感覺還不錯(cuò)的,但是缺乏做點(diǎn)什么的動(dòng)力,后來就丟在一邊了。差不多的時(shí)間知道了 Google App Engine, 但不知GAE 猴年馬月才能用 .Net 技術(shù)的,我不會(huì)python/java,而且現(xiàn)在貌似 GAE 沒有跟 WorkerRole 相應(yīng)的東西,但是好歹也用上了GAppProxy,也叫在 Google 的云上爽了一把。

這個(gè)情況下,在心愛的微軟的云上卻只有一個(gè) Hello World 實(shí)在太說不過去了,于是打算找一段時(shí)間,將自己認(rèn)識(shí)的有能力演示出來的東西都搞到云上去,反正現(xiàn)在 Azure 是免費(fèi)的(希望以后的收費(fèi)政策是 GAE 現(xiàn)在那種模式吧),不用白不用,浪費(fèi)了自己漂亮的域名多可惜啊。好,就從剛 Release 不久的 Asp.Net MVC 開始。

如何開始

現(xiàn)在的 Visual Studio Tools for Azure(0903CTP) 是沒有安裝所謂的 MVC WebRole 模板的,也就是在 Roles –> Add –> New Web Role Project 不能搞出一個(gè)以 MVC 結(jié)構(gòu)開始的模板,只有 Default.aspx、web.config:

默認(rèn)的初始項(xiàng)目

顯然不夠,然后發(fā)現(xiàn) Roles –> Add –> Web Role Project in solution.. 選項(xiàng)不能用,于是刪掉默認(rèn)的 Web Role Project,新建一個(gè) MVC Web Application 到解決方案,發(fā)現(xiàn)該選項(xiàng)仍然是無效的:

無效選項(xiàng)。。

這時(shí)候,我的做法是用 diff 工具比較 MVC 項(xiàng)目文件 (C# 項(xiàng)目就是 .csproj 了) 和 Web Role 的項(xiàng)目文件,發(fā)現(xiàn) MVC 項(xiàng)目文件沒有 Web 以及一些指向 Azure SDK 中一些程序集的引用,用 diff 工具很快就能補(bǔ)上這些東西了。重新加載修改過的 MVC 項(xiàng)目文件,Roles –> Add –> Web Role Project in solution.. 就能選上了。

添加當(dāng)前解決方案中的 WebRole 項(xiàng)目可用了

如果像我在開始的時(shí)候順便創(chuàng)建了測試項(xiàng)目的話,在上面這個(gè)過程可能會(huì)造成測試項(xiàng)目丟失對MVC項(xiàng)目的引用,編譯時(shí)會(huì)提示,加上即可。現(xiàn)在,按 F5 調(diào)試,等一輪初始化過程,MVC 項(xiàng)目默認(rèn)首頁出來了。這就完成了嗎?

AspProviders & StorageClient

是差不多了,但是在 Azure 上運(yùn)行的應(yīng)用程序可以有多個(gè) Instances 的,每個(gè) Instance 運(yùn)行在不同的 Appdomain 里(瞎猜的,甚至可能在不同的虛擬機(jī)中,分布在不同的地理位置……),反正是隔離的,那么像登陸這類需要 Session 的操作會(huì)產(chǎn)生一些問題,具體什么問題很難說,我沒試過,大概就是注冊不了啊,登陸記不住之類的。這時(shí)候發(fā)揮 Google 的長處,會(huì)有驚喜的,我找到了 4 篇(1,2,3,4)相關(guān)的文章,原文都是英文,比較詳細(xì),另外還有幾篇出自園友。除了關(guān)鍵的步驟,我就不重復(fù)他們的東西了。

說起來慚愧,我不是讀計(jì)算機(jī)專業(yè)的,之前學(xué)過一點(diǎn) Asp,沒怎么學(xué)習(xí)過 Asp.Net,因此很多東西都是不久前才知道的,例如 Asp.Net 2.0 的 Provider Model。在這里 Provider Model 抽象出儲(chǔ)存的實(shí)現(xiàn),使得 Asp.Net 的各種狀態(tài)可以自由選擇儲(chǔ)存在不同的媒介中,而且可以通過配置文件更改,不得不說這個(gè)設(shè)計(jì)實(shí)在非常好。上面給出的第四篇相關(guān)文章就敘述了怎么打造一個(gè)可以在 Cloud 運(yùn)行的 Membership Provider。

在 Azure SDK 的安裝目錄中,有一個(gè) Samples.zip,里面包含有微軟提供的 AspProviders 例子,該例子提供了利用 Azure Storage 作為狀態(tài)信息的儲(chǔ)存媒介的樣例,順便也做了使用里面 StorageClient 樣例的例子,哈哈,在這里能發(fā)掘不少東西的。因?yàn)?StorageClient 很多公共方法沒有文檔,給 Supress 了。

RTFM

AspProviders 文件夾里有一樣很重要的東西,就是 providers-extended-readme.mht,我覺得這個(gè)文件一定要重視,如果你不打算寫自己的 Providers 的話。里面有些代碼用紅色高亮了,可惜背景是灰色的,看完肯定報(bào)廢一只眼睛,建議拿 Word 把那里的背景顏色改成黃色,看起來就舒服多了。

高亮背景改成黃色后

以下是我 RTFM 總結(jié)后的做法,希望對大家有用:

1.修改 Web.config,使那些 Providers 生效。大部分代碼可以從 AspProvidersDemo 中復(fù)制。其中要修改的是 appName 屬性,修改成應(yīng)用的名稱。Profile 的那個(gè) inherits 屬性刪去,否則會(huì)出現(xiàn)運(yùn)行時(shí)錯(cuò)誤。

2.不使用readme 里面的標(biāo)準(zhǔn) appSettings 設(shè)置 tableServiceBaseUri 等 addtional options,因?yàn)榘l(fā)布到云上就不能修改了,然而在本地調(diào)試的時(shí)候,用的是 local development storage。

3.修改 .csdef 和 .cscfg 文件,本地調(diào)試時(shí)按照 相關(guān)文章2 填寫,發(fā)布上傳之前,.cscfg 改成: 

<ConfigurationSettings>
  <Setting name="DefaultProviderApplicationName" value="YourApplicationName"/>
  
  <Setting name="AccountName" value="YourStorageAccountName"/>
  <Setting name="AccountSharedKey" value="YourStorageAccountPrimaryKey"/>
  <Setting name="BlobStorageEndpoint"
value="https://YourStorageAccountName.blob.core.windows.net"
/> <Setting name="QueueStorageEndpoint"
value="https://YourStorageAccountName.queue.core.windows.net"
/> <Setting name="TableStorageEndpoint"
value="https://YourStorageAccountName.table.core.windows.net"
/> <Setting name="allowInsecureRemoteEndpoints" value="false"/> ConfigurationSettings>

1.這里我加上了 DefaultProviderApplicationName 這條,否則用默認(rèn)的:appName,有點(diǎn)惡心,這樣做記得在 .csdef 文件上加上相應(yīng)的定義。(多口一句:怎么像 C++ 的 h 文件那樣啊,居然要自己聲明元數(shù)據(jù)……)一些已知的問題

在我給出的相關(guān)文章里有了,簡單歸納就是:

1.注意 Request.Url 的額外信息

2.安裝這個(gè) HotFix(同時(shí)修復(fù)了一個(gè) WPF 設(shè)計(jì)器的問題)

3.不明白為什么要 Create Test Storage Tables 的話,請看這里

最后

可能因?yàn)锳zure 還是 Preview 階段吧,這些 Providers 的配置都要靠自己RTFM 然后人工完成,希望微軟以后能提供 Azure MVC WebRole Project 模板,集成一套 Azure AspProviders,以及 StorageClient。然后呢,繼續(xù)讓某些人罵微軟太體貼,哈哈!說實(shí)話,微軟雖然讓人感覺無時(shí)無刻都在 JIT,但這不是很好嗎,這樣才有激情,讓微軟有動(dòng)力嘛……又跑題了……

【編輯推薦】

  1. 云計(jì)算推波助瀾 非關(guān)系數(shù)據(jù)庫蓄勢待發(fā)
  2. 如何在Windows Azure云上托管SilverLight應(yīng)用
  3. 詳解Azure云計(jì)算 訪微軟互連系統(tǒng)部門全球副總裁
責(zé)任編輯:彭凡 來源: 博客園
相關(guān)推薦

2009-07-23 15:44:39

ASP.NET MVC

2009-07-22 13:24:24

ASP.NET MVC

2009-07-24 10:41:00

asp.net mvc

2009-07-28 18:00:11

ASP.NET程序

2009-12-07 09:23:05

ASP.NET MVC

2009-07-20 12:42:04

MvcContrib.ASP.NET MVC

2009-07-23 10:08:24

asp.net mvc

2009-07-21 15:02:19

ASP.NET應(yīng)用程序

2009-12-21 10:05:10

ASP.NET MVC

2009-07-24 13:20:44

MVC框架ASP.NET

2009-07-22 16:11:43

ASP.NET AJA

2009-07-20 15:30:11

ASP.NET應(yīng)用

2009-01-16 13:17:16

AjaxASP.NET.NET

2009-06-15 10:57:51

FluentHtmlASP.NET MVC

2011-01-28 09:45:29

ASP.NET MVC

2009-07-24 10:52:42

ASP.NET ISA

2009-07-31 12:43:59

ASP.NET MVC

2009-08-05 10:16:54

部署ASP.NET應(yīng)用

2009-07-24 11:25:53

Web應(yīng)用程序工程ASP.NET MVC

2009-07-22 18:07:55

論壇應(yīng)用程序ASP.NET MVC
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)