<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Tom Lee's blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/tomleetaiwan/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/tomleetaiwan/feed.xml</link>
    <description>Win,Drive,Grow...</description>
    <lastBuildDate>Tue, 16 Apr 2019 05:33:32 GMT</lastBuildDate>
    <language>zh_TW</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>透過 Azure SDK for Media Services  與 C# 以 Azure Active Directory 進行身分驗證</title>
      <link>https://docs.microsoft.com/archive/blogs/tomleetaiwan/azureadmedia02</link>
      <pubDate>Mon, 25 Sep 2017 13:41:57 GMT</pubDate>
      <dc:creator><![CDATA[Tom Lee]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/tomleetaiwan/?p=1385</guid>
      <description><![CDATA[Microsoft Azure Media Services 將於 2018 年6月22日更改身分驗證的方式，過去 Azure Media Services 使用的 Azure Access...]]></description>
      <content:encoded><![CDATA[Microsoft Azure Media Services 將於<strong> 2018 年6月22日</strong>更改身分驗證的方式，過去 Azure Media Services 使用的 Azure Access Control Service (ACS) 身分驗證機制將被 Azure Active Directory 的驗證方式所取代 ( <a href="https://azure.microsoft.com/en-us/blog/azure-media-service-aad-auth-and-acs-deprecation/">https://azure.microsoft.com/en-us/blog/azure-media-service-aad-auth-and-acs-deprecation/</a> )。在此示範如何使用 Azure SDK for Media Services 4.0.0.4 之後版本 (  <a href="https://github.com/Azure/azure-sdk-for-media-services/">https://github.com/Azure/azure-sdk-for-media-services/</a> )  以 Azure Active Directory 進行身分驗證。

在您的程式碼中使用 Azure Active Directory 身分驗證驗證，請確認 Microsoft.WindowsAzure.MediaServices.Client.Common.Authentication 與 Microsoft.IdentityModel.Clients.ActiveDirectory 兩個 .NET Assembly 已經被您的專案檔所參考。

&nbsp;
<h3><a href="https://msdnshared.blob.core.windows.net/media/2017/09/VisualStudio.png"><img width="894" height="1024" class="alignnone wp-image-1387 size-large" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/VisualStudio-894x1024.png" /></a></h3>
&nbsp;
<h3>以互動式登入方式透過 Azure Active Directory 進行身分驗證</h3>
用戶可以在管理入口網站內針對已經建立妥的 Azure Media Services 點選 「API 存取權」(API Access)，如下圖我們會看到兩個選項，一個是針對用戶以互動方式鍵入帳號密碼對 Azure Active Directory 進行身分驗證，另一個則是針對無法互動登入的情境，例如 Server 端程式碼，透過 Service Principal 方式來進行身分驗證。如果我們的應用程式可以允許用戶以互動方式進行登入，請點選如下圖中上方的選項。

&nbsp;

<a href="https://msdnshared.blob.core.windows.net/media/2017/09/CreateMediaService02.png"><img width="1024" height="510" class="alignnone size-large wp-image-1315" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/CreateMediaService02-1024x510.png" /></a>

當點選完畢後就會出現下圖畫面。請記錄下 Azure Active Directory 租戶網域與 REST API 端點兩項資訊，這兩項資訊將提供後續 C# 程式碼身分驗證時使用。

&nbsp;

<a href="https://msdnshared.blob.core.windows.net/media/2017/09/CreateMediaService03.png"><img width="809" height="693" class="alignnone size-full wp-image-1347" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/CreateMediaService03.png" /></a>

使用 Azure SDK for Media Services 通常至少需要使用底下這幾個命名空間:

<script src="https://gist.github.com/tomleetaiwan/25637269eff559cef4ef5848dbbadb07.js"></script>

在過去使用 Azure Access Control Service (ACS) 身分驗證機制的程式碼如下，請不要再繼續使用這種即將失效的身分驗證程式碼 :

<script src="https://gist.github.com/tomleetaiwan/4626a83aee949012efded871260a522e.js"></script>

而改為使用 Azure Active Directory 身分驗證的程式碼如下，請將之前記錄下來的 「Azure Active Directory 租戶網域」與「REST API 端點」填入程式碼中對應位子 :
<script src="https://gist.github.com/tomleetaiwan/0544cd0dd0554d8c545736ac4bd2416b.js"></script>

&nbsp;
<h3>以 Service Principal 方式透過 Azure Active Directory 進行身分驗證</h3>
針對無法有人參與互動的登入的情境，例如 Server 端程式碼，就透過 Azure Active Directory 的 Service Principal 方式來進行身分驗證。當您登入 Azure 管理入口網站，請在已經建立妥的 Azure Media Services 上點選 「API 存取權」(API Access)，如下圖我們會看到兩個選項，如果要使用 Service Principal 方式進行身分驗證，請點選下方的選項。

&nbsp;

<a href="https://msdnshared.blob.core.windows.net/media/2017/09/CreateMediaService02-1.png"><img width="1024" height="510" class="alignnone size-large wp-image-1346" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/CreateMediaService02-1-1024x510.png" /></a>

當出現下圖畫面後，同樣地請記錄下 Azure Active Directory 租戶網域與 REST API 端點兩項資訊，這兩項資訊將提供後續登入程式碼時使用。使用 Service Principal 方式進行身分驗證時必須在 Azure Active Directory 內註冊一個 Azure AD Application，這個動作已經簡化可在下方畫面中快速完成，我只需要給需要呼叫 Azure Media Services API 的程式一個可供辨識名稱鍵入在「建立應用程式」欄位，輸入完畢後請點選「儲存」按鈕即可完成 Azure AD Application 註冊動作。以下圖的範例， Azure Media Services Explorer 為此一 Azure AD Application 名稱，您可以使用您的應用程式名稱取代之，鍵入完畢後按下上方儲存按鈕即可完成註冊動作。

&nbsp;

<a href="https://msdnshared.blob.core.windows.net/media/2017/09/CreateMediaService04.png"><img width="643" height="643" class="alignnone size-full wp-image-1316" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/CreateMediaService04.png" /></a>

&nbsp;

當此一 Azure AD Application 註冊完畢，我們即可點選下圖中的「管理應用程式」按鈕，取得並記錄下此一應用程式之「應用程式識別碼」(Application ID)，應用程式識別碼 (Application ID) 是一個絕對唯一，代表您這個應用程式的辨識 ID，系統會自動產生後不可修改，當呼叫 Media Services API 時會使用，此 ID 在舊版 Azure Portal 中 Azure Active Directory 管理畫面中稱為 "用戶端識別碼" (clientid)，這是沿用了 OAUTH 2.0 規格中的名稱 Client ID，所以 Application ID 與 Client ID 其實是同一件事。接下來我們需要點選下圖右方的「金鑰」準備產生一個的 Service Principal 的「金鑰」。

&nbsp;

<a href="https://msdnshared.blob.core.windows.net/media/2017/09/CreateMediaService05.png"><img width="1024" height="477" class="alignnone size-large wp-image-1325" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/CreateMediaService05-1024x477.png" /></a>

「金鑰」按下請如下圖鍵入一個可供辨識的金鑰名稱，並設定此一金鑰的有效期限，按下儲存按鈕後金鑰即會產生，特別需要注意的是金鑰產生後僅能顯示一次，請務必保存下來以供後續 C# 程式碼登入時使用。

&nbsp;

<a href="https://msdnshared.blob.core.windows.net/media/2017/09/CreateMediaService06.png"><img width="1024" height="362" class="alignnone size-large wp-image-1335" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/CreateMediaService06-1024x362.png" /></a>

接下來之前記錄下來的 「Azure Active Directory 租戶網域」， 「REST API 端點」 ，「應用程式識別碼」(Application ID)， Service Principal 的「金鑰」填入以下範例程式碼中的對應位子即可完以 Service Principal 方式透過 Azure Active Directory 進行身分驗證。

<script src="https://gist.github.com/tomleetaiwan/59935e48245b9df79e70dfe4c7af319d.js"></script>]]></content:encoded>
    </item>
    <item>
      <title>使用 Azure Media Services Explorer 以 Azure Active Directory 進行身分驗證</title>
      <link>https://docs.microsoft.com/archive/blogs/tomleetaiwan/azureadmedia01</link>
      <pubDate>Fri, 22 Sep 2017 17:36:10 GMT</pubDate>
      <dc:creator><![CDATA[Tom Lee]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/tomleetaiwan/?p=1375</guid>
      <description><![CDATA[Microsoft Azure Media Services 將於 2018 年6月22日更改身分驗證的方式，過去 Azure Media Services 使用的 Azure Access...]]></description>
      <content:encoded><![CDATA[<div>Microsoft Azure Media Services 將於<strong> 2018 年6月22日</strong>更改身分驗證的方式，過去 Azure Media Services 使用的 Azure Access Control Service (ACS) 身分驗證機制將被 Azure Active Directory 的驗證方式所取代 ( <a href="https://azure.microsoft.com/en-us/blog/azure-media-service-aad-auth-and-acs-deprecation/">https://azure.microsoft.com/en-us/blog/azure-media-service-aad-auth-and-acs-deprecation/</a> )。在此示範如何使用開放源碼工具 Azure Media Services Explorer ( <a href="https://github.com/Azure/Azure-Media-Services-Explorer">https://github.com/Azure/Azure-Media-Services-Explorer</a>)  以 Azure Active Directory 進行身分驗證。</div>
<div></div>
<h3>以互動式登入方式透過 Azure Active Directory 進行身分驗證</h3>
<div>用戶可以在管理入口網站內針對已經建立妥的 Azure Media Services 點選 「API 存取權」(API Access)，如下圖我們會看到兩個選項，一個是針對用戶以互動方式鍵入帳號密碼對 Azure Active Directory 進行身分驗證，另一個則是針對無法互動登入的情境，例如 Server 端程式碼，透過 Service Principal 方式來進行身分驗證。</div>
<div><a href="https://msdnshared.blob.core.windows.net/media/2017/09/CreateMediaService02.png"><img width="1024" height="510" class="alignnone wp-image-1315 size-large" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/CreateMediaService02-1024x510.png" /></a>
就 Azure Media Services Explorer 而言，採用互動式登入是個最簡單的方式，我們可以點選右側上方採用互動式方式進行登入。當點選完畢後就會出現下圖畫面。</div>
<div></div>
<div> <a href="https://msdnshared.blob.core.windows.net/media/2017/09/CreateMediaService03.png"><img width="809" height="693" class="alignnone size-full wp-image-1347" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/CreateMediaService03.png" /></a>
請記錄下 Azure Active Directory 租戶網域與 REST API 端點兩項資訊，這兩項資訊將提供後續 Azure Media Services Explore 登入時使用。</div>
<div>啟動 Azure Media Services Explorer 4.0 之後的版本，依據下圖選擇以 Azure AD Interactive 方式進行身分驗證，並在 Mode 處選擇 Interactive，選妥後將之前紀錄的 Azure Active Directory 租戶網域的域名貼入紅色標示的 Azure AD Tenant Domain，以及之前記錄的REST API 端點貼入紅色標示的 REST API Endpoint，當然也需要填入 Azure Storage 的存取鍵值，這部分與過去方法一樣，在此不再贅述。完成後按下 Save to List 按鈕儲存此一登入資訊。</div>
<div><a href="https://msdnshared.blob.core.windows.net/media/2017/09/MediaExplorer02.png"><img width="1024" height="731" class="alignnone wp-image-1355 size-large" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/MediaExplorer02-1024x731.png" /></a>
完成後按下 Connect 按鈕即會跳出 Azure Active Directory 登入畫面，用戶可以鍵入一個有權限使用 Azure Media Services 之帳號密碼完成登入動作。</div>
<div></div>
<h3>以 Service Principal 方式透過 Azure Active Directory 進行身分驗證</h3>
<div>請在已經建立妥的 Azure Media Services 上點選 「API 存取權」(API Access)，如下圖我們會看到兩個選項，如果要使用 Service Principal 方式進行身分驗證，請點選下方的選項。</div>
<div><a href="https://msdnshared.blob.core.windows.net/media/2017/09/CreateMediaService02-1.png"><img width="1024" height="510" class="alignnone size-large wp-image-1346" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/CreateMediaService02-1-1024x510.png" /></a></div>
<div>當出現下圖畫面後，同樣地請記錄下 Azure Active Directory 租戶網域與 REST API 端點兩項資訊，這兩項資訊將提供後續 Azure Media Services Explore 登入時使用。使用 Service Principal 方式進行身分驗證時必須在 Azure Active Directory 內註冊一個 Azure AD Application，這個動作已經簡化可在下方畫面中快速完成，我只需要給需要呼叫 Azure Media Services API 的程式一個可供辨識名稱鍵入在「建立應用程式」欄位，輸入完畢後請點選「儲存」按鈕即可完成 Azure AD Application 註冊動作。以下圖的範例，我以 Azure Media Services Explorer 為此一 Azure AD Application 名稱，按下上方儲存按鈕即可完成註冊動作。</div>
<div></div>
<div><a href="https://msdnshared.blob.core.windows.net/media/2017/09/CreateMediaService04.png"><img width="643" height="643" class="alignnone size-full wp-image-1316" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/CreateMediaService04.png" /></a>
當此一 Azure AD Application 註冊完畢，我們即可點選下圖中的「管理應用程式」按鈕，取得並記錄下此一應用程式之「應用程式識別碼」(Application ID)，應用程式識別碼 (Application ID) 是一個絕對唯一，代表您這個應用程式的辨識 ID，系統會自動產生後不可修改，當呼叫 Media Services API 時會使用，此 ID 在舊版 Azure Portal 中 Azure Active Directory 管理畫面中稱為 "用戶端識別碼" (clientid)，這是沿用了 OAUTH 2.0 規格中的名稱 Client ID，所以 Application ID 與 Client ID 其實是同一件事。接下來我們需要點選下圖右方的「金鑰」準備產生一個的 Service Principal 的「金鑰」。</div>
<div></div>
<div><a href="https://msdnshared.blob.core.windows.net/media/2017/09/CreateMediaService05.png"><img width="1024" height="477" class="alignnone size-large wp-image-1325" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/CreateMediaService05-1024x477.png" /></a></div>
<div></div>
<div>「金鑰」按下請如下圖鍵入一個可供辨識的金鑰名稱，並設定此一金鑰的有效期限，按下儲存按鈕後金鑰即會產生，特別需要注意的是金鑰產生後僅能顯示一次，請務必保存下來以供後續 Azure Media Services Explorer 登入使用。</div>
<div></div>
<div>

<a href="https://msdnshared.blob.core.windows.net/media/2017/09/CreateMediaService06.png"><img width="1024" height="362" class="alignnone size-large wp-image-1335" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/CreateMediaService06-1024x362.png" /></a>

接下來啟動 Azure Media Services Explorer 4.0 之後的版本，依據下圖選擇以 Azure AD Interactive 方式進行身分驗證，並在 Mode 處選擇 Service Principal，我們仍需要填入之前記錄的 Azure Active Directory 租戶網域與 REST API 端點於紅色標示的兩個欄位。完成後按下 Save to List 按鈕儲存此一登入資訊。

</div>
<div></div>
<div><a href="https://msdnshared.blob.core.windows.net/media/2017/09/MediaExplorer03.png"><img width="1024" height="725" class="alignnone size-large wp-image-1356" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/MediaExplorer03-1024x725.png" /></a></div>
<div></div>
<div>接下來按下 Connect 按鈕開始準備以 Service Principal 進行登入。如下圖我們需要填入之前記錄的「應用程式識別碼」(Application ID) 於 Client Id 欄位，填入之前產生只顯示一次的金鑰於 Client Secret 欄位，按下 OK 按鈕即可完成以Service Principal 進行登入。</div>
<div></div>
<div> <a href="https://msdnshared.blob.core.windows.net/media/2017/09/MediaExplorer01.png"><img width="1024" height="725" class="alignnone size-large wp-image-1345" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/09/MediaExplorer01-1024x725.png" /></a></div>]]></content:encoded>
    </item>
    <item>
      <title>利用 Azure CDN 發佈靜態網站</title>
      <link>https://docs.microsoft.com/archive/blogs/tomleetaiwan/azure-cdn</link>
      <pubDate>Sun, 24 May 2015 19:29:00 GMT</pubDate>
      <dc:creator><![CDATA[tomleetaiwan]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/tomleetaiwan/2015/05/24/azure-cdn/</guid>
      <description><![CDATA[代貼北科大劉建昌同學撰寫之技術文件  在 Azure 上建立網站有相當多的選項。包括使用 Azure App Service Web Apps (舊名 Azure Websites )、Azure...]]></description>
      <content:encoded><![CDATA[<p><em>代貼北科大劉建昌同學撰寫之技術文件</em></p>  <p>在 Azure 上建立網站有相當多的選項。包括使用 Azure App Service Web Apps (舊名 Azure Websites )、Azure Cloud Service，甚至是直接使用 Azure Virtual Machine 皆能夠達到這些目的。當然這些方式都各有各的優缺點及優勢存在，而使用哪一個完全取決於使用者的需求。</p>  <p>若是您的服務只是一個靜態網站，只有內容呈現，而無資料處理。此時使用 Azure App Service Web Apps (舊名 Azure Websites )、 或是 Azure Virtual Machine等雲端解決方案，就顯得有點浪費，因為您除了需要負擔較為昂貴的設備租用費用，還可能要面臨較為複雜的開發流程。因此本篇文章將介紹一個最簡單的方式，使用 Azure Blob Storage 佈署一個靜態網站 ，(靜態網站可能包含 Flash、圖片、影片、Javascript、CSS 等常見元素)，並且再透過 Azure CDN 來增加網站的承載負載能量。</p>  <h3>1. 建立 Azure Storage Account 與佈署靜態網站</h3>  <p>首先我們需要建立一個 Azure Storage Account，並且此帳戶下建立許多 Public Blob 來存放靜態網站所需要的頁面和素材。這裡需要注意的是，在建立 Public Blob 時，命名方式可以使用較淺顯易懂的方式，能夠讓您整個網站的結構較為清晰且容易維護。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/8780.clip_image002_1D82C66D.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/8780.clip_5F00_image002_5F00_1D82C66D.jpg"><img title="clip_image002" border="0" alt="clip_image002" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/8877.clip_image002_thumb_656669F8.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/8877.clip_5F00_image002_5F00_thumb_5F00_656669F8.jpg" width="587" height="648" /></a></p>  <p><em>使用 Azure Storage BLOB 存放靜態網站的範例</em></p>  <p>您可以依照上圖範例所示，開發者將網站的頁面 HTML、Javascript 放在名為 ”Page” 的 Public Blob 容器 (Container) 中，而將網站內部的內容例如 : 圖片、影片則放在名為 ”Contents” Public Blob 容器 (Container) 中，您也可以依照目前的網頁路徑規劃其他之置放方式。</p>  <h3>透過 Azure 入口網站建立 Azure Storage Account</h3>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/7510.clip_image004_09495E4A.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/7510.clip_5F00_image004_5F00_09495E4A.jpg"><img title="clip_image004" border="0" alt="clip_image004" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/7002.clip_image004_thumb_6BFBB892.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/7002.clip_5F00_image004_5F00_thumb_5F00_6BFBB892.jpg" width="590" height="263" /></a></p>  <p><em>建立一個 Azure Storage Account</em></p>  <h3>取得存取金鑰</h3>  <p>使用先前已經新增好的 Azure Storage 帳戶，在最下方工具列選取 ”管理存取金鑰”</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/0435.clip_image006_166D0B12.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/0435.clip_5F00_image006_5F00_166D0B12.jpg"><img title="clip_image006" border="0" alt="clip_image006" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/1805.clip_image006_thumb_532493A2.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/1805.clip_5F00_image006_5F00_thumb_5F00_532493A2.jpg" width="590" height="138" /></a></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/5582.clip_image008_674040DC.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/5582.clip_5F00_image008_5F00_674040DC.jpg"><img title="clip_image008" border="0" alt="clip_image008" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/2642.clip_image008_thumb_3AB9A1A7.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/2642.clip_5F00_image008_5F00_thumb_5F00_3AB9A1A7.jpg" width="589" height="326" /></a></p>  <p>儲存體帳戶名稱與主要存取金鑰為下個步驟中，使用免費工具 <a href="https://azurestorageexplorer.codeplex.com/" target="_blank">Azure Storage Explorer</a> 所需要用到的資訊。</p>  <h3>以 Azure Storage Explorer 建立 Public Blob 與上傳靜態網站的內容</h3>  <p>下載免費的 Azure Storage Explorer 來幫助我們建立Table，您可以<a href="https://azurestorageexplorer.codeplex.com/">參閱此文件</a>，裡面有詳細的使用說明以及載點。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/7217.clip_image010_18894834.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/7217.clip_5F00_image010_5F00_18894834.jpg"><img title="clip_image010" border="0" alt="clip_image010" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/0820.clip_image010_thumb_2BCF2035.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/0820.clip_5F00_image010_5F00_thumb_5F00_2BCF2035.jpg" width="607" height="321" /></a></p>  <p><em>透過 Azure Storage Explorer新增存放網站資料所需的 Public Blob</em></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/1376.clip_image011_78BA22D1.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/1376.clip_5F00_image011_5F00_78BA22D1.png"><img title="clip_image011" border="0" alt="clip_image011" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/1016.clip_image011_thumb_2C84A9D4.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/1016.clip_5F00_image011_5F00_thumb_5F00_2C84A9D4.png" width="523" height="475" /></a></p>  <p><em>本篇範例將網站內容分成上圖結構，一共建立四個容器 ( container )，css 專門放置網頁所需的&#160; CSS 檔案，film存放影片，image存放圖片，page 則存放網頁 html 。</em></p>  <p>建立存放網站內容所需的 Public Blob 之後，您就可以利用熟悉的編輯器來撰寫所需要的 html，並且裡面會用到的 CSS、Javascript、圖片、影片皆能夠透過存放到 Azure Storage Blob 上來進行使用</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/5482.clip_image013_4808EA30.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/5482.clip_5F00_image013_5F00_4808EA30.jpg"><img title="clip_image013" border="0" alt="clip_image013" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/3857.clip_image013_thumb_21CBB23A.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/3857.clip_5F00_image013_5F00_thumb_5F00_21CBB23A.jpg" width="537" height="490" /></a></p>  <p>撰寫完 HTML 之後，只需要將所有 html 以及網站所用到的所有資源 (CSS、Javascript、圖片、影片) 上傳到前幾個步驟建立的 public Blob 中各對應的容器 ( container )，即完成了靜態網站的佈署。您能夠透過類似以下的網址來連接到您的靜態網站 :</p>  <p><strong>http://<em><span style="text-decoration: underline;">儲存體帳戶名稱</span></em>.blob.core.windows.net/<em><span style="text-decoration: underline;">Blob</span><span style="text-decoration: underline;">名稱</span></em></strong></p>  <p>本範例網址為 :</p>  <p><a href="https://teststaticweb.blob.core.windows.net/page/enter.html">https://teststaticweb.blob.core.windows.net/page/enter.html</a></p>  <p>倘若您需要使用公司或組織的 Domain Name，可依據<a href="http://azure.microsoft.com/zh-tw/documentation/articles/storage-custom-domain-name/" target="_blank">此篇文章</a>的方法，透過 <a href="http://en.wikipedia.org/wiki/CNAME_record" target="_blank">DNS CNAME 的設定方式</a>，將公司或組織的 Domain Name 對應到 Azure Storage blob 的 Domain Name。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/3312.clip_image015_68063C04.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/3312.clip_5F00_image015_5F00_68063C04.jpg"><img title="clip_image015" border="0" alt="clip_image015" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/7750.clip_image015_thumb_20B376C3.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/7750.clip_5F00_image015_5F00_thumb_5F00_20B376C3.jpg" width="539" height="407" /></a></p>  <p><em>透過上述步驟，就能夠將靜態網站佈署到 Azure Storage Blob上</em></p>  <h3>2. 啟用 Azure CDN</h3>  <p>佈署完畢靜態網站之後，有些使用者的網站可能為全球性的服務，也因此需要使用 CDN ( <a href="http://en.wikipedia.org/wiki/Content_delivery_network" target="_blank">Content delivery network</a> )，來將網站內容傳遞到世界各地。而在 Azure 上的託管服務中，Azure CDN 就能夠完成上述使用者的需求。</p>  <h3>1. 建立 Azure CDN 服務</h3>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/1754.clip_image017_39D6830E.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/1754.clip_5F00_image017_5F00_39D6830E.jpg"><img title="clip_image017" border="0" alt="clip_image017" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/7444.clip_image017_thumb_73120B65.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/7444.clip_5F00_image017_5F00_thumb_5F00_73120B65.jpg" width="514" height="214" /></a></p>  <p><em>在新增 Azure CDN時，就能夠選擇先前發布靜態網站所使用的儲存體帳戶</em></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/1348.clip_image019_6F960B2C.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/1348.clip_5F00_image019_5F00_6F960B2C.jpg"><img title="clip_image019" border="0" alt="clip_image019" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/5554.clip_image019_thumb_62C0D670.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/5554.clip_5F00_image019_5F00_thumb_5F00_62C0D670.jpg" width="510" height="305" /></a></p>  <p><em>這個設定動作只需要數秒就可以完成，並且也完成了 Azure CDN 服務的所有設定。但是 Azure CDN服務生效的時間至多需要一小時</em></p>  <p>以本篇範例來說「http://az763605.vo.msecnd.net/」就是我們用來存取 CDN 的端點，也因此我們也可以透過此網域名稱來進入我們的網站。</p>  <p><strong><a href="http://az763605.vo.msecnd.net/page/enter.html">http://az763605.vo.msecnd.net/page/enter.html</a></strong></p>  <p>不過端點建立的設定無法立即使用，因為 Azure CDN 最多需要 60 分鐘才會生效，也因此在此之前若使用 CDN 網域進入網站只會得到狀態碼 400 (不正確的要求)。同樣地，倘若您需要使用公司或組織的 Domain Name，可以透過 <a href="http://en.wikipedia.org/wiki/CNAME_record" target="_blank">DNS CNAME 的設定方式</a>，將公司或組織的 Domain Name 對應到 Azure CDN 的 Domain Name。</p>  <h3>結語</h3>  <p>Azure Storage 佈署靜態網站，Azure CDN 將網站內容發佈到包含台灣高雄以及世界各地的端點 (Pop node)，以建立快取承載巨量存取並分散流量。透過上述兩個步驟，我們只需要經過簡單的開發流程，並且也省下許多成本，就能夠將網站成功的發佈到世界各地去了。</p>]]></content:encoded>
    </item>
    <item>
      <title>Windows 8 與 Windows Server 2012 以上版本檔案總管 (explorer.exe) 停止回應問題</title>
      <link>https://docs.microsoft.com/archive/blogs/tomleetaiwan/windows-8-windows-server-2012-explorer-exe</link>
      <pubDate>Sat, 16 May 2015 03:39:00 GMT</pubDate>
      <dc:creator><![CDATA[tomleetaiwan]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/tomleetaiwan/2015/05/16/windows-8-windows-server-2012-explorer-exe/</guid>
      <description><![CDATA[Windows 8.0 , Windows 8.1, Windows Server 2012, Windows Server 2012 R2 在 2015 年3月 9日之 Windows Update...]]></description>
      <content:encoded><![CDATA[<p>Windows 8.0 , Windows 8.1, Windows Server 2012, Windows Server 2012 R2 在 2015 年3月 9日之 Windows Update 更新KB3033889 確認會引起有安裝中，日，韓輸入法 (IME) 之 Windows 8, Windows 8.1, Windows Server 2012, Windows Server 2012 R2 作業系統檔案總管發生停止回應的狀況，使用者會感覺每隔一小段時間整個視窗環境便會凍結住，這是因為檔案總管已經發生 Application Hang 狀況，Windows 用戶可以檢查事件管理員 ( Event&nbsp; viewer ) 是否會看到類似如下圖般的錯誤紀錄 Application Hang , Event 1002。</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/0042.image_481D601B.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/0042.image_5F00_481D601B.png"><img style="display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/3531.image_thumb_72F854DE.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/3531.image_5F00_thumb_5F00_72F854DE.png" alt="image" width="653" height="461" border="0" /></a></p>
<p>會造成檔案總管 Application Hang 住的原因很多，但如果您是 Windows 8.0 , Windows 8.1, Windows Server 2012, Windows Server 2012 R2 有使用中文輸入法之用戶並且自 2015年3月中以後才發生此種狀況，但很有可能是此更新所造成的。可以至 <a title="https://support.microsoft.com/zh-tw/kb/3048778" href="https://support.microsoft.com/zh-tw/kb/3048778">https://support.microsoft.com/zh-tw/kb/3048778</a> 下載安裝 HotFix 解決此一惱人的問題。</p>]]></content:encoded>
    </item>
    <item>
      <title>Application Insights 正式進入公開預覽階段</title>
      <link>https://docs.microsoft.com/archive/blogs/tomleetaiwan/application-insights</link>
      <pubDate>Thu, 14 May 2015 03:29:45 GMT</pubDate>
      <dc:creator><![CDATA[tomleetaiwan]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/tomleetaiwan/2015/05/14/application-insights/</guid>
      <description><![CDATA[感謝北科大劉建昌同學協助翻譯微軟公司&#160; Application Insights 主管&#160; Merav Davidson 於 2015/4/29 發表的文章 Announcing...]]></description>
      <content:encoded><![CDATA[<p><em>感謝北科大劉建昌同學協助翻譯微軟公司&#160; Application Insights 主管&#160; <a href="http://azure.microsoft.com/blog/author/meravd/">Merav Davidson</a></em><em> 於 2015/4/29 發表的文章 Announcing Application Insights Public Preview (&#160; <a title="http://azure.microsoft.com/blog/2015/04/29/announcing-application-insights-public-preview-2/" href="http://azure.microsoft.com/blog/2015/04/29/announcing-application-insights-public-preview-2/">http://azure.microsoft.com/blog/2015/04/29/announcing-application-insights-public-preview-2/</a></em><em> )</em> <em>，</em></p>  <p>最近在 2015 年 <a href="http://www.buildwindows.com/">Microsoft 開發者大會</a> 上發布了相當多對於開發者有幫助的新功能，如果您剛好有讀過 <a href="http://blogs.msdn.com/b/somasegar/archive/2015/04/29/introducing-visual-studio-code-visual-studio-2015-rc-application-insights-public-preview-and-net-core-for-linux-and-mac.aspx">Soma</a> 和 <a href="http://blogs.msdn.com/b/bharry/archive/2015/04/29/visual-studio-and-team-foundation-server-at-build-2015.aspx">Brian Harry</a> 的部落格，或許您已經知道了，<a href="http://azure.microsoft.com/zh-tw/services/application-insights/">Visual Studio Application Insights</a> 正式進入公開預覽階段，供開發者進行測試，這項服務能夠為任何的應用程式匯集並且提供<a href="http://azure.microsoft.com/zh-tw/documentation/articles/app-insights-detect-triage-diagnose/">性能管理</a>和<a href="http://azure.microsoft.com/zh-tw/documentation/articles/app-insights-overview-usage/">使用分析之</a>解決方案。</p>  <p>Application Insights 提供開發團隊對於他們的應用程式進行問題偵測、診斷當機，以及追蹤 Web 應用程式與行動應用程式中的使用情況。並且透過直觀的圖表以及工具來進行故障診斷和排除，它能夠幫助您透過用戶的使用狀況，來分析未來應用程式該優先考慮哪些工作。</p>  <p>在 Application Insights 進入預覽階段之後，我們也推出了一個根據每個應用程式的 telemetry 數量來訂定計價模式，提供給所有的開發團隊相當優惠的福利。而這個計費模式將從 2015 年的 6 月開始生效，並且在公開預覽階段時享有 50% 的折扣。</p>  <p><img alt="360 Overview" src="http://acom.azurecomcdn.net/80C57D/blogmedia/blogmedia/2015/04/29/360-Overview-636x329.png" width="636" height="329" /></p>  <h3>任何的應用程式都能使用 Application Insights 嗎?</h3>  <p>答案是肯定的 ! Application Insights 不斷快速成長並增添支援平台之種類。我們的 <a href="http://azure.microsoft.com/zh-tw/documentation/articles/app-insights-ios/">iOS</a> 和 <a href="http://azure.microsoft.com/zh-tw/documentation/articles/app-insights-android/">Android</a> SDK 提供了使用行為分析 ( usage insights ) 和應用程式當機診斷 ( crash diagnostics )，這都要歸功於 <a href="http://blogs.msdn.com/b/somasegar/archive/2014/12/11/microsoft-acquires-hockeyapp-leading-mobile-crash-analytics-and-beta-distribution-service-for-ios-android-and-windows-phone.aspx">HockeyApp</a> 強大的整合功能，而且毫無疑問的，我們同樣也支援 <a href="http://azure.microsoft.com/zh-tw/documentation/articles/app-insights-windows-get-started/">Windows Phone</a>、Windows Store 應用程式與 UAP 應用程式。</p>  <p>Application Insights 內建支援 ( out-of-the-box ) <a href="http://azure.microsoft.com/zh-tw/documentation/articles/app-insights-java-get-started/">J2EE</a> 應用程式，並且與 Eclipse 開發工具進行整合。而 ASP.NET 開發人員也可以在Visual Studio 中直接整合 Application Insights。若您開發的是 <a href="http://azure.microsoft.com/zh-tw/documentation/articles/app-insights-start-monitoring-app-health-usage/">Azure Web App 上運行的應用程式</a>，您將發現 Application Insights 與其緊密的結合。對於網頁前端工程師則可以使用 <a href="http://azure.microsoft.com/zh-tw/documentation/articles/app-insights-javascript/">JavaScript SDK</a> ，在任何網頁上送出 telemetry，除此之外，<a href="http://azure.microsoft.com/zh-tw/documentation/articles/app-insights-platforms/">Application Insights SDK 支援多種程式語言與平台</a>，包含 PHP、Python、Ruby、Node.js、WordPress、SharePoint 等。</p>  <p>只要您想要，您可以選擇您喜愛或熟悉的開發平台與語言。對於不同的應用程式類型，Application Insights SDK 皆會傳送一個 telemetry 到 Application Insights 服務中進行分析，並且在 Azure 新入口網站裡將資料呈現出來。因此，只要是 Application Insights SDK 支援的開發平台所開發出來的應用程式，皆能夠被 Application Insights 所監控與分析。</p>  <p>即便 Application Insights 是 Microsoft Azure 裡的一項服務，但是您還是能夠將它應用在任何的應用程式中。</p>  <h3>誰正在使用 Application Insights ?</h3>  <p>我們已經有接近 450,000 個使用 Application Insights 的應用程式。而且越來越多的開發商在開發應用程式時，會選擇使用Application Insights。</p>  <p>下面是一些我們的客戶在使用Application Insights的感想 :</p>  <p align="left"><b>“Application Insights </b><b>不只是判斷效能或使用者行為的操作工具。它真的是開發程序的一部分。</b><b>&quot;</b></p>  <p align="right"><b>–</b><b>Dominion Enterprises </b><b>品保和發行經理</b><b> Ray Escamilla</b></p>  <p align="left">&#160;</p>  <p align="left">“<b>Application Insights </b><b>讓我們以全方位觀點檢查服務的行為、可靠性和效能。這是我們工程小組日常使用的必要工具，用來檢閱和了解生產服務的運作情形。透過使用此產品所獲得的深入見解，協助我們找出不穩定的領域，排定工程投資的優先順序，為客戶提供更好的服務。”</b><b></b></p>  <p align="right"><b>–</b><b>Microsoft Game Studios </b><b>資深軟體工程師</b><b> Kyle McClellan</b></p>  <p align="left"><b></b></p>  <p align="left"><b>&quot;Application Insights </b><b>可以一次滿足我以整體觀點一覽所有應用程式的健全狀況和效能。它協助我快速釐清優先順序，讓我專注於處理組織中最重要的事項。&quot;</b><b></b></p>  <p align="right"><b>iPerceptions 研</b><b>發總監</b><b> Pierre Tetreault</b></p>  <p>以上的開發者們對於 Application Insights 如此滿意的原因，是因為 Application Insights 提供了以下的開發優勢 : </p>  <p>1. 提供應用程式效能和使用行為進行全面性的監控，以確保應用程式的可用性 ( availability )。</p>  <p>2. 快速且功能強大的偵錯工具，用來診斷使用狀況與效能問題。</p>  <p>3. 適用於任何的類型的應用程式。</p>  <p>4. 優惠的計價方式。</p>  <p>&#160;</p>  <h3>360度全面監控應用程式的可用性、性能、使用情況</h3>  <p>根據 <a href="http://www.gartner.com/newsroom/id/2669915">Gartner</a> 的統計，全面監控應用程式的可用性、性能、使用情況是 2015-2016 年十大必須掌握的行動技術技術之一。隨著Application Insights 的出現，您能夠在應用程式的任何角度，監測所有您想要的資訊，甚至可以將多個不同平台的資料，呈現在同一個視圖中。</p>  <p>您也能夠透過使用者所留下的使用情況，來<a href="http://azure.microsoft.com/zh-tw/documentation/articles/app-insights-custom-events-metrics-api/">分析資料</a>，讓您能夠知道更多關於應用程式對客戶所帶來的服務問題，例如 :</p>  <ul>   <li>這個應用程式會有性能的瓶頸嗎?</li>    <li>這個月用戶新增數目是否有上個月的多?</li>    <li>客戶進行何者行為會影響應用程式效能？</li>    <li>您的應用程式的客戶群為何?</li> </ul>  <p>&#160;</p>  <h3>快速並且強大的故障排除與診斷</h3>  <p>您公司的業務可能不允許服務發生停機的狀況，因此做為開發人員或維修工程師，您必須在服務出現問題之前，就把所有問題找出來，並且解決它。使用 Application Insights 能夠讓您進行錯誤偵測並且進行進行診斷與排除。即時行動當機分析 ( Real-time mobile crash analytics ) 可以讓您獲得當機時的所有資訊，您能夠透過此資訊了解到，究竟是何項原因導致當機，並且優先依據客戶影響的順序來進行修復。</p>  <p>您也能夠依照您 Web 應用程式的需求，設定診斷失敗請求( failed requests)、異常 ( exceptions )、錯誤相依性 ( dependency failures )等項目，甚至能夠跟您的<a href="http://azure.microsoft.com/zh-tw/documentation/articles/app-insights-search-diagnostic-logs/">登入紀錄 ( Log )</a> 或<a href="http://azure.microsoft.com/zh-tw/documentation/articles/app-insights-custom-events-metrics-api/">自行定義的檢查檔案 ( custom events )</a> 結合，得到更完整詳細的診斷紀錄。</p>  <p><img src="http://acom.azurecomcdn.net/80C57D/blogmedia/blogmedia/2015/04/29/AI-Mobile-Crash-Diagnostics1.png" width="659" height="318" /></p>  <p>對於您的 Web 應用程式，您可以透過設置 <a href="http://azure.microsoft.com/zh-tw/documentation/articles/app-insights-monitor-web-app-availability/">Web 測試以及 URL pings</a>，建立 <a href="http://azure.microsoft.com/zh-tw/documentation/articles/app-insights-set-alerts/">Web 的錯誤警示機制</a>並且依照 Web 需求，自行定義測試的基礎值，以便讓您事先了解異常的行為，會對客戶造成何種影響。</p>  <p><img src="http://acom.azurecomcdn.net/80C57D/blogmedia/blogmedia/2015/04/29/Alerts1.png" width="668" height="311" /></p>  <h3>為您的應用程式進行分析</h3>  <p>我們所設計的 Application Insights 能夠在開發過程中，就與應用程式進行整合，就算該<a href="http://azure.microsoft.com/zh-tw/documentation/articles/app-insights-monitor-performance-live-website-now/">應用程式已經進行上線服務</a>，也一樣能夠透過相當<a href="http://azure.microsoft.com/zh-tw/documentation/services/application-insights/">簡單的方式</a>與現有已存在或新開發的應用程式做結合。它會自動收集應用程式中最關鍵的運作資料。若您是使用 Visual Studio 進行開發，那就更容易地將 Application Insights 整合進您的開發流程了。</p>  <p><img src="http://acom.azurecomcdn.net/80C57D/blogmedia/blogmedia/2015/04/29/AI-NewProject2.png" /></p>  <p>我們也在不同的 IDE 上面實現了這個方法。下圖是在 Xcode 上的執行狀況。</p>  <p><img src="http://acom.azurecomcdn.net/80C57D/blogmedia/blogmedia/2015/04/29/Xcode-Integration.png" width="778" height="422" /></p>  <p>正如您所看到的，Application Insights 入口網站提供了一系列強大的分析與搜尋工具，能夠藉此來獲取應用程式運作時的任何遙測資料。此外，您還能夠將這些資料<a href="http://azure.microsoft.com/zh-tw/documentation/articles/app-insights-export-telemetry/">導出到外部系統</a>，藉此來搭配其他的資料來進行更進一步的分析工作。</p>  <h3>物超所值的雲端計價模型</h3>  <p>我們最新的雲端計價模型 ( 2015年6月開始 ) 是依據每個應用程式的資料量進行計價。在免費層級，您可以使用絕大多數的功能，但是對於特定功能的資料量和保留的天數會有所限制。隨著應用程式的擴展，您可能會需要使用到更多的測試資料和資料保留天數， 可以透過標準和高級層級來符合您的需求。這些服務層級都是依據您使用多少數資料來計價，我們不希望在您擴展業務的同時，付出太多的代價在尚未使用到的資源上。此外在公開預覽階段 Application Insights 用戶享有 50% 的折扣。</p>  <p><img src="http://acom.azurecomcdn.net/80C57D/blogmedia/blogmedia/2015/04/29/Pricing1.png" width="797" height="493" /></p>  <h3>結論</h3>  <p>就是今天，快來使用 Application Insights 吧。憑藉著 Application Insights 強大的分析與診斷能力，能夠讓您的應用程式更為聰明、更加貼近使用者的需求。<b></b></p>  <p>最後一件事，如果您在使用 Application Insights 時有任何的意見，請提供您寶貴的意見給我們。若有任何問題，請查詢 <a href="https://social.msdn.microsoft.com/Forums/vstudio/zh-tw/home?forum=ApplicationInsights">Application Insights論壇</a>。</p>]]></content:encoded>
    </item>
    <item>
      <title>使用 Azure RemoteApp 執行自己所安裝之視窗桌面應用程式</title>
      <link>https://docs.microsoft.com/archive/blogs/tomleetaiwan/azure-remoteapp</link>
      <pubDate>Thu, 07 May 2015 17:57:00 GMT</pubDate>
      <dc:creator><![CDATA[tomleetaiwan]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/tomleetaiwan/2015/05/07/azure-remoteapp/</guid>
      <description><![CDATA[代貼北科大劉建昌同學撰寫之技術文件。
Azure RemoteApp 已經於 2016 年 10 月 1 日停止提供服務，本篇內容已經不再適用
Azure RemoteApp...]]></description>
      <content:encoded><![CDATA[<em>代貼北科大劉建昌同學撰寫之技術文件。</em>
<h1><span style="color: #ff0000"><strong>Azure RemoteApp 已經於 2016 年 10 月 1 日停止提供服務，本篇內容已經不再適用</strong></span></h1>
Azure RemoteApp 幫助開發者透過各種不同的裝置 (Windows、Mac OS X、iOS 或 Android) 存取佈署好的應用程式。應用程式會在 Azure 雲端中的 Windows Server 2012 R2 上執行，您可以輕鬆地調整規模及更新。只要將 Microsoft 遠端桌面用戶端安裝到連接網際網路的膝上型電腦、平板電腦或手機上，就可以輕鬆存取應用程式，就如同在視窗本機環境執行一樣。

本篇文章將會介紹如何在 Windows Server 2012 R2 的虛擬機器上佈署您想要遠端操作的應用程式，並且製作成Microsoft Azure 虛擬機器映像檔 (Image)，再將其匯入至Azure RemoteApp，讓您能夠在不同裝置上透過遠端桌面協定 ( Remote Desktop Protocol , RDP ) 存取這些應用程式。
<h3><strong>1. </strong><strong><span style="text-decoration: underline">建立 </span></strong><strong><span style="text-decoration: underline">Microsoft Azure </span></strong><strong><span style="text-decoration: underline">虛擬機器</span></strong></h3>
<h3></h3>
<h3>建立虛擬機器的方法一  :</h3>
<ul>
 	<li>使用一般的 Windows Server 2012 R2映像檔來建立虛擬機器，此方法較為複雜，適合已經有現成 Windows Server 2012 R2 VM 環境要轉換為 Remote App，如果沒有此一考量採用方法二較為簡便。</li>
 	<li>登入Microsoft Azure入口網站，在左下方新增選擇 『計算』-&gt;『虛擬機器』-&gt;『從組件庫』</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/3782.clip_image002_6DA0EBBC.jpg"><img width="714" height="217" title="clip_image002" alt="clip_image002" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/7360.clip_image002_thumb_68C0C8B1.jpg" border="0" /></a>
<ul>
 	<li>在選擇映像檔時，選擇『Windows Server 2012 R2』</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/7356.clip_image004_7A33BA3A.jpg"><img width="727" height="248" title="clip_image004" alt="clip_image004" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/1362.clip_image004_thumb_26DF04C5.jpg" border="0" /></a>
<ul>
 	<li>建立完Microsoft Azure 虛擬機器之後，需要做一些設定才能夠符合建立 <a href="http://azure.microsoft.com/zh-tw/documentation/articles/remoteapp-create-custom-image/">Azure RemoteApp的需求</a>。先以遠端桌面登入已經執行之 Windows Server 2012 R2，執行 Windows Server Manager 並準備新增伺服器角色。</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/5444.clip_image006_0CA12C52.jpg"><img width="237" height="160" title="clip_image006" alt="clip_image006" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/1780.clip_image006_thumb_377C2115.jpg" border="0" /></a>
<ul>
 	<li>新增伺服器角色『Remote Desktop Services』</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/6355.clip_image008_7DFBA1CE.jpg"><img width="704" height="404" title="clip_image008" alt="clip_image008" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/0871.clip_image008_thumb_7D25CC95.jpg" border="0" /></a>
<ul>
 	<li>新增功能『User Interfaces and Infrastructure』並新增『Desktop Experience』</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/7536.clip_image010_2C0D9FDC.jpg"><img width="711" height="364" title="clip_image010" alt="clip_image010" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/5074.clip_image010_thumb_7FF3339B.jpg" border="0" /></a>
<ul>
 	<li>在角色服務選取『Remote Desktop Session Host』</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/4353.clip_image012_60D2A76C.jpg"><img width="710" height="375" title="clip_image012" alt="clip_image012" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/8420.clip_image012_thumb_07371B69.jpg" border="0" /></a>
<ul>
 	<li>必須要停用 Encrypting File System (EFS)。</li>
 	<li>使用系統管理員身份執行cmd，並且輸入</li>
</ul>
<blockquote><strong>Fsutil behavior set disableencryption 1</strong></blockquote>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/1832.clip_image014_73AEDD29.jpg"><img width="727" height="124" title="clip_image014" alt="clip_image014" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/5428.clip_image014_thumb_57347BFA.jpg" border="0" /></a>
<ul>
 	<li>輸入完畢後需重新啟動虛擬機器</li>
 	<li>請重新命名C:\Windows\Panther\Unattend.xml 檔案，以免上傳指令碼稍後無法正常運作。將此檔案名稱變更為Unattend.old，以便讓後您需要回復部署時，仍舊保有這個檔案可用。</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/3757.clip_image016_2F909081.jpg"><img width="717" height="533" title="clip_image016" alt="clip_image016" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/5773.clip_image016_thumb_1F1AB037.jpg" border="0" /></a>
<ul>
 	<li>完成上述的設定之後，就可以將您想要製成 Azure RemoteApp 的應用程式部屬到這台 Windows Server  2012 R2 虛擬機器，本文為了測試，而在虛擬機器內安裝 <a href="https://www.videolan.org/vlc/index.zh_TW.html">VLC media player</a> 作為示範。</li>
 	<li>佈署完自行安裝的應用程式之後，進行映像的 SYSPREP 處理，將這台虛擬機器製作成映像檔。使用系統管理員身份執行cmd，輸入下列指令：</li>
</ul>
<blockquote><strong>C:\Windows\System32\sysprep\sysprep.exe /generalize /oobe /shutdown</strong></blockquote>
<strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/0361.clip_image018_6D47BB01.jpg"><img width="730" height="64" title="clip_image018" alt="clip_image018" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/0638.clip_image018_thumb_5E9F9FCD.jpg" border="0" /></a></strong>
<ul>
 	<li>也可以透過直接從 c:\windows\System32\sysprep 的目錄下找到 sysprep.exe 這個檔案，並且執行它。</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/6888.clip_image020_1D93B11A.jpg"><img width="736" height="278" title="clip_image020" alt="clip_image020" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/1581.clip_image020_thumb_23DD1859.jpg" border="0" /></a>

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/5661.clip_image022_306D5626.jpg"><img width="599" height="445" title="clip_image022" alt="clip_image022" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/8233.clip_image022_thumb_1DBAED20.jpg" border="0" /></a>
<ul>
 	<li>System Cleanup Action 請選擇  "OOBE"，並勾選下面的一般化 (general)，然後下面選擇關機 (shutdown)</li>
 	<li>回到 Azure 管理入口網站，虛擬機器之儀表板，準備擷取虛擬機器 Image。在虛擬機器列表下方工具列，選取『擷取』</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/6102.clip_image024_67DB1967.jpg"><img width="743" height="90" title="clip_image024" alt="clip_image024" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/7077.clip_image024_thumb_054FFB25.jpg" border="0" /></a>
<ul>
 	<li>請注意 : 擷取完虛擬機器 Image 後，該虛擬機器會被刪除。</li>
</ul>
&nbsp;
<h3>建立虛擬機器的方法二</h3>
<ul>
 	<li>此方法較方法一更為簡便，適合全新建立之環境，直接使用 Windows Server Remote Desktop Session Host 映像檔來建立虛擬機器。在新增虛擬機器時，若選擇 Windows Server 2012 R2 作為伺服器作業系統，那就必須如方法一所示的透過一些設定才能夠滿足A Azure RemoteApp template image 的需求。這裡提供您另外一種選擇，那就是直接使用 Windows Server Remote Desktop Session Host作為虛擬機器映像檔，這個映像檔已經做好了關於 RemoteApp template image的設定，因此不需要在 Windows Server 內再另外相關設定動作。</li>
</ul>
<strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/3666.clip_image026_040DF2F7.jpg"><img width="727" height="472" title="clip_image026" alt="clip_image026" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/4064.clip_image026_thumb_25FBE62C.jpg" border="0" /></a></strong>
<ul>
 	<li>建立 Azure Virtual Machines 時選擇 Windows Server Remote Desktop Session Host 作為映像檔</li>
 	<li>以遠端桌面連線到虛擬機器之後，安裝您自己的桌面應用程式，完畢後您只需要執行桌面上的 ValidateRemoteAppImage 這個 PowerShell Script，此 PowerShell Script 便會驗證此虛擬器要轉換為 Azure RemoteApp Image Template 所有組態設定是否正確。</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/0702.clip_image028_362CCF87.jpg"><img width="130" height="174" title="clip_image028" alt="clip_image028" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/6102.clip_image028_thumb_7F527B40.jpg" border="0" /></a>
<ul>
 	<li>執行 ValidateRemoteAppImage 之後，請確定執行後的報告沒有任何問題。如圖所示，此虛擬機器已經滿足 Azure RemoteApp Image Template   的需求。</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/7802.clip_image030_7C401D4B.jpg"><img width="753" height="260" title="clip_image030" alt="clip_image030" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/5102.clip_image030_thumb_36BDADD1.jpg" border="0" /></a>
<ul>
 	<li>確認無誤之後，ValidateRemoteAppImage 最後一個步驟便是進行 SYSPERP 的動作，注意 SYSPREP 動作會自動關閉您的虛擬機器。</li>
 	<li>回到 Azure 管理入口網站，虛擬機器之儀表板，準備擷取虛擬機器 Image。在虛擬機器列表下方工具列，選取『擷取』</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/6102.clip_image024_67DB1967.jpg"><img width="743" height="90" title="clip_image024" alt="clip_image024" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/7077.clip_image024_thumb_054FFB25.jpg" border="0" /></a>
<ul>
 	<li>請注意 : 擷取完虛擬機器 Image 後，該虛擬機器會被刪除。</li>
</ul>
&nbsp;
<h2><strong>2. </strong><strong><span style="text-decoration: underline">建立 </span></strong><strong><span style="text-decoration: underline">Azure RemoteApp</span></strong><strong><span style="text-decoration: underline"> 的範本映像</span></strong></h2>
透過上個步驟，我們已經將內部安裝與佈署好應用程式的虛擬機器製作成映像檔 ( Image )。接下來我們需要將此映像檔匯入至 Azure RemoteApp的範本映像。
<ul>
 	<li>選取左方工具列『REMOTEAPP』-&gt;『範本映像』-&gt;『加入』</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/5025.clip_image032_12535C53.jpg"><img width="755" height="254" title="clip_image032" alt="clip_image032" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/3326.clip_image032_thumb_0F40FE5E.jpg" border="0" /></a>
<ul>
 	<li>選取『從您的虛擬機器映像庫匯入映像』，即可將前一步驟所製作的虛擬機器映像檔 (  image ) 直接匯入。</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/2727.clip_image034_158A659D.jpg"><img width="763" height="301" title="clip_image034" alt="clip_image034" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/4111.clip_image034_thumb_34CF9D21.jpg" border="0" /></a>
<ul>
 	<li>選取在上個步驟所建立名為 bartremoteapp 的虛擬機器映像檔</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/8838.clip_image036_2F17142C.jpg"><img width="460" height="482" title="clip_image036" alt="clip_image036" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/4382.clip_image036_thumb_2EAD71E8.jpg" border="0" /></a>
<ul>
 	<li>設定 RemoteApp 範本映像檔</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/8561.clip_image038_5FD1CDEA.jpg"><img width="706" height="305" title="clip_image038" alt="clip_image038" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/6036.clip_image038_thumb_358526C0.jpg" border="0" /></a>
<ul>
 	<li>本文將 RemoteApp 映像檔設定在東亞資料中心。</li>
 	<li>接下來取得上傳指令，在最下方工具列選取『取得指令碼』</li>
</ul>
&nbsp;
<h2><strong>3. </strong><strong><span style="text-decoration: underline">建立 </span></strong><strong><span style="text-decoration: underline">Azure RemoteApp </span></strong><strong><span style="text-decoration: underline">服</span></strong><strong><span style="text-decoration: underline">務</span></strong></h2>
&nbsp;
<h3>建立RemoteApp   服務</h3>
登入 Microsoft Azure 入口網站，並且在下方工具列新增-&gt;『應用程式服務』-&gt;『REMOTEAPP』-&gt;『快速建立』

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/0447.clip_image050_55369139.jpg"><img width="636" height="271" title="clip_image050" alt="clip_image050" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/0486.clip_image050_thumb_795E7C79.jpg" border="0" /></a>

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/8204.clip_image052_646F8AB7.jpg"><img width="438" height="541" title="clip_image052" alt="clip_image052" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/7115.clip_image052_thumb_6A4CBF01.jpg" border="0" /></a>
<ul>
 	<li>如上圖，您可以選取由上一個步驟所建立的範本映像 bartremoteapp，此外提醒用戶建立 RemoteApp 服務最長需要花費一個小時。</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/2671.clip_image054_4479294F.jpg"><img width="604" height="24" title="clip_image054" alt="clip_image054" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/6404.clip_image054_thumb_5ACECE94.jpg" border="0" /></a>

&nbsp;
<ul>
 	<li>建立完RemoteApp服務後，預設會將所有的應用程式發佈成 RemoteApp，如果需要進一步設定與管控，請點選『發行』發佈應用程式。</li>
</ul>
&nbsp;
<h2><strong>4. </strong><strong><span style="text-decoration: underline">發佈</span></strong><strong><span style="text-decoration: underline"> RemoteApp</span></strong></h2>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/3730.clip_image056_23F47A4E.jpg"><img width="593" height="434" title="clip_image056" alt="clip_image056" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/3187.clip_image056_thumb_332AE31B.jpg" border="0" /></a>
<ul>
 	<li>先前安裝的 VLC media player 預設已經發行為 RemoteApp 了<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/6204.clip_image058_72F75A51.jpg"><img width="532" height="390" title="clip_image058" alt="clip_image058" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/6082.clip_image058_thumb_4D23C49F.jpg" border="0" /></a></li>
</ul>
<ul>
 	<li>您也可以點選『發布』來新增其他欲發布之 RemoteApp</li>
</ul>
&nbsp;
<h2><strong>5. </strong><strong><span style="text-decoration: underline">設定使用者存取權限</span></strong></h2>
<ul>
 	<li>選取『使用者存取』</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/2337.clip_image060_032AD45E.jpg"><img width="563" height="125" title="clip_image060" alt="clip_image060" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/1220.clip_image060_thumb_1BBD025F.jpg" border="0" /></a>
<ul>
 	<li>新增您想要讓何位使用者來存取 Azure RemoteApp</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/5238.clip_image062_2D2FF3E8.jpg"><img width="567" height="65" title="clip_image062" alt="clip_image062" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/8321.clip_image062_thumb_580AE8AB.jpg" border="0" /></a>
<h2><strong>6. </strong><strong><span style="text-decoration: underline">安裝 Azure </span></strong><strong><span style="text-decoration: underline">RemoteApp </span></strong><strong><span style="text-decoration: underline">用戶端程式</span></strong></h2>
<ul>
 	<li> <a href="https://www.remoteapp.windowsazure.com/ClientDownload/AllClients.aspx">透過這裡</a>，來下載遠端桌面用戶端程式</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/8284.clip_image064_4962CD77.jpg"><img width="571" height="377" title="clip_image064" alt="clip_image064" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/6433.clip_image064_thumb_08C311B9.jpg" border="0" /></a>
<ul>
 	<li>如果採用 Apple App Store 進行安裝，只要輸入關鍵字「Microsoft Remote Desktop」，即可找到這個 App 並進行安裝。</li>
</ul>
&nbsp;
<h2><strong>7. </strong><strong><span style="text-decoration: underline">利用不同裝置使用 Azure </span></strong><strong><span style="text-decoration: underline">RemoteApp</span></strong></h2>
&nbsp;
<h3>個人電腦 Windows 環境中使用方式</h3>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/4426.clip_image066_114901B4.jpg"><img width="644" height="399" title="clip_image066" alt="clip_image066" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/4705.clip_image066_thumb_4E008A44.jpg" border="0" /></a>

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/7245.clip_image068_4FD370BC.jpg"><img width="653" height="355" title="clip_image068" alt="clip_image068" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/2474.clip_image068_thumb_29FFDB0A.jpg" border="0" /></a>
<ul>
 	<li>輸入使用者帳號密碼，就可以看到已經發佈的 Azure RemoteApp</li>
</ul>
<h3></h3>
<h3>行動設備中使用方式</h3>
<ul>
 	<li>本文使用 Apple iPad 作為示範使用情境</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/6445.clip_image070_7FB5C490.jpg"><img width="724" height="282" title="clip_image070" alt="clip_image070" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/7558.clip_image070_thumb_1194E90F.jpg" border="0" /></a>
<ul>
 	<li>輸入使用者帳號密碼，就可以看到已經發佈的 RemoteApp</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/3113.clip_image072_4E4C719F.jpg"><img width="685" height="423" title="clip_image072" alt="clip_image072" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/8865.clip_image072_thumb_4E4F0250.jpg" border="0" /></a>
<ul>
 	<li>如下圖所示，我們成功的在 Apple iPAD上啟用了 Azure RemoteApp 內的 VLC media player 了</li>
</ul>
<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/3443.clip_image074_4B3CA45B.jpg"><img width="682" height="510" title="clip_image074" alt="clip_image074" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/6558.clip_image074_thumb_5CAF95E4.jpg" border="0" /></a>]]></content:encoded>
    </item>
    <item>
      <title>Microsoft Azure Media Services 即時編碼 (Live Encoding) 簡介</title>
      <link>https://docs.microsoft.com/archive/blogs/tomleetaiwan/microsoft-azure-media-services-live-encoding</link>
      <pubDate>Fri, 24 Apr 2015 22:51:00 GMT</pubDate>
      <dc:creator><![CDATA[tomleetaiwan]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/tomleetaiwan/2015/04/24/microsoft-azure-media-services-live-encoding/</guid>
      <description><![CDATA[感謝北科大劉建昌同學協助翻譯微軟公司 Azure Media Services 主管 Anil Murching 於 2015/4/13 發表的文章 An introduction to Live...]]></description>
      <content:encoded><![CDATA[<p><em>感謝北科大劉建昌同學協助翻譯微軟公司 Azure Media Services 主管 </em><a href="http://azure.microsoft.com/blog/author/anilmur/"><em>Anil Murching</em></a><em> 於 2015/4/13 發表的文章 An introduction to Live Encoding with Azure Media Services ( </em><a title="http://azure.microsoft.com/blog/2015/04/13/an-introduction-to-live-encoding-with-azure-media-services/" href="http://azure.microsoft.com/blog/2015/04/13/an-introduction-to-live-encoding-with-azure-media-services/"><em>http://azure.microsoft.com/blog/2015/04/13/an-introduction-to-live-encoding-with-azure-media-services/</em></a><em> )</em>&nbsp;<em>，目前本篇所介紹之內容尚未進入公開技術預覽階段，欲參與 Azure Media Services 即時編碼功能技術預覽的用戶請發信至 </em><a href="mailto:amslived@microsoft.com"><em>amslived@microsoft.com</em></a><em> 申請。</em></p>
<p>自從去年我們發佈了 Microsoft Azure Media Services 即時直播服務 ( Live Streaming ) 之後，相當多的使用者已經透過這項兼具穩定性和高擴充性的服務來進行影音串流直播。您若有興趣可以參考之前撰寫的<a href="http://blogs.technet.com/b/azuretw/archive/2014/09/28/microsoft-azure-media-services-rtmp.aspx">這篇文章</a>，裡面有詳細的資訊，介紹如何使用 Azure 入口管理網站或是 .NET SDK 以 Microsoft Azure Media Services 來進行影音串流直播。</p>
<p>在過去為了要進行直播串流 ( Live Streaming )，您需要自行準備一個第三方的編碼器 ( Encoder ) 來產生多個不同畫質之 adaptive bitrate streaming 串流並發佈到 Azure Media Services 上。隨著 Azure Media Services 即時編碼 ( Live Encoding ) 功能進入技術預覽階段之後，您無須再耗費這麼多的傳輸頻寬，同時傳送多種畫質的影音片段，取而代之的是您能夠傳送一個最高畫質單一位元率 ( BitRate ) 串流到 Azure Media Service，而這個單一的串流可以在雲端編碼成各種畫質 adaptive bitrate streaming。之後您就能夠將這些內容以 MPEG-DASH、Microsoft Smooth Streaming、 Apple HLS、Adobe HDS 等通訊協定將影音串流直播至多種用戶端環境來播放。</p>
<p>在這篇文章中，我將介紹如何在 Microsoft Azure Media Services 下使用即時編碼 ( Live Encoding ) 相關功能，包含:</p>
<ul>
<li>餵入單一位元率之影片，透過即時編碼功能產生 adaptive bitrate streaming 多種畫質之編碼影片</li>
<li>透過 RTP ( MPEG Transport Streams )、RTMP、Smooth Streaming 等協定擷取傳遞 ( ingest ) 即時串流</li>
<li>控制插入廣告訊號到客戶端</li>
<li>由即時串流影片餵入時，取得影片之縮圖預覽</li>
</ul>
<p>&nbsp;</p>
<h3>何謂即時編碼 ( Live Encoding )</h3>
<p>當您在轉播一個即時事件 ( Live Event ) 時，最希望達到的目標就是傳送高品質的視訊以及不管在任何的網路環境下，都能夠將畫面傳送任何使用者可能擁有之裝置上。解決品質和不同網路環境影片播放的最佳方法，就是透過 adaptive bitrate streaming，所謂 adaptive bitrate streaming 是透過檢測用戶端的頻寬狀況和 CPU 使用率，動態調整影音畫質的播放技術。而欲將串流傳送到支援不同協定的各種不同裝置上，則可以透過動態封裝 ( dynamic packaging ) 的技術重新封裝編碼後影片內容。</p>
<p align="left">adaptive bitrate streaming 的運作原理是透過將視訊編碼成不同解析度 ( resolutions ) 和位元率的視訊串流，並且使它們保持同步的狀態。過去在轉播即時事件時，需要將處理即時視訊編碼時所造成的延遲 ( Latency ) 控制在可以接受的範圍。因此在硬體的需求，可能需要效能較好的 CPU，甚至必須採用編碼效率更高的 GPU 設備。此外若是您的服務需要建立多個影音串流，會需要更大的頻寬( bandwidth ) 來將這些串流送到 CDN，再透過這些 CDN 將影片內容廣播給世界各地的用戶。上述所說的所有事情，都意味著您在建立基礎建設時的成本會相當的昂貴。</p>
<p>在 Azure Media Services 提供的即時編碼 ( Live Encoding ) 服務是解決上述問題的雲端方案，運用這項新功能，您只需要將單一 ( 最高畫質 ) 的影音傳送到 Microsoft Azure 的資料中心，之後即時編碼服務會開始進行運算工作，並且將其編碼成多種畫質解析度之 adaptive bitrate stream。這意味著您只需要擁有一個良好的網路環境，並且在相機或是攝影裝置上備有一個編碼器，您就能夠轉播一個即時的事件，並且這項服務具備延展性 ( scalable )，也因此只需要負擔您使用時所產生的費用。</p>
<p>&nbsp;</p>
<h3>如何使用即時編碼 ( Live Encoding )</h3>
<p>透過以下步驟來設置即時編碼，並且轉播即時事件。</p>
<p>1. 決定您要使用何種協定來將即時影片串流即時餵入 ( live feed ) Microsoft Azure Media Services ( 詳情請參考下文 )</p>
<p>2. 使用 Azure API 或是 Azure 入口網站建立一個即時的通道 ( Channel )，並且設定您的即時編碼</p>
<p>3. 設定本地編碼器 ( on-premises encoder ) 傳送一個單一且最高品質 ( high quality ) 的影片餵入 Microsoft Azure Media Services</p>
<p>4. 透過 Azure 入口網站來預覽輸出串流</p>
<p>5. 建立一個 Program 來<a href="http://azure.microsoft.com/zh-tw/documentation/articles/media-services-manage-channels-overview/">管理您的轉播事件</a></p>
<p>注意: 在後續將有文章詳述上述步驟與設定方式。</p>
<p>&nbsp;</p>
<h3>支援的格式以及解編碼器 ( codecs )</h3>
<p>即時編碼所支援的輸入協定有 : RTMP、RTP ( MPEG TS )、Smooth Streaming。您能夠傳送的視訊編碼格式是 MPEG-2 或是 H.264，而音訊則是 AAC-LC ( 最多7.1 聲道 )、 Dolby&reg; Digital/AC-3 ( 最多7.1 聲道 )、 MPEG Audio ( 最多到立體聲 )。</p>
<p>即時編碼支援的色度抽樣 ( chroma subsampling ) 是從 4:2:2 到 4:2:0。而在輸出部分，即時編碼能將視訊編碼至 H.264 ( 最多逐行高達4:2:0 ) 而音訊則是立體聲或是單聲道 AAC ( LC, HE v1, HE v2 Profile )。若視訊饋送中有的話，即時編碼還支援 EIA/CEA-708 closed captions。為了發送廣告提示，即時編碼支援透過API呼叫的輸入資訊，若是輸入協定是RTP的話，則能夠支援 SCTE-35 SpliceInsert 以及 TimeSignal 指令。在輸出端我們的服務能夠送出 HLS Playlist Tags ( SCTE-67 )、 Smooth Streaming Sparse Tracks ( SCTE-35 ) 、HDS CueInfo Elements 等格式。</p>
<p>&nbsp;</p>
<h3>選擇嵌入協定 ( ingest protocol )</h3>
<p>&nbsp;</p>
<ul>
<li>RTMP : 最常見的嵌入協定之一，它能夠透過內建編碼器的攝影器材或第三方廠商的編碼器 ( 例如 : Telestream Wirecast、Flash Media Live Encoder, Tricaster 等 ) 將影片餵入 ( input feed ) 透過一般網際網路傳送至微軟的 Azure 資料中心。</li>
<li>RTP : 許多專業媒體廠商像是 Elemental Technologies、Ericsson, Ateme、Envivio 等支援此協定，使用本地端的即時編碼器，並且透過專線網路做影片傳送 ( 例如 : Microsoft Azure ExpressRoute )</li>
<li>使用 HTTP 的 Smooth Streaming : 通常用於專業媒體廠商 ( Elemental Technologies、Ericsson, Ateme、Envivio ) 之設備支援此協定，並透過一般網際網路將影片串流傳送至微軟的 Azure 資料中心。</li>
</ul>
<p>&nbsp;</p>
<h3>使用 RTMP 的注意事項</h3>
<p>當將一個即時影片透過 RTMP 協定傳送至 Azure Media Services 通道 ( Channel ) 中，有以下的限制 :</p>
<p>1. 視訊編碼為 H.264，解析度則可高達 1080p，而立體聲道編碼為 AAC-LC。</p>
<p>2. 音訊採樣率 ( Audio sampling rate ) 為 44.1kHZ。</p>
<p>3. 推薦的編碼模式為封閉的 GOP 和 CBR。</p>
<p>4. 所需傳送的網路頻寬 ( bandwidth ) 需要超過視訊與音訊位元率 ( bitrate ) 的總和。</p>
<p>&nbsp;</p>
<h3>使用 RTP 的注意事項</h3>
<p>如果您計畫使用 RTP 協定來傳送即時串流至 Azure Media Services ，您需要注意網路連接的狀態需要如下所示 :</p>
<p>1. 具備高流量 ( High throughput ) 網路頻寬，頻寬位元率須高於輸入串流的 1.5倍。當您在進行轉播活動時，需要較高的頻寬來進行傳輸，因此可以選擇流量彈性較高的網路，藉此來降低成本。</p>
<p>2. 低延遲 ( Low latency ) 網路傳輸環境，需低於150毫秒。</p>
<p>3. 具備網路品質服務水準保證 ( SLA on QoS ) 與可用性 ( availability ) 之網路環境。</p>
<p>上述兩種作法在一線大型網路提供商皆可提供。符合條件之<a href="http://en.wikipedia.org/wiki/Tier_1_network">網路提供商列表</a>。</p>
<p>&nbsp;</p>
<h4>RTP 透過 Border Gateway Protocol&nbsp; (BGP) 網路互連 ( peering ) 傳輸影片</h4>
<p>您可以使用 RTP 通過公用網路以及 BGP 協定，讓您的資料中心與 Microsoft Azure 網路環境進行互連。在這種情況下，可由單一或多個網路提供商為影片直播提供高速 IP (HSIP) 之網路傳輸環境。影片資料傳輸透過公用網際網路時，而網路供應商之 IP Edge 可與Microsoft Azure 網路相互連接於一共同位置 (co-location)。而這些網路環境互聯相關資訊可以透過 <a href="https://www.peeringdb.com/login.php?ret_link=%2F&amp;type=notLogged">PeeringDB</a> 查詢得知。</p>
<p>網路供應商負責將影片資料傳送到 Microsoft Azure，亦可以訂定符合客戶需求之服務水準合約 (SLAs)。這個做法近來被使用在<a href="http://news.microsoft.com/2014/02/06/nbc-olympics-production-of-the-2014-olympic-winter-games-to-utilize-microsoft-for-live-and-on-demand-streaming/">轉播 NBC 運動賽事和冬季索契奧運會</a>，也有效的降低了網路的成本。</p>
<p>&nbsp;</p>
<h4>RTP 透過專用 ( dedicated ) 與私人 ( private ) 網路傳輸影片</h4>
<p>您可以使用一般針對通用的資料傳輸用途所設計的專用/私人網路來傳輸影片，而非使用專為影片傳輸所設計的網路環境來傳送，通常這種情況都是由網路供應商套裝服務所提供，這種服務的優點在點對點影片傳送時能夠帶來管理與服務品質上的優勢。這種服務主要分成兩種類型 :</p>
<p>1. <a href="http://azure.microsoft.com/zh-tw/services/expressroute/">Microsoft Azure ExpressRoute</a> 通過網路服務供應商 ( NSP ) 或是介接提供商 ( Exchange Provider )</p>
<p>例如 : <a href="http://your.level3.com/LP=882?WT.tsrc=02192014LP882AzureVanityAzureExpRtText">Azure ExpressRoute + Level 3 Cloud Connect Solutions</a> 或是 <a href="http://www.equinix.com/services/interconnection-connectivity/cloud-exchange/">Azure ExpressRoute + Equinix Cloud Exchange</a></p>
<p>2. 由網路供應商管理影音之服務</p>
<p>例如 : <a href="http://www.level3.com/en/products/vyvx-solutions/">Level 3 VYVX Solution</a></p>
<p>若您正在透過 RTP 發送一個及時饋送 ( Live feed )，在傳送中常見的編碼協議如下所示 :</p>
<ul>
<li>編碼 : H264/AAC</li>
<li>Container格式 : MPEG-2 TS</li>
<li>網路協定 --- 應用層 ( Application Layer ) : RTP</li>
<li>網路協定 --- 傳輸層 ( Transport Layer ) : UDP</li>
</ul>
<p>&nbsp;</p>
<h4>發送廣告信號 ( signaling advertisements )</h4>
<p>當您 Azure Media Service 的通道 ( Channel ) 已經啟用了即時編碼功能，您能夠透過一些組件來處理影片資料，並且進一步操控資料。在 Azure Media Service 的服務中，您可以透過通道來插入開拍板 ( Slates ) 和廣告訊號 ( Advertising signals ) 至欲輸出的 adaptive bitrate streaming 中。廣告訊號是一個時間同步 ( time-synchronized ) 的信號，您能夠將它內嵌到輸出串流，並且告知影片撥放器去執行特定的動作，例如在適當的時間點切換至廣告。您可以參考這篇<a href="https://codesequoia.wordpress.com/2014/02/24/understanding-scte-35/">部落格</a>，裡面介紹了 SCTE-35 訊號機制。以下是您能夠在您轉播即時事件時可以控制之動作 (範例程式和 API 細節會在日後的文章有詳細介紹 )。</p>
<ul>
<li>讓您的觀眾在事件撥放前 ( PRE-EVENT ) 獲得一個 PRE-EVENT 圖像</li>
<li>在事件撥放結束之後，獲得一個 POST-EVENT 圖像</li>
<li>在您的事件撥放期間，發生錯誤時，得到一個 ERROR-EVENT 圖像 ( 例如 : 球場停電 )</li>
<li>當中場廣告的時候出現一個 AD-BREAK 圖像。</li>
</ul>
<p>&nbsp;</p>
<h3>得到一個即時輸輸入影片之縮圖瀏覽 ( thumbnail preview )</h3>
<p>當即時編碼已經啟用，而且即時將影片餵入到 Azure Media Services 通道 ( Channel ) 之後，您可以藉由縮圖瀏覽來確認影片是否真的已經送達通道了，此縮圖功能 Azure Media Service 亦提供 API 可供開發人員呼叫。</p>
<h3>總結</h3>
<p>在這篇文章中，我們介紹了 Microsoft Azure Media Service 的即時編碼 ( Live Encoding ) 功能。在接下來的幾天，會有更多介紹關於如何使用 Azure 入口網站建立即時編碼、如何由本地端編碼器來將影片即時餵入 ( input live feed ) Azure Media Services 通道 ( Channel )、如何控制廣告訊號發送。若您還有其他關於即時編碼的問題，請透過此電子郵件信箱與我們聯繫&nbsp;<a href="mailto:amslived@microsoft.com"><em>amslived@microsoft.com</em></a><em> </em>。</p>]]></content:encoded>
    </item>
    <item>
      <title>檢視 Azure 虛擬機器重新啟動紀錄</title>
      <link>https://docs.microsoft.com/archive/blogs/tomleetaiwan/azure</link>
      <pubDate>Tue, 07 Apr 2015 00:09:00 GMT</pubDate>
      <dc:creator><![CDATA[tomleetaiwan]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/tomleetaiwan/2015/04/07/azure/</guid>
      <description><![CDATA[感謝北科大劉建昌同學協助翻譯微軟公司 Azure Compute Runtime 主管 Kenaz Kwa 於 2015/4/1 發表的文章 Viewing VM Reboot Logs (...]]></description>
      <content:encoded><![CDATA[<p><em>感謝北科大劉建昌同學協助翻譯微軟公司 Azure Compute Runtime 主管 Kenaz Kwa 於 2015/4/1 發表的文章 Viewing VM Reboot Logs ( </em><a title="http://azure.microsoft.com/blog/2015/04/01/viewing-vm-reboot-logs/" href="http://azure.microsoft.com/blog/2015/04/01/viewing-vm-reboot-logs/"><em>http://azure.microsoft.com/blog/2015/04/01/viewing-vm-reboot-logs/</em></a><em> )</em></p>
<p>Microsoft Azure 定期會執行全球性的更新服務 (Planned Maintenance)，藉此來提高所有託管服務或是虛擬機器基礎建設之可靠性 (Reliability)、效能 (Performance) 與安全性 (Security)。大多數的更新都是在資料中心完成，因此絕對不會影響到任何虛擬機器的運作，然而這些更新往往都需要將您的虛擬機器做重新啟動的動作。微軟公司很清楚定期更新對於用戶所造成的困擾，並將針對例行更新提供一系列改善措施，期望能夠降低您在經過每次的定期維護之後，重新啟動虛擬機器時所受到的影響，本篇所介紹的就是其中一項新功能。關於 Microsoft Azure 虛擬機器定期維護相關細節，請<a href="http://azure.microsoft.com/zh-tw/documentation/articles/virtual-machines-planned-maintenance/">參考這裡</a>。</p>
<p>為了幫助您確定虛擬機器重啟是否是因為定期維護事件的關係，我們提供了一個新的 API，它提供了一個紀錄檔 (Logs) 顯示您的虛擬機器何時曾進行重啟。</p>
<p>如果您在 Azure 入口網站瀏覽一個雲端服務 (Microsoft Azure Cloud Service)，您可以在儀表板的地方看到一個新連結 &rdquo;檢視重新啟動記錄 (Reboot logs)&rdquo;。</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/0412.image_426B55EF.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/0412.image_5F00_426B55EF.png"><img style="display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/3482.image_thumb_03E0E6E7.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/3482.image_5F00_thumb_5F00_03E0E6E7.png" alt="image" width="702" height="324" border="0" /></a></p>
<p>請注意，重啟紀錄只能夠透過雲端服務 (Cloud Services) 的儀表板做查看的動作，虛擬機器 (Virtual Machines) 的儀表板無此選項。</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/2234.image_3C66E59F.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/2234.image_5F00_3C66E59F.png"><img style="display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/5125.image_thumb_70E005D4.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/5125.image_5F00_thumb_5F00_70E005D4.png" alt="image" width="172" height="289" border="0" /></a></p>
<p>進入重啟紀錄的設定頁面，您能夠選擇任何時間範圍的虛擬機器重啟紀錄。</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/8270.image_60AF1C79.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/8270.image_5F00_60AF1C79.png"><img style="display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/6303.image_thumb_0209A0B4.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/6303.image_5F00_thumb_5F00_0209A0B4.png" alt="image" width="699" height="256" border="0" /></a></p>
<p>如果您有使用 Azure PowerShell，在最新版的 PowerShell 也能夠查到相同的資訊:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/1884.image_0A6854A9.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/1884.image_5F00_0A6854A9.png"><img style="display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/7103.image_thumb_66AA0BAC.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/7103.image_5F00_thumb_5F00_66AA0BAC.png" alt="image" width="701" height="97" border="0" /></a></p>
<p>以下為範例輸出 :</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/2577.image_7C6ED2A7.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/2577.image_5F00_7C6ED2A7.png"><img style="display: inline; background-image: none;" title="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/7563.image_thumb_5E6BA351.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/7563.image_5F00_thumb_5F00_5E6BA351.png" alt="image" width="703" height="257" border="0" /></a></p>
<p>在此能夠看到該台虛擬機器重啟的時間以及原因。</p>
<p>目前僅能列出定期更新維護 (Planned Maintenance) 所造成的虛擬機器重新啟動事件，我們將在近期內再新增更多種的重新啟動事件 (Event) ，讓使用者能夠利用 Azure 入口網站即可更清楚瞭解擬機器運作的情況。有關於管理虛擬機器的更多資訊，<a href="http://azure.microsoft.com/zh-tw/documentation/articles/virtual-machines-manage-availability/">請參考這裡</a>。</p>]]></content:encoded>
    </item>
    <item>
      <title>Azure Media Service 正式與 Azure CDN 整合</title>
      <link>https://docs.microsoft.com/archive/blogs/tomleetaiwan/azure-media-service-azure-cdn</link>
      <pubDate>Mon, 23 Mar 2015 23:42:01 GMT</pubDate>
      <dc:creator><![CDATA[tomleetaiwan]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/tomleetaiwan/2015/03/23/azure-media-service-azure-cdn/</guid>
      <description><![CDATA[感謝北科大劉建昌同學協助翻譯微軟公司 Azure Media Services 主管 Manling Zhang於 2015/3/17 發表的文章 Announcing Azure Media...]]></description>
      <content:encoded><![CDATA[<p><em>感謝北科大劉建昌同學協助翻譯微軟公司 Azure Media Services 主管 <a href="http://azure.microsoft.com/blog/author/mazha/">Manling Zhang</a>於 2015/3/17 發表的文章 Announcing Azure Media Services integration with Azure CDN (Content Delivery Network) ( <a title="http://azure.microsoft.com/blog/2015/03/17/announcing-azure-media-services-integration-with-azure-cdn-content-delivery-network/" href="http://azure.microsoft.com/blog/2015/03/17/announcing-azure-media-services-integration-with-azure-cdn-content-delivery-network/">http://azure.microsoft.com/blog/2015/03/17/announcing-azure-media-services-integration-with-azure-cdn-content-delivery-network/</a>)</em></p>  <p>&#160;</p>  <p>我們在這裡很高興的向各位宣布，Azure Media Services 正式能夠與 Azure CDN 進行整合。Azure CDN 能夠透過 Azure 管理入口網站、<a href="https://msdn.microsoft.com/zh-tw/library/dn783468.aspx">Media Services REST API 2.9</a> 或是 <a href="http://www.nuget.org/packages/windowsazure.mediaservices">.NET SDK 3.1.0.2</a> 整合任何媒體服務串流的端點 (Media services streaming endpoint)。這使得您能夠利用 Microsoft 在世界各地包含台灣在內的 <a href="https://msdn.microsoft.com/library/azure/gg680302.aspx">CDN存取點 (POPs)</a> ，輕鬆的將媒體串流播送出來，並且提高傳遞的效能。</p>  <p>CDN (Content Delivery Network) 最初的設計是透過與世界各地距離使用者較接近的 CDN POP 來暫存以及傳遞媒體串流，透過這種方式能夠讓傳送串流的時間減少，藉此來提升用戶的存取效率。</p>  <p><a href="http://acom.azurecomcdn.net/80C57D/blogmedia/blogmedia/2015/03/14/Blog1-CDN-global-map-storage-to-CDN-to-users.pdf-Manling-D.jpg"><img title="clip_image002" style="display: inline; background-image: none;" border="0" alt="clip_image002" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/3531.clip_image002_7265943B.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/3531.clip_5F00_image002_5F00_7265943B.jpg" width="676" height="348" /></a></p>  <p>在沒有使用 CDN 的情況下，用戶是直接存取 Azure Media Service 帳戶所在的資料中心。假設您的服務用戶數量有限 (數百個內)，而且用戶都位在資料中心的周邊地區，那不使用 CDN 直接透過 Azure Media Service 播送影音是可行的。但是影音服務若是跨區域，並且在全球各地有成千上萬的用戶，我們還是建議您啟用 Azure CDN 來提高串流傳遞的效能。</p>  <h3><b><u>價格優勢</u></b><b><u> : </u></b></h3>  <p>在沒有使用&#160; CDN的情況下，收費方式是串流從 Azure 資料中心傳出，開始計算流量。而使用 Azure CDN 的情況，您只需要支付串流從 CDN POPs 傳出到用戶端的流量費用，而從 Azure 資料中心傳到 Azure CDN 的流量是不需要收費的。</p>  <p><a href="http://acom.azurecomcdn.net/80C57D/blogmedia/blogmedia/2015/03/14/image.png"><img title="clip_image004" style="display: inline; background-image: none;" border="0" alt="clip_image004" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/5460.clip_image004_4A5575CD.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/5460.clip_5F00_image004_5F00_4A5575CD.png" width="681" height="182" /></a></p>  <p>Azure CDN 是使用隨用隨付 (pay-as-you-go) 的計費模式。不像某些 CDN 供應商需要用戶使用承諾至少一定之用量 (CDN specific minimum commitment) 再依照此訂定合約與費用</p>  <p>完整的 Azure CDN 價格詳情，<a href="http://azure.microsoft.com/zh-tw/pricing/details/cdn/">請參考這裡。</a></p>  <h3><b><u>主要特點</u></b><b><u> :</u></b></h3>  <p>&#160;</p>  <h4>資料中心的高可用性 (Availability) :</h4>  <p>Azure CDN 能夠在所有 Azure 資料中心啟用 (美西、美東、北歐、西歐、西日本地區、東南亞、東亞)</p>  <h4>串流主機名稱 ( Streaming hostname ):</h4>  <p>串流端點的主機名稱在啟用 CDN 服務之後還是相同的。您不需要為媒體串流在 Azure CDN 上啟用時進行任何改變。例如 : 如果您的串流端點主機名稱是 strasbourg.streaming.mediaservices.windows.net，而啟用 Azure CDN 服務之後，主機名稱依舊不會有任何改變。</p>  <h4>串流單位 ( Streaming unit ) :</h4>  <p>您必須至少有一個媒體串流單位才能夠啟用 Azure CDN 服務。在預設的情況下，當您建立一個媒體串流端點時，串流單位也會自動啟用。</p>  <h4>啟動時間 ( Activation time ) :</h4>  <p>啟用 Azure CDN之後，需要兩個小時的時間來啟動所有的 CDN POPs，並非立即生效請耐心等待。</p>  <h4>啟用 Azure CDN :</h4>  <p>您可以啟用 Azure CDN 服務來建立一個新的媒體串流端點，而對於現有的媒體串流端點，則需要先停止端點，再進行啟用 Azure CDN 的動作。</p>  <h4>允許用戶請求 ( Allowed requests ) :</h4>  <p>當 Azure CDN 啟用串流端點之後，客戶端 (Client) 不能夠直接向原始的資料中心要求資料。若是您需要直接測試原始資料中心內容或是不使用 Azure CDN 的話，您需要再建立另外一個新的串流端點，並且不啟用該端點的 Azure CDN 服務。</p>  <p>有關從 Azure 管理入口網站來啟用串流端點與 Azure CDN 服務，其詳細的操作步驟，請<a href="http://azure.microsoft.com/zh-tw/documentation/articles/media-services-manage-origins/">參考這裡</a>。</p>]]></content:encoded>
    </item>
    <item>
      <title>在 Linux 環境下使用 PHP 存取 Azure SQL Database</title>
      <link>https://docs.microsoft.com/archive/blogs/tomleetaiwan/linux-php-azure-sql-database</link>
      <pubDate>Sun, 15 Mar 2015 18:31:12 GMT</pubDate>
      <dc:creator><![CDATA[tomleetaiwan]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/tomleetaiwan/2015/03/15/linux-php-azure-sql-database/</guid>
      <description><![CDATA[代貼北科大劉建昌同學撰寫之技術文章。  隨著雲端應用的普及，企業或是個人在開發應用程式時，都可藉由雲端平台上的託管服務得到高可用性以及高擴展性。Microsoft Azure...]]></description>
      <content:encoded><![CDATA[<p><em>代貼北科大劉建昌同學撰寫之技術文章。</em></p>  <p>隨著雲端應用的普及，企業或是個人在開發應用程式時，都可藉由雲端平台上的託管服務得到高可用性以及高擴展性。Microsoft Azure 提供相當多的雲端解決方案可供客戶選擇，最常應用到的就是雲端資料庫 Azure SQL Database。Linux 用戶常遇到一個共通的問題，如何在 Linux 上以 PHP 連線到 Azure SQL Database ? 若是開發者使用 Windows Server 作業系統做為開發平台時，能夠與Azure SQL Database 完美的結合，不需要經過任何複雜配置與調整，在 Windows Server 使用 PHP 等開源程式碼時，也可以透過微軟<a href="http://www.microsoft.com/en-us/download/details.aspx?id=20098">提供的 Driver 來進行連結</a>，但若是以 Linux 做為開發平台時，情況會較為複雜。透過本文，將介紹如何利用 <a href="http://www.freetds.org/" target="_blank">FreeTDS</a> 在 Ubuntu 環境下 PHP 連接 Azure SQL Database。TDS 是 Microsoft SQL Server 資料傳輸所使用的封包格式，過去微軟 SQL Server 透過 DB Library API 提供 C 語言使用的 CLI ( Call Level Interface )，處理 TDS 封包與網路通訊，DB Library 的歷史可以追溯到 1990 年代初期微軟公司與 Sybase 間的合作，隨著時間的演進兩家公司間的 CLI 發展也逐漸分道揚鑣 ，由於在此一時間點微軟尚未提供 Linux 版的 DB Library，因此僅能藉由開放源碼專案 <a href="http://www.freetds.org/" target="_blank">FreeTDS</a> 來達成目的，但無法對 <a href="http://www.freetds.org/" target="_blank">FreeTDS</a> 提供任何品質保證。</p>  <h3><font style="font-weight: bold;">測試環境</font></h3>  <p>Linux 作業系統版本 : Ubuntu 14.10</p>  <p>Web Server : Apache2</p>  <p>PHP 環境版本 : PHP 5.5.12-2ubuntu4.2</p>  <p>雲端資料庫 : Azure SQL Database</p>  <p><b><u></u></b></p>  <h3><b><u>安裝 </u></b><b><u>FreeTDS</u></b></h3>  <p>1.安裝 freetds-dev&#160; , freetds-bin</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/2703.clip_image002_4DA9B304.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/2703.clip_5F00_image002_5F00_4DA9B304.jpg"><img title="clip_image002" style="display: inline; background-image: none;" border="0" alt="clip_image002" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/4784.clip_image002_thumb_4B038804.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/4784.clip_5F00_image002_5F00_thumb_5F00_4B038804.jpg" width="611" height="24" /></a></p>  <p>附註，此為 Ubuntu 安裝方式，不同 Linux 分發版本對於 packages 管理不同，例如 CentOS 7.0 安裝 FreeTDS 方式如下:</p>  <p><em><strong>sudo yum install wget        <br />sudo rpm -Uvh </strong></em><a href="http://mirror.oss.ou.edu/epel/7/x86_64/e/epel-release-7-5.noarch.rpm"><em><strong>http://mirror.oss.ou.edu/epel/7/x86_64/e/epel-release-7-5.noarch.rpm</strong></em></a>     <br /><em><strong>sudo cd /etc/yum.repos.d/        <br />sudo wget </strong></em><a href="http://rpms.famillecollet.com/enterprise/remi.repo"><em><strong>http://rpms.famillecollet.com/enterprise/remi.repo</strong></em></a>     <br /><em><strong>sudo yum install freetds        <br />sudo yum install freetds-devel</strong></em></p>  <p>2.利用 tsql –C 查看整個 FreeTDS 的資訊 ，以確認 FreeTDS 是否已經安裝成功。</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/5635.clip_image004_4F7C997C.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/5635.clip_5F00_image004_5F00_4F7C997C.jpg"><img title="clip_image004" style="display: inline; background-image: none;" border="0" alt="clip_image004" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/3531.clip_image004_thumb_1A066808.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/3531.clip_5F00_image004_5F00_thumb_5F00_1A066808.jpg" width="619" height="255" /></a></p>  <p>&#160;</p>  <h3>以 tsql 測試連線是否成功</h3>  <p>1. 在測試連線之前，要特別進入到Microsoft Azure入口網站中進行伺服器的連線設定</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/3377.clip_image008_0611F6D4.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/3377.clip_5F00_image008_5F00_0611F6D4.jpg"><img title="clip_image008" style="display: inline; background-image: none;" border="0" alt="clip_image008" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/8524.clip_image008_thumb_1C679C19.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/8524.clip_5F00_image008_5F00_thumb_5F00_1C679C19.jpg" width="618" height="171" /></a></p>  <p>(將使用者的IP位址加入伺服器允許存取IP的群組中)</p>  <p>2. 建立Azure SQL Database 伺服器連線</p>  <p><b><i>TDSVER=8.0 tsql -H </i></b><b><i>[</i></b><b><i>伺服器名稱&#160; xxxx.database.windows.net </i></b><b><i>]</i></b><b><i> -p 1433 –D </i></b><b><i>[</i></b><b><i>資料庫名稱 </i></b><b><i>]</i></b><b><i> -U </i></b><b><i>[</i></b><b><i>使用者帳號 </i></b><b><i>]</i></b></p>  <p><b><i>-P </i></b><b><i>[</i></b><b><i>使用者密碼 </i></b><b><i>]</i></b></p>  <p>3. 輸入 SQL 語法，測試是否可正常取得資料</p>  <p><b><i></i></b><b><i>在 </i></b><b><i>1&gt;</i></b><b><i>、</i></b><b><i>2&gt;</i></b><b><i>、</i></b><b><i>3&gt; </i></b><b><i>後輸入 </i></b><b><i>SQL </i></b><b><i>指令。</i></b><b><i></i></b></p>  <p><b><i></i></b><b><i>輸入 </i></b><b><i>go</i></b><b><i>，執行 </i></b><b><i>SQL </i></b><b><i>指令</i></b><b><i></i></b></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/1108.clip_image010_00C5A0D4.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/1108.clip_5F00_image010_5F00_00C5A0D4.jpg"><img title="clip_image010" style="display: inline; background-image: none;" border="0" alt="clip_image010" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/4278.clip_image010_thumb_171B4619.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/4278.clip_5F00_image010_5F00_thumb_5F00_171B4619.jpg" width="628" height="176" /></a></p>  <p>4. 資料若有顯示，代表成功連到了Azure SQL Database。某些 Linux 可能有作業系統層級的防火牆服務，請記得開啟允許 1433 TCP 通訊協定進出伺服器。</p>  <p>透過以上的步驟，Ubuntu Server 已經能夠和 Azure SQL Server 進行連線。</p>  <p>若使用者需要使用 PHP 來存取 Azure SQL Database 裡的資料，則需要再進行 PHP 程式碼的調整。由於Azure SQL Database 的連接字串專門是為一個資料庫運作，因此有些 PHP 資料庫操作 command 在連結 Azure SQL Database 時是被禁止的。例如 : 使用 MSSQL function 來建立連接字串，然後再執行 USE 指令切換到指定的資料庫。</p>  <p>為了解決這個限制造成的連線困難，我們可以透過 PDO driver 的 dblib，其能夠直接指定您要連接的資料庫伺服器。</p>  <h3>設定 PDO</h3>  <p>1. 您可以透過 phpinfo ( ) 來找到 php5 裡面的所有擴充功能的資訊</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/1007.clip_image012_7B794AD3.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/1007.clip_5F00_image012_5F00_7B794AD3.jpg"><img title="clip_image012" style="display: inline; background-image: none;" border="0" alt="clip_image012" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/7701.clip_image012_thumb_5D2E93DD.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/7701.clip_5F00_image012_5F00_thumb_5F00_5D2E93DD.jpg" width="638" height="112" /></a></p>  <p>如上圖所示，在尚未設定妥 PDO 時，PDO 是無法透過 dblib 驅動程式進行資料庫連線</p>  <p>2. 安裝 php5-sybase</p>  <p>安裝 php5-sybase 的方法可以參閱 <a title="http://grover.open2space.com/content/use-php-and-pdo-connect-ms-sql-server" href="http://grover.open2space.com/content/use-php-and-pdo-connect-ms-sql-server" target="_blank">http://grover.open2space.com/content/use-php-and-pdo-connect-ms-sql-server</a>，如下鍵入命令取得並安裝，完成後重起 Apache2 :</p>  <p><strong><em>sudo apt-get install php5-sybase        <br />sudo /etc/init.d/apache2 restart</em></strong></p> <strong><em></em></strong>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/3527.clip_image014_685AAED8.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/3527.clip_5F00_image014_5F00_685AAED8.jpg"><img title="clip_image014" style="display: inline; background-image: none;" border="0" alt="clip_image014" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/5127.clip_image014_thumb_17AC2463.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/5127.clip_5F00_image014_5F00_thumb_5F00_17AC2463.jpg" width="642" height="102" /></a></p>  <p>完成後如上圖顯示，現在可以透過 dblib 來進行連線字串設定</p>  <p>3. 透過 PDO 建立連接字串，與 Azure SQL Database 進行連線</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/6646.clip_image016_0E52EFE0.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/6646.clip_5F00_image016_5F00_0E52EFE0.jpg"><img title="clip_image016" style="display: inline; background-image: none;" border="0" alt="clip_image016" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/8662.clip_image016_thumb_5D533F32.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/8662.clip_5F00_image016_5F00_thumb_5F00_5D533F32.jpg" width="650" height="300" /></a></p>  <p>如果一切順利，網頁顯示連線成功</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/6038.clip_image018_017B2A73.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/6038.clip_5F00_image018_5F00_017B2A73.jpg"><img title="clip_image018" style="display: inline; background-image: none;" border="0" alt="clip_image018" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/81/31/metablogapi/0131.clip_image018_thumb_111DC635.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-31-metablogapi/0131.clip_5F00_image018_5F00_thumb_5F00_111DC635.jpg" width="654" height="440" /></a></p>]]></content:encoded>
    </item>
  </channel>
</rss>