[SQL Azure] Migrer ses données On-Premises vers SQL Azure

Aujourd’hui, on tente de migrer des données d’une base SQL On-Premises. j’utilise l’outil SQL Server Import and Export Data provenant de SQL Server 2008 R2 November CTP. Pour cela je m’appuie sur la base de démo AdventureNetworks. Je vais tenter d’exporter la table Customer uniquement.

J’ai au préalable créé une table nommée “Azure” avec un utilisateur ayant le rôle db_owner.

Lancez l’outil SQL Server Import and Export Data : Menu Démarrer > Microsoft SQL Server 2008 R2 November CTP > Import and Export Data

image

Appuyez sur Next.

image

Ici on va sélectionner la base de données SOURCE, donc AdventureWorksLT2008R2 :

image

Le serveur destination doit utiliser .Net Framework Data Provider for SqlServer. Il faut renseigner quelques champs

Data Source : l’adresse de votre serveur SQL Azure du type <servername>.database.windows.net
Encrypt : True
Initial Catalog: la base de données qui recevra les données à exporter
Password: le mot de passe de l’utilisateur ayant les droits sur la base
User ID: le login de l’utilisateur ayant les droits sur la base.

ATTENTION : pour certaines raisons que j’ignore encore, la connexion peut être rejetée avec l’erreur suivante :

image

Si c’est votre cas, modifiez le User ID par : <login>@<servername>

On valide.

image

Je choisis de n’exporter que la table Customer :

image

J’ai quelques Warning qui s’affichent mais rien de bien inquiétant…

image 

image 

Voici un récapitulatif de l’exportation qui va être effectuée, en source j’ai bien mon instance SQL en local et en destination je pointe vers une instance SQL Azure :

image

Je me lance…. Et bien NON! Une erreur est survenue

image

A priori, SQL Azure ne supporte que des table ayant un Clustered Index!

image

Bon on n’abandonne pas si proche de la réussite. La table a bien été créée (vérifiez dans le SQL Management Studio), je décide de la supprimer pour repartir de zéro. Ensuite au niveau du wizard, on retourne à la page Select Source Tables and Views, cliquez sur Edit Mappings…

image

On va modifier le script SQL généré pour la création de la table, cliquez sur Edit SQL :

image

Et là, excusez moi, mais on va faire un truc pas très catholique, on va créer un index sur la table à la suite du script de création de la table :

image

Validez et relancez le processus :

 image

Mes 847 lignes ont bien été transférées, la preuve :

image

Ronny
Member of WygTeam
www.wygwam.com

[Billing Azure] Connaitre sa consommation Azure

2 jours d’utilisation d’Azure et déjà je voudrais connaitre ma consommation. Normal! Avec l’offre Introductory Special, j’ai droit à 25h VM / mois. Ce matin en me levant, je réalise, boulet que je suis, que j’ai oublié de supprimer mon application. Résultat Windows Azure m’a provisionné une VM pendant tout ce temps.

Alors où peut on voir sa consommation???

1 - Il faut se rendre sur https://mocp.microsoftonline.com

2 – Se logger avec son Live ID

image

3 – Cliquez sur View My Bills

image

4 – Une nouvelle fenêtre apparaît, cliquez sur View Online Bill/Invoice

image

5 – le détail de votre facture apparaît (ouf tout est à 0€), cliquez sur Utilisation quotidienne

image

Et le détail de la consommation apparaît.

image 

J’ai donc cramé 14h d’utilisation VM entre hier soir et ce matin! ouch!

Ronny
Member of WygTeam
www.wygwam.com

[Divers] Astuce pour la capture d’écran

Petites astuces pour tous les bloggeurs. Il y a différents moyens de faire des captures d’écran

1 - ALT+ Impr écran vous envoie une capture de tout votre écran dans le presse papier

Petite rectification, Shift+Impr écran capture tout votre écran, ALT+Impr écran capture uniquement la fenêtre active

2 – L’outil Capture d’écran de Windows Seven qui vous permet de capturer des zones spécifiques d’écran

3 – Si vous avez Office 2010 et One Note d’installé, appuyez sur les touches Windows + s, un curseur apparaît et vous permet de rapidement capturer une zone d’écran à destination d’une fiche one note ou du presse papier.

Ronny
Member of WygTeam
www.wygwam.com

[Azure] Mise à jour des Windows Azure Tools et arrivée de Windows Azure Drive

