成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用Microsoft Azure 讓云遷移變得簡便的5種方法

原創(chuàng)
云計(jì)算
開發(fā)者們接受Microsoft Windows Azure的速度異乎尋常的快。因?yàn)樗腔赪indows 和 .NET的,所以它和開發(fā)者們現(xiàn)有的應(yīng)用程序是高度兼容的,使用Microsoft Windows Azure作為云平臺的話,應(yīng)用程序可以很輕松地遷移到云中。

開發(fā)者們接受Microsoft Windows Azure的速度異乎尋常的快。因?yàn)樗腔赪indows 和 .NET的,所以它和開發(fā)者們現(xiàn)有的應(yīng)用程序是高度兼容的,使用Microsoft Windows Azure作為云平臺的話,應(yīng)用程序可以很輕松地遷移到云中。

通常,一個(gè)應(yīng)用程序要遷移到云中,需要經(jīng)過兩個(gè)關(guān)鍵性的階段。第一個(gè)階段是盡可能地少做改動(dòng),讓它可以“原封不動(dòng)”地在Microsoft Azure中發(fā)揮作用,在這個(gè)階段,只改變那些不得不改變的地方就可以了。第二個(gè)階段是對這個(gè)應(yīng)用程序的一些組件進(jìn)行升級,讓你的應(yīng)用程序可以利用上那些Microsoft Azure提供的獨(dú)一無二的能力。

在本文中,我們將會(huì)討論一些在完成第一個(gè)階段(只要可以在Microsoft Azure中正常工作就可以了)的過程中遇到的問題。大多數(shù)的遷移項(xiàng)目都是從“云適應(yīng)性”分析開始的,這可以幫助你識別出要完成遷移,哪些部分需要做一些額外的工作。當(dāng)你正在進(jìn)行第一個(gè)階段的時(shí)候,搞清楚你的系統(tǒng)架構(gòu)是至關(guān)重要的,同時(shí),你要讓必須要做的代碼變更最小化。如果你使用一個(gè)完整的單元測試套件來構(gòu)建你的系統(tǒng),那么現(xiàn)在你可以開始?xì)g呼雀躍了。

1,數(shù)據(jù)遷移

從應(yīng)用程序的底層開始,我們就不得不面對我們應(yīng)該把數(shù)據(jù)存儲到哪里,以及如何存儲的問題。最常見的ASP.NET應(yīng)用程序使用SQL Server把數(shù)據(jù)存儲在關(guān)系數(shù)據(jù)模型中。無論你的代碼如何使用這些數(shù)據(jù)(Entity Framework, nHibernate, ADO.NET等),你都應(yīng)該關(guān)注一下如何把SQL數(shù)據(jù)庫遷移到SQL Azure中。這樣做的話,可以讓你的應(yīng)用程序處于“near data”的場景之中,在這種場景中,應(yīng)用程序可以保持高度的響應(yīng)性。

一個(gè)Microsoft Azure中的應(yīng)用程序完全可以通過一個(gè)內(nèi)置的SQL Server來連接和使用數(shù)據(jù),但是這樣做的話,會(huì)創(chuàng)建一個(gè)“far data”的場景。在這種場景中,數(shù)據(jù)訪問的延遲會(huì)很大,而且性能也會(huì)有所降低。

SQL Azure和SQL Server是高度兼容的,所以遷移起來并不是很困難,對于那些小型數(shù)據(jù)庫來說,情況更是如此。你必須要留意一下你自己可以使用的SQL Azure數(shù)據(jù)庫的最大尺寸,目前,這個(gè)最大尺寸是50GB。如果你的數(shù)據(jù)庫比這個(gè)尺寸還要大,那么你必須對你的數(shù)據(jù)進(jìn)行分割。

