http://vic.ms
vitorcia@microsoft.com
<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition
xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefiniti
on" name="MyService">
  <WebRole name="MyService_WebRole" vmsize="Medium">
    <InputEndpoints>
      <InputEndpoint name="HttpIn" port="80" protocol="http" />
    </InputEndpoints>
    <ConfigurationSettings>
      <Setting name="SimpleConfigSetting" />
    </ConfigurationSettings>
    <LocalResources>
      <LocalStorage name="localStorageUm" sizeInMB="10" />
      <LocalStorage name="localStorageDois" sizeInMB="10"
cleanOnRoleRecycle="false" />
    </LocalResources>
  </WebRole>
</ServiceDefinition>
var localStorageUm = RoleEnvironment.GetLocalResource("localStorageUm");
  var nomeArquivo = "MeuArquivo.txt";
  var caminhoArquivo = Path.Combine(localStorageUm.RootPath, nomeArquivo);

  using (var fileStream = File.Open(caminhoArquivo, FileMode.OpenOrCreate,
  FileAccess.ReadWrite))
  {
      fileStream.Position = fileStream.Length;
      using (var streamWriter = new StreamWriter(fileStream))
      {
        streamWriter.WriteLine("Nova linha! {0}", DateTime.Now);
      }
  }




var   localStorageUm = RoleEnvironment.GetLocalResource("localStorageUm");
var   pastas = @"Pasta1Pasta2";
var   nomeArquivo = "MeuArquivo.txt";
var   caminhoArquivo = Path.Combine(localStorageUm.RootPath, pastas, nomeArquivo);


 Ex.: C:Resourcesdirectoryf335471d5a5845aaa4e66d0359e69066.MyService_WebRole.
 localStorageUmPasta1Pasta2MeuArquivo.txt
http://azXXXX.vo.msecnd.net/meucontainer/minhaimagem.png




        minhaimagem.png
                       Localidade 2                     Localidade 3
                 TTL
                                 Content Delivery Network
  Localidade 1                 http://minhaconta.blob.core.windows.net/
                                         
                               http://azXXXX.vo.msecnd.net/




                                               minhaimagem.png
                 http://minhaconta.blob.core.windows.net/meucontainer/minhaimagem.png
                                  Windows Azure Blob Service
Conta    Tabela     Entidade

                     Name =…
                     Email = …
         clientes
                     Name =…
                    EMailAdd= …
 conta
                    Photo ID =…
                      Date =…
          fotos
                    Photo ID =…
                      Date =…
<ConfigurationSettings>

     <Setting
       name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString"
       value="UseDevelopmentStorage=true" />

     <Setting name="Conta1"
       value="DefaultEndpointsProtocol=https;AccountName=techedvc;AccountK
       ey=iqFj1tz09TWhIqfBls++q/cSUNTsklL0Yeh525LQQb8Cy4IvvIpdsfg+/DMcm+/a
       3NHOkA1hS0InGy2A7iug==" />

</ConfigurationSettings>
public class ProdutoEntity : TableServiceEntity
{
    public ProdutoEntity(string partitionKey, string rowKey)
        : base(partitionKey, rowKey)
    {
    }

    public ProdutoEntity()
        : base("particao1", Guid.NewGuid().ToString())
    {
    }

    public string Nome { get; set; }

    public int Quantidade { get; set; }
}
internal class ProdutoContext : TableServiceContext
{
    public ProdutoContext(string baseAddress, StorageCredentials
credentials)
        : base(baseAddress, credentials)
    {
    }

    internal const string NomeTabelaProdutos = "TabelaProdutos";

    public IQueryable<ProdutoEntity> Produtos
    {
        get
        {
            return this.CreateQuery<ProdutoEntity>(NomeTabelaProdutos);
        }
    }
}
var storageAccount = CloudStorageAccount.FromConfigurationSetting("conta1");
var produtoContext = new
ProdutoContext(storageAccount.TableEndpoint.ToString(),
storageAccount.Credentials);