En coïncidence avec les débuts commerciaux de Windows Azure, l’équipe Windows Azure annonce la sortie d’une mise à jour du SDK. Attention toutefois, elle n’est pas compatible avec Visual Studio 2010 Beta 2, pour VS 2008 et VS2010 RC, c’est ok.

Elle corrige quelques bugs et surtout elle apporte une feature très attendue : le Windows Azure Drive qui permet de monter un Page blob en tant que disque dur virtuel au sein d’une instance VM!

Pour le moment Microsoft assure que la facturation ne serait liée qu’à l’utilisation classique des blobs (stockage et requêtes). De ce fait, le Windows Azure Drive propose un mécanisme de cache (en s’appuyant sur le local storage de la VM) afin de limiter les accès Blob et donc réduire les coûts. Plus d’information sur le blog de la team Windows Azure.

La mise à jour du SDK

Le livre blanc de Windows Azure Drive

Ronny
Member of WygTeam
www.wygwam.com

[Billing Azure] Petites précisions sur l’offre Introductory Special

Comme indiqué dans mon billet précédent, cette offre est “gratuite”.

Les caractéristiques de cette offre sont les suivantes :

Included each month at no charge:

  • Windows Azure
    • 25 hours of a small compute instance
    • 500 MB of storage
    • 10,000 storage transactions
  • SQL Azure
    • 1 Web Edition database (available for first 3 months only)
  • AppFabric
    • 100,000 Access Control transactions
    • 2 Service Bus connections
  • Data Transfers (per region)
    • 500 MB in
    • 500 MB out

 

Cependant, si l’utilisation excède ces limites, vous basculerez immédiatement dans le mode “Pay As You Go” dont la grille tarifaire est la suivante :

Standard Rates:

Windows Azure

  • Compute
    • Small instance (default): $0.12 per hour
    • Medium instance: $0.24 per hour
    • Large instance: $0.48 per hour
    • Extra large instance: $0.96 per hour
  • Storage
    • $0.15 per GB stored per month
    • $0.01 per 10,000 storage transactions
  • Content Delivery Network (CDN)
    • Service currently available as a Community Technology Preview (CTP) at no charge

SQL Azure

  • Web Edition – Up to 1 GB relational database
    • $9.99 per database per month
  • Business Edition – Up to 10 GB relational database
    • $99.99 per database per month

AppFabric

  • Access Control
    • $1.99 per 100,000 transactions*
  • Service Bus
    • $3.99 per connection on a “pay-as-you-go” basis*
    • Pack of 5 connections $9.95*
    • Pack of 25 connections $49.75*
    • Pack of 100 connections $199.00*
    • Pack of 500 connections $995.00*

Data Transfers

  • North America and Europe regions
    • $0.10 per GB in
    • $0.15 per GB out
  • Asia Pacific Region
    • $0.30 per GB in
    • $0.45 per GB out
  • Inbound data transfers during off-peak times through June 30, 2010 are at no charge.  Prices revert to our normal inbound data transfer rates after June 30, 2010.

Je vous invite également à lire l’article de Sébastien Warin qui détaille les types d’instances sur Windows Azure. Après ça, il faut savoir que tant qu’une application est hostée dans une VM, elle vous sera facturée même si elle est en mode Suspended! pensez bien à supprimer votre application sous peine de voir votre quota diminuer inlassablement.

Enfin un conseil : Dépêchez vous de profiter de cette offre car elle ne sera valable que jusqu’à fin juillet 2010!

Ronny
Member of WygTeam
www.wygwam.com

[Azure] Premier pas dans la migration CTP –> Release

Après quelques mois d’absence me revoilà pour parler d’Azure, l’occasion pour moi de découvrir toutes les nouveautés et changements depuis la CTP et aussi de lire les nombreux mails…

Depuis quelques semaines, Microsoft envoie de réguliers rappels à tous ceux qui disposent d’un compte Azure CTP et qui n’ont à ce jour pas effectué la migration (Ok la dead line était pour le 31 janvier 2010) quoi qu’il en soit, je me décide à m’offrir un compte.

1.  Souscription à une offre

Il faut se rendre à cette page http://www.microsoft.com/windowsazure/offers/

A ma grande surprise Microsoft propose une offre “gratuite” nommée Introductory Special

Ci-dessous la grille tarifaire de l’offre Azure :

image

