segunda-feira, 17 de outubro de 2011

Anfitrião PHP na Nuvem com Windows Azure


Mais do que um chavão em reuniões executivas, computação em nuvem é a próxima grande coisa no mundo da TI. Nuvens oferecer uma quantidade infinita de recursos, tanto na demanda e no pay-per-use modelos: os recursos do computador na torneira! Neste artigo, vou me concentrar em uma dessas plataformas de nuvem, Windows Azure da Microsoft, e dar-lhe todas as informações que você precisa para começar a desenvolver aplicações PHP nesta plataforma. Apesar de não ir muito fundo nas questões técnicas, eu vou apontar-lhe mais informações e recursos em pontos específicos como vamos nós.



Nuvens diferentes


Escolha é uma coisa boa. A grande notícia para os desenvolvedores de nós é que há muitas escolhas quando se trata de cloud computing. Microsoft, Google, Amazon, Rackspace, GoGrid, e muitos outros oferecem produtos nuvem que têm suas próprias características especiais. Parece que o mundo inteiro está dividindo estas ofertas em duas categorias distintas: IaaS (Infra-estrutura-como-a-Service) e PaaS (Platform-as-a-Service), a diferença entre os dois é ilustrada na Figura 1, "A diferença entre as plataformas em nuvem ".


A diferença entre as plataformas cloud


Primeiro, vamos olhar para IaaS. Amazon EC2 foi a primeira a oferecer máquinas virtuais que podem executar o aplicativo. Essas máquinas virtuais, no entanto, estão sob seu controle, como servidores físicos no data center. Isto significa que você está no controle de patches, segurança, manutenção, para o sistema operacional e todos com raiz integral ou acesso de administrador. A plataforma de cloud leva as desgraças de infra-estrutura fora de suas mãos, como redes, 
balanceadores de carga e firewalls são manipuladas para você.


Em seguida, há PaaS. Esta abordagem também é baseado em máquinas virtuais, mas você não tem controle sobre eles. Em vez disso, um conjunto de ferramentas e APIs é fornecido para permitir que você empacotar o aplicativo e enviá-lo em sua máquina virtual, então a única coisa que você tem que se preocupar é a sua aplicação. O trabalho em rede, sistema operacional, e assim por diante são todos mantidos pela plataforma de nuvem.


Todos os fornecedores de cloud partilham características comuns, incluindo máquinas virtuais e de armazenamento que está disponível através de protocolos baseados em REST. Então, novamente, cada oferta tem suas próprias características únicas, o que é bom: nuvens ainda estão em uma fase muito inovador, e como desenvolvedores temos o luxo de escolher a plataforma que é mais adequado para nossas aplicações particular.


Visão Geral da Plataforma do Windows Azure


Ao longo deste artigo, estarei descrevendo a plataforma Windows Azure, PaaS Microsoft está oferecendo ao mundo da computação em nuvem. Mas antes de mergulhar em detalhes técnicos, vamos começar uma sensação para os componentes incluídos nesta oferta, eo que eles fazem.


Windows Azure


Windows Azure é o principal componente da Plataforma Windows Azure. O pessoal de marketing descrever esse componente como o "sistema operacional para a nuvem Azure." Eu não sou um grande fã do pessoal de marketing e suas citações, mas por uma vez, eles estão certos! Windows Azure é o coração da oferta da Microsoft, e ele faz o que você esperaria de qualquer sistema operacional: ele 
permite que você executar o aplicativo em uma máquina virtual, ou em um papel de web (com um servidor web instalado) ou em um trabalhador papel-uma máquina de limpeza virtual que permite a você hospedar outros tipos de aplicações.


Windows Azure também permite expandir rapidamente: basta alterar um valor de configuração e você terá várias instâncias em execução um estalo de dedos. Balanceamento de carga é realizado automaticamente e não requer configuração.


Ao lado do sistema operacional, um conjunto de serviços de armazenamento está incluído, que é acessível através de uma API baseada em REST. Armazenamento blob permite hospedar qualquer arquivo: arquivos de texto, imagens, downloads e muito mais.


Armazenamento da tabela é, em essência, um banco de dados do documento que tem limitado as possibilidades de consulta, mas pode escalar de forma maciça. E depois há filas, que são usados ​​principalmente para a comunicação entre web e papéis de trabalho.


