云计算 频道

一步一步教你实现一个简单的云服务

  【IT168 应用】准备工作:Windows Azure只能运行在Windows 7, Windows Server 2008 和Windows Vista 上。暂不支持Windows 2003和XP。昨天安装了Win7,打算尝试写一个 Azure小程序,程序很简单,实现图片的简单上传和搜索功能,我顺便研究一下 微软的Azure平台,下面是我的软件环境。

  操作系统:Windows 7

  开发工具:Visual Studio2010 RC,Windows Azure SDK ,Windows Azure Tools

  第一步:安装Windows Azure SDK

  首先确定你的操作系统满足要求,Visual Studio可以是Visual Studio2008 或者Visual Studio2010。到下面网址下载Windows Azure SDK :

  http://www.microsoft.com/downloads/details.aspx?FamilyID=772990da- 8926-4db0-958f-95c1da572c84&displaylang=en

  一旦你安装成功,你的电脑上会多出Windows Azure SDK v1.1 ,如下图:

一步一步教你实现一个简单的云服务

  启动Development Fabric和Development Stroage:

一步一步教你实现一个简单的云服务

  显示配置界面:

一步一步教你实现一个简单的云服务

  Development Fabric:

一步一步教你实现一个简单的云服务

  Development Storage:

一步一步教你实现一个简单的云服务

  以上证明你安装成功。

  第二步:安装Windows Azure Tools for Microsoft Visual Studio

  地址:http://www.microsoft.com/downloads/details.aspx? FamilyID=5664019e-6860-4c33-9843-4eb40b297ab6&displaylang=en

  安装之后,Visual Studio会有如下模版:

一步一步教你实现一个简单的云服务

  第三步:新建一个云服务命名为BlobStorage,如下图:

一步一步教你实现一个简单的云服务

  使用简单的ASP.NET Web Role,并更名为BlobWebRole,如下图:


  得到如下结构的项目:


  第四步:修改代码,我们实现一个简单的图片上传和搜索的功能:

一步一步教你实现一个简单的云服务(4)

  1、添加一个connectionstring,如下图

一步一步教你实现一个简单的云服务(4)

 

  2、将WebRole的代码修改成如下所示:

public class WebRole : RoleEntryPoint
     {
        
public override bool OnStart()
         {
             DiagnosticMonitor.Start (
"BlobConnectionString");
             CloudStorageAccount.SetConfigurationSettingPublisher((configName,  configSetter) 
=>
             {
                 configSetter (RoleEnvironment.GetConfigurationSettingValue(configName));
             });
            
// get the blob connection string
             CloudStorageAccount objStorage 
=  CloudStorageAccount.FromConfigurationSetting ("BlobConnectionString");
            
// get the client reference
             CloudBlobClient objClient 
= new  CloudBlobClient(objStorage.BlobEndpoint, objStorage.Credentials);
            
// Get the reference to container
             CloudBlobContainer objContainer 
=  objClient.GetContainerReference("mycontainer");
            
// Create the container if it does  not exist
             objContainer.CreateIfNotExist();
           RoleEnvironment.Changing 
+=  RoleEnvironmentChanging;
           return base.OnStart();

         }
        
private void RoleEnvironmentChanging(object  sender, RoleEnvironmentChangingEventArgs e)
         {
            
// If a configuration setting is  changing
            
if (e.Changes.Any(change => change  is RoleEnvironmentConfigurationSettingChange))
             {
                
// Set e.Cancel to true to  restart this role instance
                 e.Cancel 
= true;
             }
         }
     }
本文来自编程入门网:http:
//www.bianceng.cn/Servers/cloud-computing/201011/20499_5.htm

 

  3、在页面上拖放几个控件,简单地布局如下:

一步一步教你实现一个简单的云服务(4)

  4、后台代码如下:

protected void Button1_Click(object sender, EventArgs  e)
         {

            
// Get the storage account  reference
             CloudStorageAccount objStorage 
=  CloudStorageAccount.FromConfigurationSetting ("BlobConnectionString");
            
// get the Client reference using  storage blobend point
             CloudBlobClient objClient 
= new  CloudBlobClient(objStorage.BlobEndpoint, objStorage.Credentials);
            
// Get Container reference
             CloudBlobContainer objContainer 
=  objClient.GetContainerReference("mycontainer");

            
// Get blob reference
             CloudBlob obj 
=  objContainer.GetBlobReference(FileUpload1.FileName.ToString());
            
// Set meta values
             obj.Metadata[
"MetaName"] = "meta";
            
// Open a stream using the cloud  object
             BlobStream blobstream 
= obj.OpenWrite ();
            
// Write the stream to the blob  database
             blobstream.Write(FileUpload1.FileBytes, 
0,  FileUpload1.FileBytes.Count());
             blobstream.Close();
            
// Browse through blob list from the  container
             IEnumerable
<IListBlobItem>  objBlobList = objContainer.ListBlobs();
             foreach (IListBlobItem objItem in  objBlobList)
             {
                 Response.Write(objItem.Uri 
+  "<br>");
             }
         }
         protected void Button2_Click(
object sender,  EventArgs e)
         {
            
// Get the storage account  reference
             CloudStorageAccount objStorage 
=  CloudStorageAccount.FromConfigurationSetting ("BlobConnectionString");
            
// get the Client reference using  storage blobend point
             CloudBlobClient objClient 
= new  CloudBlobClient(objStorage.BlobEndpoint, objStorage.Credentials);
            
// Get Container reference
             CloudBlobContainer objContainer 
=  objClient.GetContainerReference("mycontainer");
            
// Get the blob reference using the  blob name provided in the search
             CloudBlob obj 
=  objContainer.GetBlobReference(txtSearch.Text);
             BlobStream blobstream 
= obj.OpenRead ();
            
// Create the image object and  display the same on the browser response
             System.Drawing.Image objimg 
= null;
             objimg 
= System.Drawing.Image.FromStream (blobstream, true);
             Response.Clear();
             Response.ContentType 
= "image/gif";
             objimg.Save(Response.OutputStream,  System.Drawing.Imaging.ImageFormat.Jpeg);
         }

本文来自编程入门网:http:
//www.bianceng.cn/Servers/cloud-computing/201011/20499_5.htm

  运行效果:


 

0
相关文章