Microsoft propose donc globalement 2 types d’offres : des forfaits où des limites de consommation sont imposées et le forfait “Pay As You Go” où vous paierez à la consommation suivant les bases tarifaires mentionnées dans le tableau.

Je me lance donc et je souscris à l’offre Introductory Special qui va me permettre de dérouler tranquillement les nouveaux training kit d’Azure (oui ceux de Novembre 2009…)

Après avoir rentré mes informations (adresse, téléphone), voici le récapitulatif de ma commande :

image

2. Le paiement

Et oui, pendant la prochaine étape il va quand même vous falloir sortir votre chère carte bancaire

image

image

image

Récapitulatif de la commande

image

image

Vous pouvez identifier chacun des abonnements auxquels vous avez souscrit :

image

image

Résumé de la commande :

image

et finalement la confirmation

image

3. Validation de l’abonnement

Dans les 24 heures qui suivent vous recevrez un mail suite à votre commande

image

Il faut vous rendre sur la page du Portail Clients Microsoft Online Services et valider votre abonnement.

image

L’abonnement se retrouve alors dans l’état “Validation en cours”, il ne reste plus qu’à attendre.

image

Enjoy Azure!

Ronny

Member of WygTeam
www.wygwam.com

[Azure] Is your site up and running?

Est-ce que votre site fonctionne? c’est ce que propose cette application azure, il suffit de vous inscrire et l’appli se charge de vérifier toutes les 15 minutes si votre site est en bon état de marche, en cas de panne, vous serez prévenu via Twitter

image

Par ici pour l’application : http://isup.cloudapp.net

[Azure] Windows Azure World Tour 2009

David Chappell est un célèbre conférencier pour de grands comptes, il animera, à l’occasion du Windows Azure World Tour 2009, une session autour de la plateforme azure :

“In this session aimed at decision makers, David Chappell looks at the Windows Azure platform and what it means for ISVs, custom software development firms and enterprises. The topics he’ll cover include:

-An overview of the Windows Azure platform: Technology and business model

-The cloud platform context: Google, Amazon, Salesforce.com, and more

-Using the Windows Azure platform: Application scenarios
The goal is to provide a foundation for thinking about the Windows Azure platform, then offer guidance on how to make good decisions for using it. Register for you local event to secure your spot today.”

Source : http://hub.digitalwpc.com/Azure/Item/Azure-Tools/NorthAmericaAzure/Windows-Azure-WW-Event-An-Exclusive-Cloud-Perspective-for-ISVs

Pourquoi je vous en parle? et bien la session française se tiendrait à Paris le 9 octobre 2009.

[Azure] support de TFS d’ici la PDC?

Verra-t-on le support de projets Azure dans Team Foundation System dans les prochains mois? C’est ce qu’à laisser penser l’un des membres de la Windows Azure Team lors d’une chatroom organisée il y a quelques heures. Il est vrai que ça serait un outil indispensable pour pouvoir inclure des projets Azure dans l’intégration continue (déroulement des tests + déploiement automatique sur la plateforme azure).

Il serait aussi prévu des commandes type powershell pour pouvoir déployer voire manipuler ses instances on the cloud (Staging <—> Production)..

Steve Smarx a aussi annoncé la gratuité d’Azure pour certains types de programme comme Bizspark (espérons MSDN, MSDNAA pour les étudiants et bien d’autres encore…)

Autre news, il semblerait que l’équipe soit en train de mettre en place des Patterns and Practices pour Azure.

Des informations à prendre avec des pincettes

[Azure] Rendez-vous avec Steve Smarx and co

Steve Marx via tweeter a annoncé une chatroom sur le thème d’azure vendredi soir aux environ de 20h (heure française) . Rendez vous à l’adresse suivante : http://wazl.cloudapp.net/. Si vous avez des questions c’est le bon moment!

[Azure] Pay as you consume

Microsoft a enfin annoncé le pricing model d’Azure. Reste à savoir si celui-ci fera des adeptes. Vous pouvez retrouver les infos là :

Mes craintes me concernant sont de savoir si Microsoft prévoit de faire un geste pour les développeurs lambda voire les communautés Open-Source créée autour d’Azure. En tout cas on peut lire sur leur site :