有一個(gè)叫作SQL Azure Migration Wizard的開源工具可以幫助你完成這個(gè)任務(wù),你可以使用它來分析和遷移你的數(shù)據(jù)。它可以分析你當(dāng)前的模式,指出和SQL Azure不兼容的地方,然后幫助你修改這些地方。再然后,它可以在后臺使用BCP,把你的數(shù)據(jù)遷移到云中。你可以在這個(gè)頁面中找到這個(gè)工具。

長期來看,你可以對你的數(shù)據(jù)進(jìn)行分析,判斷出哪些數(shù)據(jù)從本質(zhì)上來說是非關(guān)系型的,然后把它們遷移到Windows Azure Table storage中。

#p#

2,ASP.NET的Session狀態(tài)

許多ASP.NET的Web應(yīng)用程序使用Session狀態(tài)來跟蹤一個(gè)用戶使用這個(gè)應(yīng)用程序的行為。這可能是他們的配置信息,一個(gè)購物框,或者他們在一個(gè)業(yè)務(wù)流程中的具體位置。Session狀態(tài)是一個(gè)強(qiáng)大的工具(如果不過度使用的話),它可以讓無狀態(tài)的環(huán)境具有狀態(tài)。

由于許多Web程序都依賴Session狀態(tài),所以它們的負(fù)載均衡器都是針對“粘性的session”來配置的。這意味著一旦用戶開始使用你的站點(diǎn),那么他們總是要回到服務(wù)器集群中的同一個(gè)服務(wù)器中(至少在這個(gè)Session期間是這樣的)。這使得把狀態(tài)保存在那個(gè)特定的Web服務(wù)器的某個(gè)進(jìn)程的內(nèi)存中成為可能。我不是很喜歡這種方法,因?yàn)椋S著時(shí)間的推移,這種方法會(huì)導(dǎo)致負(fù)載出現(xiàn)不均衡,而且,當(dāng)一個(gè)服務(wù)器出現(xiàn)問題的時(shí)候,這會(huì)導(dǎo)致可靠性方面的盲點(diǎn)。如果一個(gè)服務(wù)器掛掉了,那么用戶會(huì)和那個(gè)服務(wù)器一起掛掉。

因?yàn)镸icrosoft Azure中的負(fù)載均衡器是非粘性的,所以你可以找到一種方法,讓Session狀態(tài)對Azure環(huán)境中的每個(gè)服務(wù)器都可用。謝天謝地,ASP.NET中的Session狀態(tài)機(jī)制使用的是提供者模式。在這種模式中,你可以更換新的提供程序來改變Session狀態(tài)在Web服務(wù)器集群中的存儲方式和托管方式。你可以通過部署一個(gè)程序集,然后改變web.config中的某些設(shè)置的方式來改變你正在使用的提供程序。

ASP.NET帶有三個(gè)默認(rèn)的提供程序。最常見的是進(jìn)程內(nèi)內(nèi)存提供程序,它的行為如上所述。第二個(gè)提供程序是一個(gè)狀態(tài)服務(wù)器,這是一個(gè)專用的服務(wù)器,它可以把狀態(tài)保存在它自己的內(nèi)存中。另外一個(gè)提供程序是SQL Server提供程序,它可以把Session狀態(tài)存儲到一個(gè)SQL Server數(shù)據(jù)庫中。對于用戶來說,由于每個(gè)Web服務(wù)器都可以從這個(gè)數(shù)據(jù)庫載入合適的Session,所以,現(xiàn)在用戶可以在整個(gè)集群中任意跳轉(zhuǎn)了。

雖然在Microsoft Azure中,你可以使用SQL Server提供程序,然后把它指向一個(gè)SQL Azure數(shù)據(jù)庫,但是使用基于Windows Azure Storage的提供程序會(huì)更好一些。使用這個(gè)提供程序,Session中的條目可以放在一個(gè)和每個(gè)用戶相對應(yīng)的Azure Table中,或者應(yīng)用程序中。由于狀態(tài)的確切尺寸和形態(tài)不可以提前預(yù)知,所以真正的狀態(tài)會(huì)被作為一個(gè)文件存儲在一個(gè)Azure Blob容器中。

