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


    准备工作:

        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,如下图:

    得到如下结构的项目:

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

    1、添加一个connectionstring,如下图

    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;
                }
            }
        }

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

    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);
            }

    运行效果:

    上传:

    搜索:搜出一张美女图片

    代码:/Files/zhuqil/BlobStorage.zip



    (全文完)


    以下为广告部分

    您部署的HTTPS网站安全吗?

    如果您想看下您的网站HTTPS部署的是否安全,花1分钟时间来 myssl.com 检测以下吧。让您的HTTPS网站变得更安全!

    SSL检测评估

    快速了解HTTPS网站安全情况。

    安全评级(A+、A、A-...)、行业合规检测、证书信息查看、证书链信息以及补完、服务器套件信息、证书兼容性检测等。

    SSL证书工具

    安装部署SSL证书变得更方便。

    SSL证书内容查看、SSL证书格式转换、CSR在线生成、SSL私钥加解密、CAA检测等。

    SSL漏洞检测

    让服务器远离SSL证书漏洞侵扰

    TLS ROBOT漏洞检测、心血漏洞检测、FREAK Attack漏洞检测、SSL Poodle漏洞检测、CCS注入漏洞检测。

    作者:朱祁林 出处:http://zhuqil.cnblogs.com 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。  
  • 相关阅读:
    js01
    js---18miniJquery
    js---17继承中方法属性的重写
    js---16继承
    js---16原型链
    js---15深拷贝浅拷贝 原型链
    js---14公有私有成员方法
    js---13 this call apply
    js---12对象创建方式,构造器,原型
    ESXi导出的CentOS7 ovf文件导入到workstation 无法打开GUI登录界面的问题解决方案
  • 原文地址:https://www.cnblogs.com/zhuqil/p/MyFirstAzure.html
Copyright © 2020-2023  润新知