storageAccount.CreateCloudTableClient().CreateTableIfNotExist(ProdutoContext.
NomeTabelaProdutos);

var novoProduto1 = new ProdutoEntity() { Nome = "Produto 1", Quantidade = 10
};
produtoContext.AddObject(ProdutoContext.NomeTabelaProdutos, novoProduto1);

produtoContext.SaveChangesWithRetries();

var query = from produto in produtoContext.Produtos
            where produto.PartitionKey.Equals("particao1") &&
            produto.Quantidade > 5
            select produto;
var tableQuery = query.AsTableServiceQuery<ProdutoEntity>();
var produtos = tableQuery.Execute().ToList();
var query = from produto in produtoContext.Produtos
            where produto.PartitionKey.Equals("particao1") &&
            produto.Quantidade > 5
            select produto;

var tableQuery = query.AsTableServiceQuery<ProdutoEntity>();
var produtos = tableQuery.Execute().ToList();

var produtoParaExcluir = produtos[0];
produtoContext.DeleteObject(produtoParaExcluir);

var produtoParaAlterar = produtos[1];
produtoParaAlterar.Quantidade++;
produtoContext.UpdateObject(produtoParaAlterar);

produtoContext.SaveChanges();
Conta       Fila        Mensagem



                         ID cliente
                         ID pedido
                          http://…
        processamento
conta     depedidos
                         ID cliente
                         ID pedido
                          http://…
var storageAccount =
CloudStorageAccount.FromConfigurationSetting("conta1");
var clienteDaQueue = storageAccount.CreateCloudQueueClient();
var queue = clienteDaQueue.GetQueueReference("minhafila");

queue.CreateIfNotExist();

var novaMensagem1 = new CloudQueueMessage("Mensagem 1");
queue.AddMessage(novaMensagem1);

var mensagens = queue.GetMessages(10, TimeSpan.FromMinutes(5)).ToList();

foreach (var mensagem in mensagens)
{
    //processa a mensagem
    queue.DeleteMessage(mensagem);
}
Windows Azure 5/8 - Recursos adicionais do Windows Azure
Windows Azure 5/8 - Recursos adicionais do Windows Azure