你可以通過查找Windows Azure Platform Training kit來下載這個(gè)提供程序。在這個(gè)工具包中,有一個(gè)叫作AspProviders樣例項(xiàng)目。你可以直接把這個(gè)項(xiàng)目添加到你的解決方案中,也可以使用程序集引用的方式,把那個(gè)DLL添加到你的項(xiàng)目中。

如果你引用了這個(gè)程序集,那么你必須修改你的web.config文件。打開你的配置文件,然后找到<system.web>元素。刪除現(xiàn)有的<sessionState>配置,然后把下面的代碼粘貼上去。當(dāng)你這么做的時(shí)候,記得把你真正的應(yīng)用程序名寫上去。

<sessionState mode="Custom" customProvider="TableStorageSessionStateProvider">

     <providers>

        <clear/>

        <add name="TableStorageSessionStateProvider" 

       type= "Microsoft.Samples.ServiceHosting.AspProviders.

            TableStorageSessionStateProvider" 

      applicationName="yourWebAppName"/>

     </providers>

  </sessionState>

#p#

3,配置

許多Web應(yīng)用程序都使用web.config來存儲運(yùn)行時(shí)配置。這很方便,而且也很安全(盡管如此,你還是應(yīng)該養(yǎng)成對敏感的信息進(jìn)行加密的良好習(xí)慣)。我們這樣做的一個(gè)優(yōu)勢是當(dāng)應(yīng)用程序正在運(yùn)行的時(shí)候也可以修改配置(盡管這會(huì)導(dǎo)致重啟)。

當(dāng)你把你的Web應(yīng)用程序部署到Windows Azure中的時(shí)候,你的軟件包會(huì)作為一個(gè)只讀的軟件包部署到你的Web角色實(shí)例中。這意味著,你的項(xiàng)目中的所有文件在運(yùn)行時(shí)都不可以被修改,包括web.config文件。這就意味著,如果你想修改web.config文件,你必須重新部署整個(gè)應(yīng)用程序,這可不是一件輕松的事情。

解決這個(gè)問題的最好方法是去除這個(gè)限制,或者對你的配置進(jìn)行重構(gòu),把它存儲在Microsoft Azure項(xiàng)目的ServiceConfiguration.cscfg文件中。在這個(gè)配置文件中的數(shù)據(jù)在運(yùn)行時(shí)可以被編輯(這也會(huì)導(dǎo)致重啟)。

把你的配置遷移到cscfg文件中需要三個(gè)步驟。首先,你必須在ServiceDefinition.csdef文件中定義配置元素。如果我們正在遷移一個(gè)以“maximum money laundering limit”作為業(yè)務(wù)規(guī)則的配置元素,那么可以這樣來定義:

  <CofigurationSettings>

     <Setting name="DiagnosticsConnectionString" />

     <Setting name="MaxMoneyLaunderingLimit"/>

  </ConfigurationSettings>

完成這個(gè)任務(wù)以后,你可以把這個(gè)設(shè)置添加到你的ServiceConfiguration.cscfg文件中,如下所示。我們把我們當(dāng)前的限制設(shè)置為100000美金。

  <ConfigurationSettings>

     <Setting name="DiagnosticsConnectionString" value="UseDevelopmentStorage=true" />

     <Setting name="MaxMoneyLaunderingLimit" value="100000"/>

  </ConfigurationSettings>

你必須要從頭到尾地查看你的代碼,然后修改你用來讀取配置的那些代碼。但愿你已經(jīng)把你的應(yīng)用程序讀取配置的代碼抽象成一個(gè)類了,這樣的話,所有讀取配置的代碼都在同一個(gè)地方,會(huì)更容易修改一些。在這種情況下,你可以這樣修改讀取配置的代碼:

  string s = RoleEnvironment.GetConfigurationSettingValue("MaxMoneyLaunderingLimit");