As part of the Microsoft Partner Network, partners receive an additional 5 percent promotional discount on Windows Azure compute, SQL Azure and .NET Services. As an added benefit of MSDN Premium, Microsoft also announced that it will provide subscribers with resources to develop and test their cloud-based applications. Microsoft will also provide the development accelerator promotional offer for partners and customers who want to quickly develop and deploy applications with dynamic scaling, predictable pricing, and a deep discount.

Des réductions dans tous les sens woohoo “Deep Discount”… La gratuité serait utopique, mais Google propose pourtant un seuil en-dessous duquel la gratuité est de mise :http://code.google.com/intl/fr/appengine/

Pour comparaison :

  Microsoft Azure Google App Engine Amazon EC2
CPU Time $0.12 / hour $0.10 / hour $0.125 / hour (Window Usage/Europe pricing)
Storage $0.15 / GB / month $0.15 / GB / month $0.10 / GB / month
Storage Transaction $0.01 / 10’000 requêtes ?? $0.001 / 10’000 requêtes
Bandwith “In” $0.10 / GB $0.10 / GB $0.10 / GB
Bandwith “out” $0.15 / GB $0.12 / GB $0.17 / GB (dégressif au bout de 40TB)

Ces valeurs et comparaisons n’engagent que moi.

[Azure & Androïd] Resto55 – Surveiller la baisse de la TVA dans la restauration

  logo_transparent

Une loi va être appliquée le 1er Juillet 2009 visant à réduire la TVA de 19,6 à 5,5% dans le secteur de la restauration. Cette baisse concernera 7 produits parmi une liste de 10 produits (café? plat du jour?). C’est pendant les Azure Camps qu’une application – Resto55 – a été développée. Elle a pour principal objectif de montrer quel restaurant joue le jeu de la baisse ou pas. Resto55 est hébergée sur Azure et se résume ainsi :

 

  • Rechercher des restaurantsresto55-3
  • Ajouter un nouveau restaurant
  • Renseigner le prix actuel d’un ou plusieurs éléments de votre commande (garder vos tickets de caisse!)
  • Suivre la courbe d’évolution du prix d’un élément

Pour cela, Resto55 se dote d’un site web http://www.resto55.org mais également d’une API en REST pour pouvoir interagir avec Resto55.

Possesseurs d’Androïd?

Une application a été développée pour vous! Cette application communique avec Azure à l’aide d’un webservice et bénéficie des principales fonctionnalités de Resto55, vous pouvez la retrouver à http://www.resto55.org/Developper.aspx. (On cherche des développeurs iPhone et Windows Mobile et tout autre plateforme mobile!)

En attendant que d’autres applications voient le jour, vous pouvez surfer sur la version mobile de Resto55 à http://azurecamp.cloudapp.net.

Parlez-en autour de vous, on compte sur vous pour agrandir la base de données!

Si vous êtes intéressés par développer de telles applications, venez nous rejoindre lors des Azure Camps, plus d’infos sur http://www.zecloud.fr

L’application livre ses sources sur Codeplex sous licence MS-PL! http://zecloud.codeplex.com/

 

zecloud-mini

[Azure] Astuce : accélérer le lancement d’application en local

Mais alors une toute petite, petite astuce. Si vous utilisez Azure Storage en spécifiant votre compte “on the cloud” alors vous n’avez pas besoin de le simuler en local. Vous pouvez alors désactiver le Development Storage en allant dans les propriétés du projet Cloud, dans l’onglet Development, attribuer au champ Start Development Storage Services à False :

image

[Azure] Patterns pour le cloud computing de Microsoft

Posté le jeudi 21 mai 2009 18:26 par ronnyk :: 0 commentaire(s)
Classé sous

Je viens de tomber sur l’excellent blog de David Pallman et notamment sur un site qu’il héberge dans Windows Azure. David Pallman propose quelques patterns de conception avec des schémas bien sympas. Fini donc les schémas à la main :)

Le site en question : http://azuredesignpatterns.cloudapp.net/Default.aspx

 

Cloud Hosting Patterns

     

web role

Web Role

Azure Web Role – .NET/ASP.NET

web service role

Web Service Role

Azure Web Role – .NET/WCF

worker role

Worker Role

Azure Worker Role – .NET

workflow role

Workflow Role

.NET Services Workflow Service – .NET/WF

Cloud Data Patterns

     

cloud blob storage

Cloud Blob Storage

Windows Azure Storage Project - Blob Storage

cloud queue storage

Cloud Queue Storage

Windows Azure Storage Project – Queue Storage

cloud table storage