Windows Azure 5/8 - Recursos adicionais do Windows Azure

  • 1.
  • 8.
    <?xml version="1.0" encoding="utf-8"?> <ServiceDefinition xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefiniti on"name="MyService"> <WebRole name="MyService_WebRole" vmsize="Medium"> <InputEndpoints> <InputEndpoint name="HttpIn" port="80" protocol="http" /> </InputEndpoints> <ConfigurationSettings> <Setting name="SimpleConfigSetting" /> </ConfigurationSettings> <LocalResources> <LocalStorage name="localStorageUm" sizeInMB="10" /> <LocalStorage name="localStorageDois" sizeInMB="10" cleanOnRoleRecycle="false" /> </LocalResources> </WebRole> </ServiceDefinition>
  • 9.
    var localStorageUm =RoleEnvironment.GetLocalResource("localStorageUm"); var nomeArquivo = "MeuArquivo.txt"; var caminhoArquivo = Path.Combine(localStorageUm.RootPath, nomeArquivo); using (var fileStream = File.Open(caminhoArquivo, FileMode.OpenOrCreate, FileAccess.ReadWrite)) { fileStream.Position = fileStream.Length; using (var streamWriter = new StreamWriter(fileStream)) { streamWriter.WriteLine("Nova linha! {0}", DateTime.Now); } } var localStorageUm = RoleEnvironment.GetLocalResource("localStorageUm"); var pastas = @"Pasta1Pasta2"; var nomeArquivo = "MeuArquivo.txt"; var caminhoArquivo = Path.Combine(localStorageUm.RootPath, pastas, nomeArquivo); Ex.: C:Resourcesdirectoryf335471d5a5845aaa4e66d0359e69066.MyService_WebRole. localStorageUmPasta1Pasta2MeuArquivo.txt
  • 14.
    http://azXXXX.vo.msecnd.net/meucontainer/minhaimagem.png minhaimagem.png Localidade 2 Localidade 3 TTL Content Delivery Network Localidade 1 http://minhaconta.blob.core.windows.net/  http://azXXXX.vo.msecnd.net/ minhaimagem.png http://minhaconta.blob.core.windows.net/meucontainer/minhaimagem.png Windows Azure Blob Service
  • 19.
    Conta Tabela Entidade Name =… Email = … clientes Name =… EMailAdd= … conta Photo ID =… Date =… fotos Photo ID =… Date =…
  • 20.
    <ConfigurationSettings> <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" /> <Setting name="Conta1" value="DefaultEndpointsProtocol=https;AccountName=techedvc;AccountK ey=iqFj1tz09TWhIqfBls++q/cSUNTsklL0Yeh525LQQb8Cy4IvvIpdsfg+/DMcm+/a 3NHOkA1hS0InGy2A7iug==" /> </ConfigurationSettings>
  • 21.
    public class ProdutoEntity: TableServiceEntity { public ProdutoEntity(string partitionKey, string rowKey) : base(partitionKey, rowKey) { } public ProdutoEntity() : base("particao1", Guid.NewGuid().ToString()) { } public string Nome { get; set; } public int Quantidade { get; set; } }
  • 22.
    internal class ProdutoContext: TableServiceContext { public ProdutoContext(string baseAddress, StorageCredentials credentials) : base(baseAddress, credentials) { } internal const string NomeTabelaProdutos = "TabelaProdutos"; public IQueryable<ProdutoEntity> Produtos { get { return this.CreateQuery<ProdutoEntity>(NomeTabelaProdutos); } } }
  • 23.
    var storageAccount =CloudStorageAccount.FromConfigurationSetting("conta1"); var produtoContext = new ProdutoContext(storageAccount.TableEndpoint.ToString(), storageAccount.Credentials); storageAccount.CreateCloudTableClient().CreateTableIfNotExist(ProdutoContext. NomeTabelaProdutos); var novoProduto1 = new ProdutoEntity() { Nome = "Produto 1", Quantidade = 10 }; produtoContext.AddObject(ProdutoContext.NomeTabelaProdutos, novoProduto1); produtoContext.SaveChangesWithRetries(); var query = from produto in produtoContext.Produtos where produto.PartitionKey.Equals("particao1") && produto.Quantidade > 5 select produto; var tableQuery = query.AsTableServiceQuery<ProdutoEntity>(); var produtos = tableQuery.Execute().ToList();
  • 24.
    var query =from produto in produtoContext.Produtos where produto.PartitionKey.Equals("particao1") && produto.Quantidade > 5 select produto; var tableQuery = query.AsTableServiceQuery<ProdutoEntity>(); var produtos = tableQuery.Execute().ToList(); var produtoParaExcluir = produtos[0]; produtoContext.DeleteObject(produtoParaExcluir); var produtoParaAlterar = produtos[1]; produtoParaAlterar.Quantidade++; produtoContext.UpdateObject(produtoParaAlterar); produtoContext.SaveChanges();
  • 29.
    Conta Fila Mensagem ID cliente ID pedido http://… processamento conta depedidos ID cliente ID pedido http://…
  • 30.
    var storageAccount = CloudStorageAccount.FromConfigurationSetting("conta1"); varclienteDaQueue = storageAccount.CreateCloudQueueClient(); var queue = clienteDaQueue.GetQueueReference("minhafila"); queue.CreateIfNotExist(); var novaMensagem1 = new CloudQueueMessage("Mensagem 1"); queue.AddMessage(novaMensagem1); var mensagens = queue.GetMessages(10, TimeSpan.FromMinutes(5)).ToList(); foreach (var mensagem in mensagens) { //processa a mensagem queue.DeleteMessage(mensagem); }