你可以通過門戶站點(diǎn),手工修改cscfg文件的內(nèi)容,或者,你也可以使用Service Management API來上傳一個(gè)新的配置文件。當(dāng)你這么做的時(shí)候,為了應(yīng)用新的配置,你的應(yīng)用程序會(huì)被重啟,然后RoleEnvironmentChanging事件會(huì)被觸發(fā),提醒你你的配置已經(jīng)被改變了。

#p#

4,文件系統(tǒng)的使用

許多Web應(yīng)用程序都會(huì)對文件系統(tǒng)進(jìn)行讀取和寫入。它們對文件系統(tǒng)的使用通常都很簡單,也很直接。這可能是最麻煩的修改了,因?yàn)槟惚仨氁獙Υa進(jìn)行修改。

為什么在云中這是一個(gè)問題?因?yàn)檫\(yùn)行你的代碼的那個(gè)Web服務(wù)器是無狀態(tài)的,在任何時(shí)候,它都可以被銷毀和重新創(chuàng)建。因?yàn)槭菬o狀態(tài)的,所以在正常情況下,你是無法使用本地磁盤的。

如果你只把文件系統(tǒng)當(dāng)成一個(gè)臨時(shí)的存儲空間來使用,例如存儲一個(gè)上傳文件,然后讀取它,把它載入到數(shù)據(jù)庫中,那么使用“本地存儲器”會(huì)更合適一些。“本地存儲器”是Microsoft Azure的一個(gè)功能,它可以在服務(wù)器上給你分配一塊本地磁盤,讓你隨意地使用。你必須在csdef文件中對“本地存儲器”進(jìn)行配置,然后通過RoleEnvironment對象載入路徑。“本地存儲器”是不穩(wěn)定的,這意味著無法保證這個(gè)存儲器在指定的時(shí)間段里一直是可用的。

要配置你需要的本地存儲空間,可以把下面這段代碼添加到你的csdef文件的角色配置中,然后給你請求的空間提供一個(gè)名字。你可以請求多個(gè)本地存儲器。如果在你的代碼中,你通常要使用好幾個(gè)文件夾,那么這會(huì)十分方便的。

<LocalResources>   

   <LocalStorage name="TempUploads" sizeInMB="100" cleanOnRoleRecycle="true"/>

</LocalResources>

在你使用這塊磁盤空間以前,你必須首先讀入分配給你的文件夾的物理路徑。如果你使用這兩行代碼獲取到了這個(gè)路徑,那么你用于處理常規(guī)文件的代碼就可以正常發(fā)揮作用了。

  LocalResource localCache = RoleEnvironment.GetLocalResource("TempUploads");

  string localCacheRootDirectory = localCache.RootPath;

在遷移直接對文件系統(tǒng)進(jìn)行讀取和寫入的代碼的過程中,你的第二個(gè)選擇是把你的代碼轉(zhuǎn)換為使用Azure Blob存儲器的代碼。雖然這需要對代碼進(jìn)行一些修改,但是這種遷移方式可以讓你使用上更加快速的云。

如果在遷移過程中,你可以把代碼修改到這種程度,那么你可以考慮第三個(gè)選擇了,那就是使用Microsoft Azure Drive。這是一個(gè)被格式化為NTFS驅(qū)動(dòng)器的blob(可以把它看成一個(gè)虛擬PC的VHD文件)。這個(gè)文件被格式化為一個(gè)驅(qū)動(dòng)器,在你的角色實(shí)例上,它可以作為一個(gè)本地驅(qū)動(dòng)器被載入。一個(gè)Azure驅(qū)動(dòng)器可以被掛載到多個(gè)服務(wù)器實(shí)例中,只要它是只讀的就可以了。如果你想對這個(gè)驅(qū)動(dòng)器進(jìn)行寫入操作,那么你只能把它掛載到一個(gè)實(shí)例中。

