2011-01-25 7 views
2

Je développe une application Azure à l'aide de files d'attente, du stockage BLOB et de SQL Azure. Nous anticipons que certains clients ne souhaitent pas que leurs données soient hébergées dans le cloud (pour des raisons de paranoïa ou de limitations légales sur la juridiction dans laquelle les données peuvent être stockées) et voudront exécuter le système sur un serveur situé dans leurs propres données centres, sur un seul serveur. L'utilisation de SQL Server et la création d'une alternative au stockage BLOB doivent être faciles, mais les files d'attente Azure sont plus complexes. Je suppose que l'utilisation de la structure de développement est indésirable, car la documentation MS indique qu'elle doit fonctionner en tant qu'administrateur.Comment déployer une application Azure en production sans Azure

Comment dois-je procéder?

Répondre

8

Je voudrais ajouter une couche d'abstraction sur les AzureQueues.

Quelque chose comme:

public interface IQueueService 
{ 
    // will create if not exists 
    IQueue GetQueue(string name); 
    IQueue GetQueueIfExists(string name); 
} 


public interface IQueue 
{ 
    string Name { get; set; } 

    void AddMessage(SimpleMessage message); 
    void DeleteMessage(SimpleMessage message); 
    SimpleMessage PeekMessage(); 

    void Clear(); 
} 

etc ...

Cela devrait vous donner une idée. Vous pouvez ensuite fournir deux implémentations, qui utilise AzureQueues et un autre qui utilise MS Queues (http://en.wikipedia.org/wiki/Microsoft_Message_Queuing)

Vous choisissez la mise en œuvre selon que vous utilisez sur Azure ou ne pas.

J'ai fait quelque chose de très similaire par le passé.

+2

Santiago a la bonne approche. Si vous devez être en mesure de porter la même base de code entre les environnements, vous devez éliminer les dépendances nécessaires. Cela vous permet de remplacer facilement ces couches par de nouvelles qui offrent le même comportement même si la mécanique sous-jacente de la façon dont ce comportement est fourni diffère de façon significative. Grâce à l'application appropriée des processus stockés, vous devriez pouvoir imiter le comportement de la file d'attente Azure Storage dans SQL Server. – BrentDaCodeMonkey

+0

Je ferai probablement quelque chose comme ça, bien que je pense que je vais résumer le comportement à un niveau supérieur pour éviter de trop reproduire la complexité des files d'attente Azure. –

1

Vous n'avez pas besoin de s'exécuter sur la structure du développeur pour accéder aux ressources azurées. Les blobs sont très faciles d'accès via le web, je suis à peu près certain que vous pouvez le faire avec des tables et des files d'attente ainsi que les URL "http: //'accountname'.queue.core.windows.net/" disponibles publiquement. Pour une solution intéressante, jetez un coup d'œil au bus de service Azure AppFabric, qui vous permet essentiellement de connecter ou de «projeter» des points de terminaison de service Web d'application sur site dans le cloud. Il s'agit essentiellement d'un service de relais. (Cela ressemble à de la magie, mais c'est en fait assez simple). Vous pouvez utiliser le même bus de service pour attribuer aux points de terminaison Url publics Azure Worker Role services.

http://msdn.microsoft.com/en-us/library/ee732537.aspx

http://www.microsoft.com/windowsazure/appfabric/overview/default.aspx

+0

C'est une bonne idée, mais je ne le ferai probablement pas parce que les mêmes utilisateurs qui ne se sentiraient pas à l'aise avec leurs données résidant dans le nuage ne seraient probablement pas à l'aise avec leurs files d'attente. –

Questions connexes