Windows Azure é o local onde o aplicativo será hospedado. Um papel web vai hospedar seu aplicativo web, você provavelmente vai usar o armazenamento blob para armazenar arquivos, e possivelmente de armazenamento da tabela (ou SQL Azure, que discutiremos em um momento) para armazenar seus dados. Windows Azure é também utilizado por outros componentes da plataforma.


SQL Azure


Além de hospedagem, provavelmente você vai precisar de um lugar onde você pode armazenar seus dados relacional. Isto é onde o SQL Azure vem: é uma versão ligeiramente modificada do Microsoft SQL Server que oferece todos os serviços que você esperaria de um banco de dados: tabelas, visões, índices, procedimentos armazenados, triggers, e assim por diante.


SQL Azure oferece serviços de banco de dados de forma escalável e confiável. Os dados são replicados em diferentes sites e disponibilizados através de um balanceador de carga, dando-lhe um monte de desempenho sobre a camada de dados de sua aplicação.


Windows Azure Platform AppFabric


Windows Azure Platform AppFabric é, em essência, uma combinação de dois produtos. Há um serviço de controle de acesso para o qual você pode delegar as tarefas de autenticação e autorização de usuários, e não há o Bus Service, que, na minha opinião, é uma das características que realmente torna o Windows Azure se destacam. Em suma, o ônibus serviço permite estabelecer a comunicação entre dois pontos. Que pode ser um serviço que publica mensagens para um conjunto de assinantes, mas o ônibus de serviço também pode ser usado para perfurar buracos na firewalls!


Imagine ter aplicações A e B, cada um em diferentes redes, por trás de firewalls diferentes. Sem comunicação direta parece possível, barramento de serviços yetthe AppFabric irá certificar-se de ambas as aplicações possam se comunicar. Não há necessidade de abrir portas no firewall da sua empresa para ter o seu aplicativo em nuvem comunicar com uma aplicação no local.


Live Services


Live Services fornece um sistema de identidade on-line que você provavelmente já sabe: Windows Live ID. Live Services também oferece recursos como a presença de sensibilização, pesquisa de mapeamento, via Bing Maps, sincronização, e muito mais.


Projetos Codename: Dallas e Sydney


Esses produtos ainda estão em fase de incubação, e provavelmente irá sofrer algumas alterações no futuro. No entanto, eles já oferecem algumas características grandes. Dallas é basicamente uma solução de dados-como-um-serviço através do qual você pode se inscrever em vários conjuntos de dados oferecidos em um formato aberto, OData, que é baseado em REST e Atom. Ele também fornece seu negócio com uma nova fonte de receitas: se você está sentado em uma grande quantidade de dados úteis, por que não torná-lo disponível via Dallas e ter os outros a pagar para usá-lo?


Projeto de Sydney é diferente: ele é focado em como você se comunica com o aplicativo em nuvem. Atualmente, essa comunicação é completada através da Internet pública, mas Sydney lhe permitirá configurar uma conexão VPN para suas máquinas virtuais, permitindo-lhe a comunicação segura usando seus certificados de segurança própria e tal.


Ferramentas e APIs disponíveis para PHP


Quando estamos falando sobre o uso de PHP em uma plataforma de nuvem como o Windows Azure, existem alguns objetivos que devemos cumprir antes de começarmos a trabalhar com a nuvem. Você precisa das ferramentas certas para criar e implantar a sua aplicação, mas também o direito APIs, aqueles que permitem que você use a plataforma e todos os seus recursos.


Microsoft tem vindo a fazer um monte de bom trabalho nesta área. Sim, o Windows Azure é uma plataforma baseada em Windows que parece único alvo. NET. No entanto, quando você olhar para as ferramentas, tutoriais, APIs, e posts em torno de PHP e Windows Azure, está claro que o PHP é um cidadão igualmente valorizados da plataforma!


Vamos dar um passeio de todas as ferramentas e APIs que estão disponíveis para o PHP no Windows Azure hoje. Muitas dessas ferramentas são muito fáceis de instalar usando o Instalador-a Plataforma Web "check-chegada da próxima" assistente que permite que você instale as plataformas e ferramentas de uma maneira fácil e eficiente.


Suporte para IDE