這個(gè)模型和本地存儲模型十分類似。你可以對掛載的驅(qū)動(dòng)器進(jìn)行配置,也可以使用一些代碼在運(yùn)行時(shí)判斷物理驅(qū)動(dòng)器名和被掛載的驅(qū)動(dòng)器的路徑。一旦你得到了這個(gè)路徑,你的代碼就可以像平常那樣發(fā)揮作用了。

對于Windows Azure Drive來說,一個(gè)重要的性能提升是確保你可以把一些本地存儲器配置成這個(gè)驅(qū)動(dòng)器的緩存。這是通過內(nèi)置的驅(qū)動(dòng)器API來實(shí)現(xiàn)的,在性能上有很大的提升。

#p#

5,在云中的身份標(biāo)識

許多Web應(yīng)用程序都通過集成的身份驗(yàn)證來給內(nèi)部用戶提供無縫的身份驗(yàn)證體驗(yàn)的。當(dāng)用戶瀏覽你的站點(diǎn)的時(shí)候,他們已經(jīng)登錄到他們的桌面了,他們的Windows身份標(biāo)識會(huì)被傳輸?shù)絎eb應(yīng)用程序中。他們是在毫不知情的情況下登錄的。

當(dāng)服務(wù)器不在用戶的域中,也不在同一個(gè)網(wǎng)絡(luò)中的時(shí)候,這個(gè)流程就無法發(fā)揮作用了。當(dāng)你把一個(gè)應(yīng)用程序遷移到云中的時(shí)候,用戶必須要登錄到這個(gè)應(yīng)用程序才可以使用這個(gè)應(yīng)用程序,這樣的話,他們會(huì)十分困惑的。

要把你的內(nèi)部用戶標(biāo)識和云聯(lián)系起來,最簡單的方法就是使用一種叫作“聯(lián)合身份標(biāo)識”的概念。“聯(lián)合身份標(biāo)識”(Federated Identity)是基于開放標(biāo)準(zhǔn)的,既支持OAuth又支持SAML。使用這些協(xié)議你可以把你的應(yīng)用程序配置成信任來自于你的域中的用戶的身份標(biāo)識。

要做到這一點(diǎn),你必須要使用Windows Azure AppFabric ACS服務(wù)才可以,這是一個(gè)在云中的身份驗(yàn)證服務(wù)。在你的公司中,你還必須要有一個(gè)安全標(biāo)記服務(wù)器。大多數(shù)公司使用Windows Server Active Directory Federation Services v2。如果配置好了這個(gè)服務(wù),那么,當(dāng)用戶訪問你的站點(diǎn)的時(shí)候,他們的身份標(biāo)識就會(huì)通過ACS,從ADFSv2服務(wù)器傳輸?shù)侥愕膽?yīng)用程序中。這可以給用戶提供無縫的登錄體驗(yàn),而且,對你的代碼的修改也最少。

如果你已經(jīng)開始使用ACS和“聯(lián)合身份標(biāo)識”了,那么你可以和一些商業(yè)合作伙伴,提供商,以及客戶結(jié)成同盟。這可以讓他們更容易地登錄到你的系統(tǒng)中。值得注意的是,只有你希望共享的身份標(biāo)識才應(yīng)該被共享(他們是誰,他們屬于哪些組)。真正的憑證不應(yīng)該被共享(例如密碼或智能卡)。

#p#

總結(jié)

Microsoft Azure是基于Windows Server的,SQL Azure是基于SQL Server。這讓Microsoft Azure平臺成為了一個(gè)高度兼容的環(huán)境。這可以讓應(yīng)用程序從內(nèi)部環(huán)境遷移到云中的過程變得更加容易。

注意,我說的是更加容易,而不是容易。遷移你的應(yīng)用程序所花費(fèi)的時(shí)間長短是由架構(gòu)和你的應(yīng)用程序的代碼來決定的。在幾個(gè)星期中,我已經(jīng)幫助許多客戶把他們重要的Web應(yīng)用程序遷移到云中了。當(dāng)然,遷移結(jié)束以后,應(yīng)該在這個(gè)全新的,基于云的系統(tǒng)上進(jìn)行大量的測試,來確保這個(gè)系統(tǒng)可以正常工作。