Cloud Table Storage

Windows Azure Storage Project – Table Storage

cloud database

Cloud Database

SQL Services – SQL Data Services Database

Cloud Communication & Sync Patterns

     

load balancer

Load Balancer

Windows Azure Hosting Project – Web Roles

service bus

Service Bus

.NET Services – Service Bus

live mesh desktop

Live Mesh Desktop

Live Services – Live Mesh Desktop / Live Framework

live mesh feeds

Live Mesh Feed

Live services – Live Mesh Feeds / Live Framework

Cloud Security Patterns

     

authentication service

Authentication Service

Live Service – Windows Live ID

access control service

Access Control Service

.NET Services – Access Control Service
   

[Windows Azure] Exploiter le fichier de configuration Azure

Lors du déploiement d’une application Azure, il faut publier l’application packagée mais aussi joindre le fichier de configuration de votre application (ServiceConfiguration.cscfg). La configuration est faite en 2 étapes :

  • Définir la configuration dans un fichier ServiceDefinition.csdef : Une fois l’application packagée, la définition reste fixe.
  • Attribuer les clés/valeurs dans le fichier de configuration ServiceConfiguration.cscfg : même après déploiement de l’application, il est possible de modifier la configuration du service et d’uploader la nouvelle configuration.

Généralement, dans ces fichiers on y met les informations classiques telles que l’adresse des différents Endpoints de l’Azure Storage, les identifiants relatifs au compte utilisé, etc. : (ServiceDefinition.csdef)

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="RSSAggregator" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
  <WebRole name="WebRole">
    <ConfigurationSettings>
      <Setting name="TableStorageEndpoint" />
      <Setting name="BlobStorageEndpoint" />
      <Setting name="QueueStorageEndpoint"/>
      <Setting name="AccountName" />
      <Setting name="AccountSharedKey" />
    </ConfigurationSettings>
    <InputEndpoints>
      <!-- Must use port 80 for http and port 443 for https when running in the cloud -->
      <InputEndpoint name="HttpIn" protocol="http" port="80" />
    </InputEndpoints>
  </WebRole>
  <WorkerRole name="WorkerRole">
    <ConfigurationSettings>
      <Setting name="TableStorageEndpoint" />
      <Setting name="BlobStorageEndpoint" />
      <Setting name="QueueStorageEndpoint"/>
      <Setting name="AccountName" />
      <Setting name="AccountSharedKey" />
    </ConfigurationSettings>
  </WorkerRole>
</ServiceDefinition>

plutôt classique : (ServiceConfiguration.cscfg)

<?xml version="1.0"?>
<ServiceConfiguration serviceName="RSSAggregator" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration">
  <Role name="WebRole">
    <Instances count="1"/>
      <ConfigurationSettings>
        <Setting name="TableStorageEndpoint" value="http://javazure.table.core.windows.net" />
        <Setting name="BlobStorageEndpoint"  value="http://javazure.blob.core.windows.net"/>
        <Setting name="QueueStorageEndpoint" value="http://javazure.queue.core.windows.net"/>
        <Setting name="AccountName" value="unnomdecompte" />
        <Setting name="AccountSharedKey" value="unesharedkey" />
      </ConfigurationSettings>
  </Role>
  <Role name="WorkerRole">
    <Instances count="1"/>
    <ConfigurationSettings>
      <Setting name="TableStorageEndpoint" value="http://unnomdecompte.table.core.windows.net" />
      <Setting name="BlobStorageEndpoint"  value="http://unnomdecompte.blob.core.windows.net"/>
      <Setting name="QueueStorageEndpoint" value="http://unnomdecompte.queue.core.windows.net"/>
      <Setting name="AccountName" value="unnomdecompte" />
      <Setting name="AccountSharedKey" value="unesharedkey" />
    </ConfigurationSettings>
  </Role>
</ServiceConfiguration>

Imaginons par exemple que vous ayez, par soucis d’économie des ressources (et donc du portefeuille, oui oui Azure va devenir payant), un WorkerRole qui s’endort après un bouclage, pendant 30 mns. Pour diverses raison, vous avez besoin de plus de fréquence de traitement et un sommeil d’une durée de 15mns max s’impose (travailler plus, gagner…). La solution est de définir dans la configuration un temps de sommeil TimeToSleep: (ServiceDefinition.csdef)