Claro, você pode usar seu editor favorito para trabalhar em uma aplicação PHP que estará hospedado no Windows Azure. Por outro lado, se você estiver utilizando um editor baseado em Eclipse como o Eclipse PDT, Zend Studio, ou Aptana, você pode tirar vantagem de um plugin grande que vai acelerar seus esforços de desenvolvimento, mostrada na Figura 2, "Usando o Eclipse para desenvolvimento ".


O plugin do Eclipse para o Windows Azure está disponível em http://windowsazure4e.org . Além disso, 
Josh Holmes preparou um post útil, fácil configuração para o PHP no Desenvolvimento Azure .


Usando o Eclipse para o desenvolvimento


Depois de instalar o plugin, você encontrará as seguintes funcionalidades 
foram adicionadas ao seu IDE:


Criação de projetos e migração permite a fácil migração 
de uma aplicação existente para uma aplicação Windows Azure. Esta 
ferramenta irá obter o seu aplicativo pronto para embalagem e implantação 
para o Windows Azure.
Storage Explorer fornece acesso ao seu Windows Azure 
contas de armazenamento e permite que você upload e download de blobs, 
tabelas de consulta, filas de lista, e assim por diante.
Teste de depuração e local também está incluído: não há 
necessidade de implantar e testar o aplicativo imediatamente no Windows 
Azure. Um "local nuvem" ambiente de simulação está disponível.
Acondicionamento


Uma vez que seu aplicativo está pronto para implantação, deve ser embalado para o Windows Azure. Packaging é basicamente o processo de criação de um arquivo ZIP de sua aplicação e incorporação de um manifesto de todos os arquivos incluídos e sua configuração 
requisitos.


O plugin do Eclipse para o Windows Azure contém esse recurso. No entanto, se você não usar o Eclipse como seu IDE, ou se você estiver trabalhando em um ambiente não-Windows, você pode empacotar seu aplicativo usando o Windows Azure linha de comando ferramentas para desenvolvedores de PHP .


Ferramentas de desenvolvimento e SDKs


Em seguida, vamos dar uma volta em torno de algumas das ferramentas e SDKs que o Windows Azure coloca à disposição dos desenvolvedores.


Windows Azure SDK for PHP


Se você está pensando em migrar uma aplicação ou a construção de um novo para o Windows Azure, as chances são que você vai precisar de armazenamento. Este é onde o Windows Azure SDK for PHP vem a calhar: dá-lhe acesso fácil ao armazenamento blob, armazenamento de tabelas e serviços fila fornecido pelo Windows Azure. Você pode baixar este SDK como um pacote stand-alone, open-source que permite o acesso ao armazenamento, tanto em suas instalações locais e sua aplicação na nuvem. Se você estiver usando o Eclipse plug-in que discutimos anteriormente, você vai encontrar essa API é incluído.


O processo de utilização de armazenamento sempre começa com a criação de suas credenciais: um nome de conta e uma chave compartilhada (pense nisso como uma senha muito longa). Depois, você pode usar uma das classes específicas disponíveis para armazenamento de blob, de armazenamento da tabela, ou armazenamento de filas.


Aqui está um exemplo de armazenamento blob em ação. Primeiro, eu crio um recipiente (pense nisso como um disco rígido virtual). Então, eu envio um arquivo do meu disco rígido para armazenamento blob:


/ ** Microsoft_WindowsAzure_Storage_Blob * /
require_once 'Microsoft / windowsazure / Armazenamento / Blob.php' ;
$ StorageClient = nova Microsoft_WindowsAzure_Storage_Blob ();
$ StorageClient -> createContainer ( 'testcontainer' );
/ / Upload / home / Maarten / example.txt para o Windows Azure
$ Result = $ storageClient -> putBlob ( 'testcontainer' , 'example.txt' , '/ home / Maarten / example.txt' );


Ler o blob depois é bastante 
simples:


/ ** Microsoft_WindowsAzure_Storage_Blob * /
require_once 'Microsoft / windowsazure / Armazenamento / Blob.php' ;
$ StorageClient = nova Microsoft_WindowsAzure_Storage_Blob ();
/ Arquivo / download de / home / Maarten / example.txt
$ StorageClient -> getBlob ( 'testcontainer' , 'example.txt' , '/ home / Maarten / example.txt' );


