Step 1 :
安装windows Azure package
Step 2 :
配置文件增加:
<appSettings>
<add key="StorageConnectionString" value="your connection string" />
</appSettings>
Step 3 :
using this Azure class
namespace Axe.AzureStorage
{
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Queue;
public class WinAzureStorageAsync
{
private readonly CloudQueue queue;
private readonly int timeoutSecond;
private CloudQueueClient queueClient;
public CloudQueueClient QueueClient
{
get
{
if (this.queueClient != null)
return this.queueClient;
var storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
this.queueClient = storageAccount.CreateCloudQueueClient();
return this.queueClient;
}
}
////since each time fetch message is not a block operation
////so need to set a timeout & keep fetching , default is 3 seconds
private const int SleepInterval = 100;
public WinAzureStorageAsync(string queueName, int timeoutSecond = 3)
{
queueName = queueName.ToLower();
this.queue = this.QueueClient.GetQueueReference(queueName);
if (!this.QueueClient.GetQueueReference(queueName).Exists())
{
this.queue.CreateIfNotExists();
}
this.timeoutSecond = timeoutSecond;
}
public async Task<CloudQueueMessage> GetMessage()
{
CloudQueueMessage message = null;
var passed = 0;
while (message == null && passed < this.timeoutSecond * 10 * SleepInterval)
{
message = await this.queue.GetMessageAsync();
Thread.Sleep(SleepInterval);
passed += SleepInterval;
}
if (message == null)
{
throw new TimeoutException("Get Message From Azure Queue Operation has been timeout");
}
await this.queue.DeleteMessageAsync(message);
return message;
}
public async Task<string> GetString()
{
var msg = await this.GetMessage();
return msg.AsString;
}
public async Task<byte[]> GetBytes()
{
var msg = await this.GetMessage();
return msg.AsBytes;
}
public T Get<T>() where T : new()
{
var bytes = this.GetBytes();
return this.BytesToT<T>(bytes.Result);
}
public async Task Add(string message)
{
await this.queue.AddMessageAsync(new CloudQueueMessage(message));
}
public async Task Add(byte[] bytes)
{
await this.queue.AddMessageAsync(new CloudQueueMessage(bytes));
}
public void Add<T>(T obj) where T : new()
{
var bytes = this.TToBytes(obj);
this.Add(bytes);
}
/// <summary>
/// Note : this operation make takes around 40 seconds to complete, reference here:
/// http://msdn.microsoft.com/library/azure/dd179387.aspx
/// </summary>
/// <returns></returns>
public async Task DeleteIfExists()
{
await this.queue.DeleteIfExistsAsync();
}
public async Task<bool> IsExist(string queueName)
{
queueName = queueName.ToLower();
return await this.QueueClient.GetQueueReference(queueName).ExistsAsync();
}
public void ClearMessage()
{
this.queue.Clear();
}
private T BytesToT<T>(byte[] bytes)
{
using (var ms = new MemoryStream())
{
ms.Write(bytes, 0, bytes.Length);
var bf = new BinaryFormatter();
ms.Position = 0;
var x = bf.Deserialize(ms);
return (T)x;
}
}
private byte[] TToBytes<T>(T obj)
{
var bf = new BinaryFormatter();
using (var ms = new MemoryStream())
{
bf.Serialize(ms, obj);
return ms.ToArray();
}
}
}
}
分享到:
相关推荐
在“QueueStorageTest”这个项目中,我们可以看到一个简单的示例,展示如何在Windows Azure中使用Queue Storage进行消息操作。这通常包括以下步骤: 1. **创建Queue客户端**: 首先,我们需要使用Azure存储SDK创建一...
本项目是关于在Windows Azure平台上开发和运行C#小程序的一个示例,展示了如何利用Azure的强大功能来实现云端应用。 在云环境中,C#开发者可以通过Azure的.NET服务,如Azure Functions、Azure Web Apps或Azure ...
- **Windows Azure Storage**:学习如何使用Blob存储、Table存储以及Queue存储来满足不同的数据存储需求。 - **SQL Azure**:介绍如何利用SQL Azure作为云中的关系型数据库服务,并实现数据访问层的设计与优化。 - *...
1、WindowsAzure:云计算操作系统 1.1 计算服务:云上应用提供服务,.netFramework,C#,VisualBasic,C++,Java 1.1.1 三种实例: · WebRole · WorkerRole · VMRole 1.2 存储服务:存储二进制和...
Azure WebJobs是一个强大的工具,常用于...通过编写C#代码并利用Azure Storage SDK,我们可以实现对Blob的自动化操作,并利用WebJobs的触发机制来响应数据变化。这不仅提高了应用程序的效率,也简化了后台任务的管理。
在Visual Studio 2013中,可以使用NuGet包管理器来安装`WindowsAzure.Storage`包,这是Microsoft Azure Storage SDK的一部分,它包含了处理Azure Blob、Queue和Table服务的类库。 创建Azure Storage表的第一步是...
在C#方面,C#是一种面向对象的、现代的编程语言,由微软开发,主要应用于Windows平台,但现在也广泛支持跨平台开发。学习C#的内容可能包括以下几个关键点: 1. **基础语法**:如变量、数据类型、控制结构(条件语句...
《Windows Azure:云应用程序与Web托管的探索之旅》 Windows Azure是微软提供的一个全面的云计算平台,它为开发者提供了一种高效、灵活的方式来构建、部署和管理应用程序。本篇文章将深入探讨Windows Azure的核心...
1. **Windows Azure(现称Azure云服务)**: Microsoft的云计算平台,提供各种服务如计算、存储、数据库、网络等,支持构建、部署和管理跨多个操作系统和设备的应用。 2. **C#编程语言**: 示例代码是用C#编写的,C#...
例如,你可以创建一个函数,当新图片上传到存储容器时,自动对其进行缩放、加水印等操作。 要使用Blob触发器,你需要在C#代码中定义一个函数,并使用`BlobTrigger`特性来指定要监听的Blob路径。例如: ```csharp ...
这是一个用于使用Azure Storage Queue服务的示例类库。 它包括用于将字符串和对象作为队列消息发送和接收的方法。 入门 此示例内置于Visual Studio 2017的.NET v 4.62中,但可以在不更改Microsoft WindowsAzure....
Windows Azure存储是微软提供的一个云存储服务,它允许开发者在全球范围内存储和访问数据。这个服务是构建在Azure平台上,为应用程序提供高可用性、可扩展性和数据持久性的解决方案。Azure存储由几个主要组件组成,...
本文将深入探讨“Sample-Queue”项目,这是一个使用C#编写的示例代码,旨在演示如何在Azure服务总线上发送和接收消息。 首先,我们需要了解Azure服务总线的基本概念。Azure服务总线是一个全面的消息传递平台,它...
- **Azure Storage**:可能用于存储项目数据,如Blob Storage用于文件存储,Table Storage用于结构化非关系型数据,或者Queue Storage用于消息队列和任务调度。 - **Azure SQL Database** 或 **Cosmos DB**:可能...
1. GUI设计:C#中的Windows Forms或WPF(Windows Presentation Foundation)框架提供了丰富的控件和布局管理,用于构建聊天窗口。例如,可以使用TextBox控件显示和输入文字,Button控件执行发送消息的功能,...
8. **存储**:Azure Storage服务,如Blob、Queue、Table和File服务的使用,以及如何通过.NET访问和操作这些存储资源。 9. **Redis Cache**:讲解如何在.NET应用中使用Azure Redis Cache以提升缓存性能。 10. **...
例如,可以使用C#编写Azure Functions,或者创建Azure Storage客户端应用来访问Blob、Queue和Table服务。 5. **DevOps实践**:Azure提供了丰富的DevOps工具,如Azure DevOps Services(前身为VSTS)和Azure ...
20. **Azure云服务**:C#与Azure的集成,学习如何构建和部署云应用程序。 以上只是部分可能涵盖的知识点,每个实例都将深入讲解一个或多个主题,通过实践加深理解和记忆。通过《C#时尚编程100例》的学习,开发者...
SDK包含了对Azure Blob、Table、Queue存储的支持,以及对Azure Cosmos DB、Service Bus、Event Hubs等服务的接口。通过这些API,开发者可以方便地创建、管理和操作Azure资源。 Azure CLI(命令行界面)是另一个关键...
C#是一种面向对象的编程语言,由微软开发,主要用于构建Windows应用程序、Web应用、游戏以及移动应用等。它具有丰富的特性和强大的类型系统,是.NET框架的核心组成部分。在C#中,开发者可以方便地与数据库和文件系统...