<WorkerRole name="WorkerRole">
  <ConfigurationSettings>
    <Setting name="TableStorageEndpoint" />
    <Setting name="BlobStorageEndpoint" />
    <Setting name="QueueStorageEndpoint"/>
    <Setting name="AccountName" />
    <Setting name="AccountSharedKey" />
    <Setting name="TimeToSleep"/>
  </ConfigurationSettings>
</WorkerRole>

Puis d’y affecter une valeur dans le fichier de configuration ServiceConfiguration.cscfg

<Role name="WorkerRole">
  <Instances count="1"/>
  <ConfigurationSettings>
    <Setting name="TableStorageEndpoint" value="http://unnomdecompte.table.core.windows.net" />
    <Setting name="BlobStorageEndpoint"  value="http://unnomdecompte.blob.core.windows.net"/>
    <Setting name="QueueStorageEndpoint" value="http://unnomdecompte.queue.core.windows.net"/>
    <Setting name="AccountName" value="unnomdecompte" />
    <Setting name="AccountSharedKey" value="unesharedkey" />
    <Setting name="TimeToSleep" value="30"/>
  </ConfigurationSettings>
</Role>

Il ne restera plus qu’à modifier la configuration soit en envoyant la nouvelle configuration, soit en la modifiant directement sur le portail Azure!

image

Pour récupérer la configuration depuis le code il faut passer par le RoleManager :

RoleManager.GetConfigurationSetting("TimeToSleep");
Exemple :
public class WorkerRole : RoleEntryPoint
    {
        private Thread t1;
        private int TimeToSleep;
        public override bool Initialize()
        {
            Int32.TryParse(RoleManager.GetConfigurationSetting("TimeToSleep"), out TimeToSleep);
            t1 = new Thread(MainThread);
            return true;
        }

        public override void Start()
        {
            t1.Start();
        }


        public void MainThread()
        {
            // This is a sample worker implementation. Replace with your logic.
            RoleManager.WriteToLog("Information", "Main Thread entry point called");
            int iteration = 0;
            while (true)
            {
                // du traitement...
                // ...
                // ...

                Thread.Sleep(TimeToSleep);
            }
        }

        public override RoleStatus GetHealthStatus()
        {
            // This is a sample worker implementation. Replace with your logic.
            return RoleStatus.Healthy;
        }
    }

[Azure Table] Bon a savoir!

En faisant mumuse avec les Azure Table et le Storage Client, je me suis heurté à pleins de petits problèmes par-ci par-là. Dans ce billet, je vais “grandement” m’inspirer de la doc MSDN pour insister sur les problèmes que j’ai rencontré (en vérité, uniquement les parties Partition Key/Row Key et Les champs se sont inspirés de la doc):

Vos entités

Partition Key et Row Key

Ces deux champs en plus du timestamp sont nécessaires. Ils peuvent être spécifiés lors de la création d’une entité (classe dérivée de  TableStorageEntity) mais ne doivent pas comporter certains caractères :

  • \
  • /
  • #
  • ?
Les champs

Les champs d’une entités peuvent être de type :

  • Binary
  • Bool
  • DateTime
  • Double
  • GUID
  • Int
  • Long
  • String

Attention cependant : Seuls les attributs publics munis de leur get et set seront pris en compte lors de l’insertion de l’entité dans une table.

Création des tables

Lorsque vous créez des tables (je m’inspire ici du labs fournit par le Azure Training Kit), votre classe héritante de TableStorageDataServiceContext contient à priori la déclaration d’'une ou des tables de votre application :

public IQueryable<Foo> FooTable
{
    get
    {
        return this.CreateQuery<Foo>("Bof");
    }
}

public IQueryable<RssLink> Urls
{
    get
    {
        return this.CreateQuery<RssLink>("Urls");
    }
}

La requête doit comporter absolument le nom de la variable, car c’est sur son nom que sera créée la table dans Azure Storage. Ici ma variable FooTable tentera de requêter sur la table “Bof” alors qu’effectivement, c’est sur la table “FooTable” qu’il faut requêter!

public IQueryable<Foo> FooTable
{
    get
    {
        return this.CreateQuery<Foo>("FooTable");
    }
}

public IQueryable<RssLink> Urls
{
    get
    {
        return this.CreateQuery<RssLink>("Urls");
    }
}

Requêter sur des tables