Armazenamento da tabela é um pouco mais complexa. É como um banco de dados muito escalável que não é vinculado a um esquema, e limitou as possibilidades de consulta. Para usar o armazenamento de mesa, você vai exigir algumas classes que podem ser utilizados tanto por seu aplicativo PHP e Windows Azure tabela 
de armazenamento. Aqui está um exemplo de classe que representa uma pessoa:


classe Pessoa se estende Microsoft_WindowsAzure_Storage_TableEntity
{
  / **
   * @ Name azure
   * /
  pública Nome $ ;
  / **
   * @ Idade azure Edm.Int64
   * /
  pública $ Idade ;
}


Inserindo uma instância de Pessoa na tabela é tão fácil quanto criar uma nova instância e atribuindo-lhe algumas propriedades. Depois disso, a API de armazenamento da tabela no Windows Azure SDK for PHP permite que você insira a entidade em uma tabela chamada TestTable :


/ ** Microsoft_WindowsAzure_Storage_Table * /
require_once 'Microsoft / windowsazure / Armazenamento / Table.php' ;
$ Entidade = novo Person ( 'partition1' , 'linha1' );
$ Entidade -> Name = "Maarten" ;
$ Entidade -> Idade = 25;
$storageClient = new Microsoft_WindowsAzure_Storage_Table('table.core.windows.net', 'myaccount', 'myauthkey');
$storageClient->insertEntity('testtable', $entity);


Que foi muita informação em um trecho de código! Primeiro de tudo, quais são partition1 e row1 ? Bem, esses são a chave de partição e chave de linha. A chave de partição é um agrupamento lógico de entidades. Em um aplicativo onde os usuários podem contribuir posts do blog, por exemplo, um bom candidato para a chave de partição seria o nome do usuário-o que permitiria a fácil consulta para todos os dados relacionados a um determinado usuário. A linha 
chave é o identificador exclusivo para a linha.


Filas seguem a mesma idéia, existe uma API que permite que você colocar, obter, e excluir as mensagens da fila no Windows Azure. Filas também são garantidos para ser processados: quando uma mensagem é lida da fila, os dados são invisíveis por um tempo específico. Se, após esse tempo, a mensagem não foi explicitamente removida, por exemplo, porque um script em lotes caiu, a mensagem vai voltar a aparecer e estar disponível para o processamento de novo.


O Windows Azure SDK for PHP também tem alguns recursos extras que são específicos para ambos os PHP e Windows Azure. Isso inclui recursos como um provedor de armazenamento de sessão que permite que você compartilhe os dados da sessão web sobre instâncias de função múltipla web. Outra característica é um fluxo 
wrapper que permite usar as funções de arquivo padrão como fopen no armazenamento blob.


Um exemplo de aplicação, ImageCloud, que usa todos os recursos descritos acima, é disponível para download no meu blog.


SQL Server Driver for PHP


O driver do SQL Server para PHP permite que os desenvolvedores PHP para acessar bancos de dados SQL Server que estão hospedados no SQL Server ou SQL Azure. O driver do SQL Server para PHP depende do Microsoft SQL Server driver ODBC para lidar com baixo nível de comunicação com o SQL Server. Como resultado, o driver do SQL Server para PHP é suportado apenas no Windows e Windows Azure. Ele pode ser baixado e instalado como uma extensão do PHP.


Quando você baixar esse driver, certifique-se de baixar a versão 2.0. Esta versão tem o benefício adicional que fornece suporte PDO (PHP Data Objects), que permite alternar rapidamente entre, por exemplo, MySQL e SQL Server.


Agora, vamos imaginar que você tem um banco de dados SQL Azure. O código a seguir mostra como você pode conectar-se ao blogue do banco de dados no seu servidor de banco de dados SQL Azure e recuperar os posts ordenados por data de publicação:


// Connect to SQL Azure using PDO
$connection = new PDO('bvoj6aovnk.database.windows.net', 'sqladm@bvoj6aovnk', 'mypassword', array('Database' => 'blog'));
// Fetch specific post
$posts = array();
$query = 'SELECT * FROM posts ORDER BY PubDate DESC';
$statement = $connection->query($query);
while ( $row = $statement->fetchObject('Post') ) {
  $posts[] = $row;
}


AppFabric SDK for PHP


Como mencionei antes, o Windows Azure Platform AppFabric (para não ser confundido com o Windows Server AppFabric) permite-lhe delegar autenticação e autorização, e dar um soco firewalls e conectar aplicações através de diferentes redes protegidas com 
facilidade. Você pode baixá-lo http://dotnetservicesphp.codeplex.com .