原文名:5 Ways to Use Microsoft Azure to Ease Cloud Migration 作者:Brian Prince

【本文乃51CTO精選譯文,轉(zhuǎn)載請標(biāo)明出處!】

 

    【編輯推薦】

     

    1. 微軟公布云計(jì)算平臺Azure收費(fèi)模式細(xì)節(jié)
    2. 云計(jì)算意在長遠(yuǎn),微軟云計(jì)算服務(wù)Windows Azure已經(jīng)啟用
    3. 技術(shù)透析:Windows Azure Platform框架與組成
    4. 微軟Windows Azure Platform技術(shù)解析
    5. 走近微軟云:SQL Server到Azure數(shù)據(jù)同步
    6. 當(dāng)微軟Azure遭遇亞馬遜EC2:五大關(guān)鍵區(qū)別
    7. Windows Azure云計(jì)算平臺新增五大功能
    8. 云計(jì)算前途光明 Azure用戶數(shù)突破31000

     

     

     

    責(zé)任編輯:王勇 來源: 來源:51CTO
    相關(guān)推薦

    2020-04-22 11:07:30

    云遷移公共云云計(jì)算

    2019-06-26 15:41:26

    AI云原生云遷移

    2015-10-28 14:03:32

    數(shù)據(jù)遷移數(shù)據(jù)

    2021-03-21 22:23:38

    云計(jì)算數(shù)據(jù)中心IT

    2021-01-08 15:08:53

    云計(jì)算小型企業(yè)數(shù)據(jù)

    2023-07-04 13:36:44

    2013-06-20 17:53:42

    CIO云計(jì)算

    2016-07-19 09:59:43

    云計(jì)算

    2010-08-04 09:59:11

    云計(jì)算印度賺錢

    2021-03-18 08:01:52

    Docker容器遷移

    2017-08-07 09:24:43

    云遷移安全方法

    2013-03-27 09:30:44

    數(shù)據(jù)挖掘IT基礎(chǔ)設(shè)施

    2017-08-01 15:33:01

    云遷移云安全數(shù)據(jù)泄露

    2020-04-26 10:32:58

    Kubernetes集群Pod

    2017-07-19 09:04:37

    2020-09-01 09:56:26

    云端云計(jì)算云服務(wù)

    2020-05-28 13:33:30

    React Hook前端開發(fā)

    2009-04-07 10:52:00

    職場工作方法

    2013-07-23 10:50:24

    C程序

    2019-11-21 11:10:21

    云遷移云計(jì)算
    點(diǎn)贊
    收藏

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

    主站蜘蛛池模板: 国产成人免费视频网站视频社区 | 一级黄色播放 | 三级在线观看 | 亚洲欧美一区二区三区在线 | 中文字幕加勒比 | 成人av免费 | 久久久久久久夜 | 国产羞羞视频在线观看 | 欧美日韩视频 | 亚洲人成人一区二区在线观看 | 国产精品国产a级 | 欧美精品在线一区二区三区 | 日韩欧美一区在线 | 中国黄色在线视频 | 91久久精品一区二区二区 | 亚洲免费观看视频 | 国产一区二区在线免费观看 | 91精品国产综合久久久久蜜臀 | 国产一区成人 | 成人在线免费观看视频 | 国产亚洲人成a在线v网站 | 久久久久久一区 | 亚洲精品在线观看网站 | 怡红院成人在线视频 | 久久青视频 | 91看片在线| 成人精品一区二区三区 | 日韩精品在线观看视频 | 成人精品国产免费网站 | 99精品福利视频 | 特黄级国产片 | 久久精品小视频 | 久久免费国产 | 99精品视频在线观看 | 日韩网站免费观看 | 91九色视频 | 精品91av| 亚洲福利片 | 成人欧美一区二区三区在线观看 | 欧美在线a | 久久久久久久久久久久91 |