Des opérations Linq sont possibles mais très limitées : seuls From, Where et Take sont supportés. Petite astuce, il faut transformer IQueryable<T> en IEnumerable<T> avec la méthode suivante par exemple :
public IEnumerable<Foo> ProcessFooQuery(IQueryable<Foo> resultset)
{
    TableStorageDataServiceQuery<Foo> query = new TableStorageDataServiceQuery<Foo>(resultset as DataServiceQuery<Foo>);
    IEnumerable<Foo> queryResults = query.ExecuteAllWithRetries();
    return queryResults;
}

On pourra imaginer l’utilisation suivante :

public bool FooTableContains(Foo foo)
{
    var result = from f in FooTable
                 where f.Owner.Equals(foo.Owner) &
                 f.Title.Equals(foo.Title)
                 select f;
    return ProcessFooQuery(result).Count() > 0;
}

[Windows Azure] Isolated Storage d’Azure

Posté le lundi 6 avril 2009 20:01 par ronnyk :: 0 commentaire(s)
Classé sous

Si vous avez besoin d’écrire temporairement des fichiers depuis votre espace Windows Azure, sachez que vous pouvez utiliser un espace de stockage isolé en spécifiant le LocalStorage dans le fichier de configuration du service (ServiceDefinition.cscfg) :

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="RSSAggregator" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
  <WebRole name="WebRole">
    <ConfigurationSettings>
      ...
    </ConfigurationSettings>
    <LocalStorage name="rssrepository" sizeInMB="2"/>
    <InputEndpoints>
      <!-- Must use port 80 for http and port 443 for https when running in the cloud -->
      <InputEndpoint name="HttpIn" protocol="http" port="80" />
    </InputEndpoints>
  </WebRole>
  <WorkerRole name="WorkerRole">
  </WorkerRole>
</ServiceDefinition>

Vous pourrez alors accéder de la manière suivante :

ILocalResource myIO = RoleManager.GetLocalResource("rssrepository");
string pathToFile = Path.Combine(myIO.RootPath, "somefile.xml");
Il est alors possible d’écrire dans le fichier “somefile.xml” :
FileStream rssStream = new FileStream(pathToFile, FileMode.Create,FileAccess.ReadWrite);

Silverlight arrive sur Mac!

D’un point de vue utilisateur ok! Silverlight était déjà dispo! Mais d’un point de vue Développeur, le plugin eclipse4SL est actuellement en Technical Preview sur Mac, la version proposée supporte toutes les features de la version Windows. Annoncé au Mix 09, officialisé sur le blog de la team eclipse4sl, Silverlight prend une nouvelle dimension.

Article sur MSDN : WCF sur Azure & Interoperabilite PHP, Java

Je viens de publier un article sur MSDN qui détaille les étapes basiques pour déployer un service WCF sur Azure et l'interroger avec des applications Java et PHP en SOAP

l'article en question :

http://msdn.microsoft.com/fr-fr/dd560590.aspx

Déployer un service WCF sur Azure : Part I - SOAP

1. Création du service

Nous allons débuter par créer un projet de type Cloud Service dans Visual Studio :

· Ouvrez Visual Studio en privilège élevé (clic droit et exécuter en tant qu’administrateurclip_image006)

· Créez un nouveau projet de type Web Cloud Service :

Allez dans File àNew àProject, repérer l’onglet Cloud Service et sélectionnez Web Cloud Service. Nommez-le SimpleWCFHosting

clip_image008

Le projet Web Cloud Service est un projet qui expose un Web Role sur Windows Azure et est accessible depuis un environnement Web tandis que le Worker Cloud Service expose un Worker Role et est apparenté à un processus fonctionnant en parallèle, il permet par exemple d’effectuer des tâches de traitement. Le projet Cloud Service référence un Web et/ou un Worker Role. Il gère la configuration de l’environnement de ces services.

Vous verrez apparaitre dans l’onglet Solution Explorer 2 projets : Un Cloud Service et un Web Role. C’est dans le Web Role que nous allons exposer notre service WCF.

· Ajoutez un service WCF au Web Role :

Clic droit sur la racine du projet Web Role et Add à New Item à WCF Service. Nommez le HelloWorld.svc

clip_image010

Une fois le service créé, il faut modifier son binding en basicHttpBinding (par défaut en wsHttpBinding).

Pour cela, éditez le fichier Web.config présent dans le Web Role et repérez l’attribut binding=’’wsHttpBinding’’ dans le tag system.serviceModel