Em termos de autenticação e autorização, é importante saber um pouco sobre baseada em declarações de autenticação e federação, um tema sobre o qual alguns recursos interessantes estão disponíveis. Basicamente, o aplicativo 
estabelece uma relação de confiança com uma autoridade de autenticação (como o Windows Azure Platform AppFabric), o que significa que sua aplicação confia usuários que são autenticados com essa autoridade. Em seguida, o aplicativo irá perguntar aos seus usuários para reivindicar seus direitos. Por 
exemplo, a minha candidatura poderia perguntar ao usuário a alegação de que eles podem criar ordens:


$requiredClaims = array('CreateOrder' => true);
if (ValidateClaimUtil::ValidateClaims($requiredClaims, "phpservice", 'http://localhost/SalesDashboard/', $signingKey))
{
  // User is allowed to create an order!
}
else
{
  // User is not authorized.
}


O Windows Azure Platform AppFabric Serviço de Controle de Acesso irá validar que o usuário tenha essa afirmação, e assinar um token de segurança com essa informação. Desde sua aplicação confia essa autoridade, ele vai continuar ou não com base em se ou não o pedido é válido.


Agora magine ter dois aplicativos que não podem se conectar uns aos outros por causa do firewall políticas relacionadas. Se ambas as aplicações pode estabelecer uma conexão de saída para o serviço de ônibus, o ônibus serviço de comunicação relé entre as duas aplicações. É tão fácil quanto 
que e extremamente útil se você tiver um departamento de TI resistente!


Os benefícios do Windows Azure Service Platform AppFabric 
Bus


Mostrando-lhe o código de exemplo de como isso funciona nos levaria longe demais (uma vez que envolvem alguma configuração e configurar tarefas). Mas se você acha que isso soa como um grande recurso, verifique o AppFabric para PHP website , que contém diversos tutoriais sobre este 
assunto.


Outras Características


Além disso, todos os recursos e APIs que já investigados, há uma série de outros recursos e produtos que valem a pena olhar. Esses recursos não são sempre o Windows Azure-específicos, como o módulo de reescrita de URL para IIS7, mas sua aplicação pode se beneficiar muito de todos eles o mesmo.


Contribuições PHP Azure


A plataforma Windows Azure oferece alguns recursos úteis, como a leitura de arquivos de configuração (que pode ser modificado, mesmo após a implantação tem sido feito), ou entrar no ambiente do Windows Azure e acessar o armazenamento local em uma máquina virtual para armazenar arquivos temporariamente. Infelizmente, esses recursos são cozidos para o Windows Azure nuvem Guest OS, e não estão disponíveis como serviços REST.


Felizmente no entanto, essas características são expostos como uma biblioteca de vínculo dinâmico C, o que significa que escrever uma extensão do PHP para fazer a interface com eles é um passo lógico. E isso é exatamente o que o PHP Azure biblioteca fornece Contribuições: uma extensão do PHP para fazer uso de dados de configuração, registro e armazenamento local. Imagine ter um valor de configuração chamado Emailsubject na sua ServiceConfiguration.csdef arquivo. Lendo este valor é muito fácil usar o PHP Azure extensão Contribuições:


$$emailSubject = azure_getconfig("EmailSubject");
Nós também podemos gravar dados no log do Windows Azure diagnóstico. 
Aqui está um exemplo em que eu estou escrevendo uma mensagem informativa no 
log de ​​diagnóstico:


azure_log("This is some useful information!", "Information");
O projeto PHP Azure Contribuições está disponível no CodePlex em http://phpazurecontrib.codeplex.com .


URL Rewriting


Como um desenvolvedor PHP, você já pode usar a reescrita de URL. No Apache . htaccess arquivos, é muito fácil de permitir que o motor de reescrita, e que reescrever URLs de entrada para scripts real. Por exemplo, o URL http://www.example.com/products/books pode ser mapeada para http://www.example.com/index.php?page=products&category=books em seu servidor. Esta técnica também está disponível no IIS7, o servidor web da Microsoft que também é usada em papéis web Windows Azure. O URL acima reescrever exemplo pode ser definido no Web.config arquivo na raiz do seu aplicativo Windows Azure:


<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="RewriteProductsUrl" enabled="true" stopProcessing="true">
          <match url="^products/([^/]+)/?$" />
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="index.php?page=products&category={R:1}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>


Observe também que, porque o aplicativo está hospedado em um servidor web IIS no Windows Azure, você pode usar qualquer HttpModule para o IIS, assim como você faria para uma aplicação tradicionalmente hospedado. Isto torna mais fácil para ativar a compactação de saída, a alavancagem de autenticação do IIS e as características de autorização, e muito mais. Baixar o IIS módulo URL Rewrite 
do http://www.iis.net/download/urlrewrite .


Extensão WinCache


Como você deve saber, os arquivos PHP são interpretadas em bytecode e executado a partir desse bytecode em cada pedido. Este processo é bastante rápido, mas de alto tráfego de websites, é recomendado que o cache do bytecode e pular interpretação script. Esta técnica aumenta o desempenho de um site sem a necessidade de recursos adicionais.


No Linux, os módulos de acelerador que utilizam estas técnicas, como a APC e IonCube, são muito comuns. Estes também funcionam em Windows e poderia também funcionar no Windows Azure. No entanto, a Microsoft também lançou o seu próprio módulo que se aplica esta técnica: o WinCache 
extensão para PHP. Esta extensão é o mais rápido no acelerador PHP no Windows, e também oferece recursos como armazenamento de dados de sessão nesta camada cache. A extensão Wincache para PHP pode ser baixado do http://www.iis.net/download/wincacheforphp .


CDN - Content Delivery Network


Quando utilizar o Windows Azure armazenamento blob, você verá que um full-featured de rede de distribuição de conteúdo (CDN) também está disponível. A CDN garante que, por exemplo, quando um usuário faz o download de uma imagem, essa imagem vai ser recuperados de um servidor de armazenamento que está perto de cliente do usuário. Isso garante que a velocidade de download e latência são ótimos, eo usuário recebe a imagem muito rapidamente.


Com o armazenamento blob, permitindo que o CDN é tão fácil como clicar em um botão. Depois disso, seus recipientes públicos são replicados para o CDN, o que permite que os usuários do seu site para recuperar arquivos e recursos o mais rapidamente possível!


Usando o Windows Azure CDN


Mapeamento de Nomes de Domínio


Com o Windows Azure, seu aplicativo será atribuído um nome de domínio sob o domínio, por exemplo cloudapp.net, myphpapp.cloudapp.net . Eu acho que você vai concordar que esta não é a maior URL. Fica ainda pior quando você está usando armazenamento blob 
para hospedagem de arquivos: myphpappstorage.blob.core.windows.net
é, bem, simplesmente feio!


Felizmente, todos os URLs no Windows Azure pode ser mapeado um nome de domínio personalizado. Assim, para mapear www.myphpapp.com para myphpapp.cloudapp.net , você só precisa adicionar um registro CNAME para o seu servidor de nomes. O mesmo se aplica ao armazenamento blob: storage.myphpapp.com pode ser mapeado para o muito tempo myphpappstorage.blob.core.windows.net através da adição de um registro CNAME para o seu servidor DNS.


Verifique Azure membro da equipe de pós Steve Marx sobre nomes de domínio personalizado para saber mais sobre isso.


Conclusão


Neste artigo, temos tido um instantâneo da plataforma Windows Azure a partir de uma perspectiva de PHP. Enquanto eu estou um pouco distorcido por ter contribuído para o Windows Azure SDK for PHP, eu acho que a plataforma Windows Azure é uma ótima opção para hospedagem de aplicações PHP em um ambiente de nuvem altamente escalável. Eu também sinto que há valor ótimo ser encontrado em recursos como o Windows Azure Service Bus AppFabric. A linha inferior é: Eu acredito que a Microsoft está fazendo o seu melhor na tomada de PHP um cidadão de primeira classe em sua plataforma cloud.


Outro grande recurso relacionado com PHP e Windows Azure é http://www.interoperabilitybridges.com , o site que lista todos os projetos PHP e open-source da Microsoft.


Nota: Microsoft: A Business Partner SitePoint 
. Este artigo tem sido possível com o apoio da Microsoft 
Nós trabalhamos de perto com a Microsoft para ajudar a desenvolver o conteúdo que é mais 
útil e relevante para você, nossos leitores.

Nenhum comentário :

Postar um comentário

Total de visualizações de página