clip_image012

Remplacez cette valeur par ‘’basicHttpBinding’’.

<system.serviceModel>
    <behaviors>
        <serviceBehaviors>
            <behavior name="SimpleWCFHosting_WebRole.HelloWorldBehavior">
                <serviceMetadata httpGetEnabled="true" />
                <serviceDebug includeExceptionDetailInFaults="true" />
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <services>
        <service behaviorConfiguration="SimpleWCFHosting_WebRole.HelloWorldBehavior"
            name="SimpleWCFHosting_WebRole.HelloWorld">
            <endpoint address="" binding="basicHttpBinding" contract="SimpleWCFHosting_WebRole.IHelloWorld">
                <identity>
                    <dns value="localhost" />
                </identity>
            </endpoint>
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        </service>
    </services>
</system.serviceModel>

Nous allons maintenant modifier le service afin qu’il nous renvoie un message du type :

04/03/2009 11:38:03 : Hello Bill from Windows Azure

Editez l’interface du service IHelloWorld.cs et remplacer l’opération DoWork par celle-ci

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace SimpleWCFHosting_WebRole
{
    // NOTE: If you change the interface name "IHelloWorld" here, you must also update the reference to "IHelloWorld" in Web.config.
    [ServiceContract]
    public interface IHelloWorld
    {
        [OperationContract]
        String SayHello(String name);
    }
}

Dans l’implémentation du service HelloWorld.svc.cs, il faut implémenter l’opération SayHello :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace SimpleWCFHosting_WebRole
{
    // NOTE: If you change the class name "HelloWorld" here, you must also update the reference to "HelloWorld" in Web.config.
    public class HelloWorld : IHelloWorld
    {
        public String SayHello(String name)
        {
            return String.Format("{0} : Hello {1} from Windows Azure",DateTime.UtcNow,name);
        }
    }
}

2. Exposition du service WCF

Compilez et lancez le projet (F5), vous remarquerez que deux processus se lancent : clip_image014

Ces 2 processus simulent l’environnement de Windows Azure :

  • clip_image002 Le Development Storage simule Windows Azure Storage (Blobs, Table et Queues)
  • clip_image004 Le Development Fabric simule l’environnement d’exécution des Web et Worker Roles

Le service HelloWorld.svc est accessible à l’adresse suivante : http://127.0.0.1/HelloWorld.svc

Et la description ici : http://127.0.0.1/HelloWorld.svc?wsdl

Pour déployer sur Windows Azure, suivez ces posts de Gregory Renard :

Windows Azure Services : Creez votre premiere application On the Cloud – Part5

Remarque : L’environnement local simule toute l’expérience “On The Cloud”, si vous ne disposez pas de token d’invitation ce n’est pas grave! Préparez vous en local en attendant de le recevoir ;)

Plus de Messages Page suivante »

Les 10 derniers blogs postés

- TechDays Paris 2010 : Plan de migration vers SharePoint 2010 par Blog Technique de Romelard Fabrice le il y a 37 minutes

- TechDays Paris 2010 : La pleinière du second jour par Blog Technique de Romelard Fabrice le il y a 1 heure et 42 minutes

- Visual Studio 2010 and .NET Framework 4 Release Candidate now available par Matthieu MEZIL le il y a 4 heures et 48 minutes

- Création d’une base de donnée sous SQL Azure par Le Blog (Vert) d'Arnaud JUND le il y a 5 heures et 45 minutes

- TechDays Paris 2010 : Les Services d’applications dans SharePoint 2010 par Blog Technique de Romelard Fabrice le il y a 15 heures et 44 minutes

- TechDays Paris 2010 : La GED et SharePoint 2010 par Blog Technique de Romelard Fabrice le il y a 19 heures et 42 minutes

- TechDays Paris 2010 : SharePoint 2010 et Les réseaux sociaux par Blog Technique de Romelard Fabrice le il y a 20 heures et 56 minutes

- TechDays Paris 2010 : SharePoint 2010 – Description et nouveautés par Blog Technique de Romelard Fabrice le il y a 22 heures et 3 minutes

- TechDays Paris 2010 : Pleinière Lundi par Blog Technique de Romelard Fabrice le il y a 22 heures et 7 minutes

- [Techdays 2010] #02 - Nouveautés de SharePoint 2010 par Le petit blog de Pierre / Pierre's little blog le il y a 22 heures et 45 minutes