Este artigo foi traduzido por máquina.

Visual Studio

Utiliser plusieurs types de projets Visual Studio pour garantir le succès du nuage

Patrick Foley

Télécharger l'exemple de code

Comme vous l'avez probablement remarqué, il existe de nombreux différents types de projets dans Visual Studio ces jours-ci. Laquelle allez-vous choisir ? Tous possèdent des points forts qui aident à résoudre les problèmes dans différentes situations. Même au sein d'un problème d'entreprise unique, il existe souvent plusieurs cas d'utilisation qui peuvent être mieux résolus par les différents types de projet Visual Studio.

J'ai confronté à un exemple concret de problème récemment lors de chaque génération, l'infrastructure d'un programme basé sur le nuage qu'i entraîner a été conçu pour mettre en évidence des exemples de réussite : Microsoft Solutions défenseurs (microsoftsolutionsadvocates.com ). J'ai utilisé des différents types de projet Visual Studio pour créer ma solution, et dans cet article, je vous décrirai étape par l'intermédiaire d'un exemple simplifié de mon projet appelé “ client Success Stories ” ou CSS.

CSS comprend les trois exemples d'utilisation distinctes :

  1. Les utilisateurs anonymes de lire succès concrets sur un site Web public.
  2. Utilisateurs qui appartiennent dans le journal de programme dans un site Web privé pour créer et modifier leurs propres expériences.
  3. Les administrateurs (tels que moi) vous connecter à un site Web d'administration pour gérer et modifier toutes les données, y compris minutia tels que les tables de choix.

L'approche que je lettrée sur combinés des trois technologies Microsoft .NET Framework :

  1. ASP.NET MVC pour le site public
  2. WCF RIA services pour le site privé, de client de modification
  3. Dynamic Data ASP.NET pour le site d'administration

Un de ces technologies pourraient avez utilisé pour créer la solution entière, mais j'ai préféré bénéficier des meilleures fonctionnalités de chacun d'eux. ASP.NET MVC est une technologie idéale pour la création d'un site Web public fonctionnera partout, car il émet HTML standard, tout d'abord. Le site public a un but marketing, afin que j'allez finalement engager un concepteur pour peaufiner la présentation. Utilisation d'un concepteur ajoute la complexité, mais ASP.NET MVC a une implémentation de la vue simple qui rend facile à intégrer la vision d'un concepteur. Rendre le site en lecture seule et séparer d'autres exemples d'utilisation vous aide à isoler la portée d'implication du concepteur.

Même si ASP.NET MVC peut également être utilisé pour implémenter la fonctionnalité de modification de client, WCF RIA services est une solution encore mieux. (À l'inverse, WCF RIA Services pourrait servir à créer un site très attrayants de Web public, mais Silverlight n'est pas pris en charge sur certains périphériques, tels qu'iPhones et iPads, et je souhaitais que la plus grande portée pour le cas d'utilisation publique.) Silverlight est ici de rester, et il est parfait pour la création d'une expérience d'édition enrichie avec très peu de programmation, aussi longtemps qu'il est raisonnable d'attendre les utilisateurs à l'ou l'installer, comme ce serait le cas avec les clients à collaborer sur un site d'exemples de réussite.

ASP.NET Dynamic Data fournit un moyen pratique de créer une solution sans trop de travail administrative. Le site d'administration n'a pas besoin d'être fantaisie ;Il doit simplement offrir un moyen de gérer toutes les données dans la solution sans avoir à recourir à SQL Server Management Studio. Évolution de ma solution, le site ASP.NET Dynamic Data pourrait parfaitement être utilisé par le site des services de RIA de WCF. Néanmoins, il est utile au début d'un projet de développement orientés données tel que celui-ci, et il coûte pratiquement rien à générer.

Ciblage Azure Windows

Une fois encore, cet exemple est basé sur un problème réel, et parce que la solution requiert un site Web public, je vais cible Windows Azure et SQL Azure. Windows Server et SQL Server est peut-être plus familier, mais j'ai besoin des avantages opérationnels de l'exécution dans le nuage (pas besoin pour maintenir le système d'exploitation, installez les correctifs et ainsi de suite). J'ai à peine temps pour Générer des la solution, je certainement n'est pas ont temps à faire fonctionner des , afin que Windows Azure est un must pour moi.

Pour travailler par l'intermédiaire de cet exemple montre comment et essayez sur Azure de Windows, vous avez besoin d'un compte. Il n'y a diverses options et les packages à microsoft.com/windowsazure/offers de . MSDN abonnés et les partenaires Microsoft (y compris les démarrages BizSpark — de bizspark.com pour en savoir plus visitez le site) ont accès à plusieurs mois de libérer des ressources. De prototypage et des informations (par exemple, le travail par le biais de cet exemple), vous pouvez utiliser “ spécial d'introduction. ” Il comprend trois mois d'une base de données Go SQL Azure 1 et 25 heures d'un Azure Windows petit calcul instance, ce qui doit être suffisant pour vous familiariser avec la plate-forme. J'ai créé cet exemple montre comment, à l'aide introductive spécial sans générer d'éventuels frais supplémentaires.

‘ Vue d'ensemble du client Success Stories ’

Cet exemple est présenté sous la forme d'un didacticiel. Plusieurs aspects importants d'une implémentation réelle sont hors de portée de cet article, y compris la sécurité au niveau utilisateur, les tests, travailler avec un concepteur et évoluant au-delà d'un modèle très simplifié. Je vais tenter de résoudre dans les futurs articles ou sur mon blog à pfoley.com de .

Les étapes sont présentés à un niveau élevé et supposent familiarisé avec Visual Studio et les technologies impliquées. Code de la solution entière peut être téléchargé à partir de code.msdn.microsoft.com/mag201101VSCloud , et cliquez sur par clic des instructions pour chaque étape se trouvent à pfoley.com/mm2011jan de .

Étape 1 : Créez un projet pour le modèle de données Entity Framework

Les technologies Web utilisées dans cet exemple montre comment tous utiliser Entity Framework en fait, afin que j'ai choisi d'intégrer les trois exemples d'utilisation en demandant tous les partager un modèle commun d'Entity Framework. Lorsque vous travaillez avec une base de données existante, vous devez générer le modèle à partir de la base de données. Mesure du possible, je préfère le modèle d'abord créer et générer la base de données à partir de celle-ci, étant donné que j'aime à penser à ma conception plus au niveau de modèle que le niveau de la base de données. Pour garder les choses simples, cet exemple utilise seulement deux entités : Société et article.

Le modèle d'Entity Framework sera créé dans son propre projet et partagé entre plusieurs projets (j'ai appris comment le faire à partir de Julie Lerman ;(voir pfoley.com/mm2011jan01 de pour plus d'informations). J'appelle des méthodes conseillées, telles que ces “ négociations secrètes ” — figurant en la première fois est un véritable défi, mais une fois que vous connaissez le mot de passe, il est simple :

  1. Créez le modèle d'Entity Framework dans un projet bibliothèque de classes “ ”.
  2. Copiez la chaîne de connexion dans les projets qui partagent le modèle.
  3. Ajouter une référence au projet d'Entity Framework et System.Data.Entity dans tous les projets qui partagent le modèle.

Pour commencer, créez une nouvelle solution dans Visual Studio 2010 nommé “ client Success Stories ” et ajouter un projet bibliothèque de classes nommé “ CSSModel. ” Supprimer le fichier de classe et ajouter un vide ADO.NET Entity Data Model appelé “ CSSModel. ” Entités de société d'ajouter et d'article avec une association entre elles, comme dans de la figure 1 (lorsque vous cliquez sur la société pour ajouter l'association, assurez-vous que “ ajouter des propriétés de clé étrangères aux ‘ personne ’ Entity ” est cochée dans la boîte de dialogue qui en découlent : propriétés de clé étrangères sont requis dans le cours des opérations suivantes).

image: Adding Company and Story Entities to the Visual Studio Project

Figure 1 de Ajout de la société et les entités du récit pour le projet Visual Studio

Le modèle est désormais prêt à générer des tables de base de données, mais une base de données SQL Azure est nécessaire pour les placer dans. Lorsque prototypage est terminée et le projet évolue, il est utile ajouter une base de données SQL Server local pour effectuer des tests, mais à ce stade, il a moins compliqué de travailler directement avec une base de données SQL Azure.

À partir de votre portail de compte SQL Azure, créer une nouvelle base de données appelé “ CSSDB ” et ajouter des règles pour votre adresse IP actuelle et “ services de Microsoft d'autoriser l'accès à ce serveur ” sous l'onglet Paramètres du pare-feu. Le portail de compte SQL Azure doit ressembler à quelque chose comme de la figure 2 .

image: Configuring Settings in the SQL Azure Portal

La figure 2 Configuration des paramètres dans le code SQL Portal Azure

Dans Visual Studio, avec le bouton droit sur l'aire de conception et sélectionnez “ Database de la génération du modèle. ” Ajouter une connexion à votre nouvelle base de données SQL Azure et terminer l'Assistant, qui génère une DDL (Data Definition Language) et l'ouvre dans un fichier .sql, comme dans de la figure 3 .

image: Generating the Database Model

La figure 3 Générer le modèle de base de données

Avant d'exécuter l'instruction SQL, vous devez vous connecter à la base de données SQL Azure (cliquez sur bouton de la connexion dans la barre d'outils Éditeur Transact-SQL). L'instruction “ USE ” n'est pas prise en charge dans SQL Azure, afin que vous devez choisir votre nouvelle base de données à partir de la liste déroulante des bases de données dans la barre d'outils et ensuite exécuter l'instruction SQL. Vous disposez maintenant d'une base de données SQL Azure que vous pouvez Explorer dans l'Explorateur de serveurs Visual Studio, SQL Server Management Studio ou le nouvel outil de gestion, Microsoft Project Code-Named “ Houston ” (sqlazurelabs.com/houston.aspx ). Une fois que vous générez la solution, vous disposez d'un projet de Entity Framework que vous pouvez utiliser pour accéder à cette base de données par programme, ainsi.

Étape 2 : Créer le projet ASP.NET dynamique

Un site Web de données dynamique ASP.NET offre un moyen simple de travailler avec toutes les données dans la base de données et établit le bon fonctionnement de la fonctionnalité de planification initiale pour vous assurer de l'environnement — tout ça avec une seule ligne de code.

Ajouter un nouveau projet d'application Web Dynamic Data entités ASP.NET à la solution et appelez-le “ CSSAdmin. ” Pour utiliser le modèle de données à partir de la première étape, copiez l'élément de connectionStrings dans app.config dans CSSModel au fichier web.config dans CSSAdmin. La valeur CSSAdmin comme projet de démarrage et ajouter des références au projet CSSModel et System.Data.Entity.

Il n'y a beaucoup de fantaisie que vous pouvez faire avec les projets de ASP.NET Dynamic Data, mais il est très utile implémenter le comportement par défaut qui est fourni par uncommenting la ligne RegisterContext Global.asax.cs et la modification des il pour :

DefaultModel.RegisterContext(typeof(CSSModel.CSSModelContainer), new ContextConfiguration() 
{ ScaffoldAllTables = true });

Génération et exécution du projet et que vous avez un site de base pour gérer vos données. Ajoute des données de test pour vous assurer que tout fonctionne.

Étape 3 : Création du projet de Services Azure Windows

Le résultat de l'étape précédente est un site Web local qui accède à une base de données sur SQL Azure, l'étape suivante consiste à obtenir ce site Web en cours d'exécution sur Windows Azure.

À partir de votre portail de compte Windows Azure, créer un service de stockage appelé “ CSS stockage ” et un service hébergé, appelé “ service CSS. ” Le portail de compte Windows Azure devrait être similaire à de la figure 4 .

image: Creating Services in the Azure Portal

La figure 4, créer des services dans le Windows Portal Azure

Dans Visual Studio, ajouter un nouveau projet Windows Azure nuage service à votre solution appelée “ CSSAdminService ” (vous devez avoir Windows Azure Tools pour Visual Studio est installé), mais n'ajoutez pas plus “ solutions de service du nuage ” à partir de l'Assistant. Le projet de service nuage ajoute l'infrastructure nécessaire pour exécuter votre application dans une version locale du “ fabric nuage ” pour le développement et débogage. Il facilite également la publiez de manière interactive pour Windows Azure. C'est formidable pour les prototypes et pour les solutions de Windows Azure plus simples, mais une fois que vous avez graves sur le développement sur Windows Azure, vous souhaiterez probablement utiliser Windows PowerShell pour le déploiement de scripts, par exemple, dans le cadre d'une solution d'intégration continue.

Avec le bouton droit sur le dossier rôles dans CSSAdminService, puis sélectionnez “ Ajouter | projet de rôle de Web dans la solution ” à associer au projet CSSAdmin le projet de service du nuage. Maintenant lorsque vous compilez et exécutez la solution, il s'exécute dans le tissu de développement. À ce stade, la solution ne ressemble pas tout état autre qu'il s'est en cours d'exécution sur IIS ou Cassini, mais il est important de s'exécuter sur du tissu dev tout de même pour intercepter des erreurs telles que l'utilisation des API Windows non prise en charge que vous faire évoluer une solution Windows Azure.

Déployer sur votre compte Windows Azure, clic droit sur le projet CSSAdminService, cliquez sur Publier. La première fois, pour cela, vous aurez besoin d'ajouter des informations d'identification (suivez les instructions pour copier un certificat à votre compte Windows Azure). Sélectionnez ensuite un connecteur hébergé de service “ ” et un compte de stockage “ ” pour déployer votre solution à. Il existe deux options pour l'emplacement de service hébergé : production et de mise en attente. Lors de la mise à jour d'une solution réelle dans la production, déployez d'abord à la mise en place pour vous assurer que tout fonctionne et puis promouvoir l'environnement intermédiaire en production. Lors de la création de prototypes, je préfère déployer directement à la production, car je n'ai pas besoin de laisser de la solution en cours d'exécution quand même. Cliquez sur OK pour déployer Windows Azure, ce qui peut prendre plusieurs minutes. Une fois terminé, exécutez votre application Windows Azure à l'aide de l'URL du site Web mentionné sur la page de service qui devrait être similaire à de la figure 5 .

image: An Azure Deployed Service

La figure 5 service a déployé un Azure Windows,

Après avoir vérifié que le service fonctionne, suspendez le et supprimer des déploiement afin d'éviter des frais (plans de consommation sont facturés pour chaque fois qu'un package de service est déployé, il est en cours d'exécution ou non). Ne supprimez pas le service lui-même, étant donné que cette procédure retourne par conséquent, l'URL du site Web dans la liste des URL disponible. Bien sûr, lorsque vous êtes prêt à retourner le commutateur sur une solution de production réel, vous devrez peut-être du budget pour l'exécution des services Windows Azure direct.

En cas de défaillance d'un déploiement du service, il n'est pas toujours déterminer vous exactement quel est le problème. Il n'est généralement pas même savoir vous quelque chose est incorrect. L'état du service entre uniquement une boucle comme “ initialisation … occupé … arrêt … initialisation … ” lorsque cela se produit pour vous, et il sera — recherchez des problèmes tels que tenter d'accéder aux ressources locales (par exemple une base SQL Server locale) ou référence à des assemblys qui n'existent pas sur Windows Azure. L'activation de IntelliTrace lors du déploiement du package (voir la rubrique figure 6-) peut vous aider à identifier les problèmes en identifiant les exceptions spécifiques levées en cours.

image: Enabling IntelliTrace While Publishing to Azure

La figure 6 Édition de l'activation des While IntelliTrace vers Azure Windows,

Étape 4 : Création du projet ASP.NET MVC

La solution jusqu'ici consiste en un site Web d'administration (même s'il est d'aucune sécurité au niveau de l'utilisateur) qui s'exécute sur Windows Azure et accède à une base de données SQL Azure, tout ça avec une seule ligne de code. L'étape suivante consiste à créer le site Web public.

Ajouter un nouveau projet d'application de Web ASP.NET MVC 2 à la solution nommée “ CSSPublic ” (ne créez pas un projet de test d'unité tout en utilisant cet exemple). Si vous êtes encore tout à fait familiarisé avec ASP.NET MVC, vous avez intérêt à commencer par un ASP.NET MVC 2 Site Web vide application, mais je préfère démarrer à partir d'une structure de site Web qui fonctionne déjà et le modifier bit par bit afin de pouvoir faire ce que je veux.

Avec le bouton droit sur CSSPublic pour faire votre projet de démarrage et exécutez-le pour voir ce que vous débutez avec. Le site public pour CSS est en lecture seule et anonymes, par conséquent supprimer toutes les fonctionnalités de connexion d'accès et le compte aux étapes suivantes :

  1. Supprimez la balise div “ logindisplay ” Site.Master.
  2. Supprimer l'élément de chaîne et l'authentification de connexion ApplicationServices à partir de Web.config principal.
  3. Supprimer AccountController.cs, AccountModels.cs, LogOnUserControl.ascx et l'intégralité du dossier de compte, sous affichages.
  4. Exécutez à nouveau pour vérifier qu'il fonctionne toujours.
  5. Copier la chaîne de connexion à partir de la CSSModel app.config dans le fichier CSSPublic Web.config et ajouter des références à CSSModel et System.Data.Entity qu'avant.
  6. Sélectionnez toutes les références pour CSSPublic et la propriété Copy Local la valeur true.

Je pense qu'il est judicieux d'ajouter des contrôleurs distincts (avec les vues associées) pour les sociétés et les articles, tout en maintenant le contrôleur de page d'accueil en tant qu'une page de destination. Il s'agit de décisions importantes ;un concepteur peut rendre le site se présenter de bonnes, mais l'architecture d'informations — la structure du site — doit être le premier à droite.

D'attribution de noms est utile pour un projet MVC (Model View Controller). Utiliser des noms de contrôleur au pluriel (sociétés, pas de société) et correspondant à afficher des dossiers. Utilisez les conventions standard d'index, des détails et ainsi de suite pour les méthodes de contrôleur et des noms de vues. Vous pouvez modifier les conventions suivantes si vous souhaitez réellement, mais qui ajoute la complexité.

Avec le bouton droit sur le dossier de contrôleurs pour ajouter un nouveau contrôleur nommé “ CompaniesController. ” Ce site ne sera pas implémenter n'importe quel comportement, il est en lecture seule, il n'est pas nécessaire pour une classe de modèle explicite. Traiter le conteneur de modèle d'Entity Framework lui-même en tant que le modèle. Dans CompaniesController.cs, ajoutez “ à l'aide de CSSModel ” et modifier la méthode index pour renvoyer une liste de sociétés comme suit :

CSSModelContainer db = new CSSModelContainer();
return View(db.Companies.ToList());

Pour créer la vue, créez un dossier vide de sociétés sous affichages, avec le bouton droit sur celle-ci pour ajouter un affichage nommé “ index ”. Rendre fortement typé avec une classe vue données CSSModel.Company et affichage de contenu de liste.

Dans Site.Master, ajoutez un élément de liste dans le menu pour faire référence au nouveau contrôleur à :

<li><%: Html.ActionLink("Companies", "Index", "Companies")%></li>

Exécuter l'application, puis cliquez sur le menu pour afficher la liste des sociétés. L'affichage par défaut est un bon point de départ, mais supprimez le champ “ ID ” inutile. Dans la mesure où ce site est destiné à être en lecture seule, supprimez les entrées de ActionLink pour “ Edit, ” “ supprimer ” et “ créer ”. Enfin, vérifiez la société nom même un lien vers le mode Détails :

<%: Html.ActionLink(item.Name, "Details", new { id=item.Id })%>

Votre liste de sociétés doit maintenant ressembler à ce qui est affiché dans les de la figure 7 .

image: A List of Companies in ASP.NET MVC Web Site

La figure 7 liste des sociétés dans MVC ASP.NET Web Site

Pour implémenter des détails, ajoutez une méthode à CompaniesController :

public ActionResult Details(int id)
{
  CSSModelContainer db = new CSSModelContainer();
  return View(db.Companies.Single(c => c.Id.Equals(id)));
}

Le paramètre id représente l'entier suivant Companies\Details\ dans l'URL. Cet entier est utilisé pour rechercher la société appropriée à l'aide d'une expression LINQ simple.

Ajouter l'affichage Détails sous le dossier de sociétés comme avant, mais cette fois-ci sélectionnez “ Détails ” en tant que le contenu de l'affichage et nommez la vue “ Détails. ”

Exécutez le projet, accédez à des sociétés et puis cliquez sur l'un des noms de société pour afficher la vue de détails par défaut.

Ajout d'un contrôleur et de vues pour les articles est similaire. Les vues nécessitent encore une grande quantité de mise au point avant d'être prêt pour un concepteur, mais il s'agit d'un bon point de départ et il est facile de faire évoluer.

Pour vérifier que ce projet fonctionne sur Windows Azure, créez un projet de service de nuage appelé “ CSSPublicService ” et lui ajouter le rôle CSSPublic. Exécuter le service local dans le tissu de dev et publier le site dans Windows Azure et l'exécuter à partir de l'URL publique. N'oubliez pas de suspendre et de supprimer le déploiement, lorsque vous avez terminé pour éviter de qui vous sont facturés.

Étape 5 : Créer le projet de services WCF RIA

La solution à ce stade contient les sites ASP.NET MVC et ASP.NET Dynamic Data Web en cours d'exécution (ou au moins exécutables) sur Windows Azure, en utilisant un modèle d'Entity Framework partagé pour accéder à une base de données SQL Azure. Très peu de code de plomberie manuelle a été nécessaire pour obtenir une bonne quantité de fonctionnalités. Ajout d'un site Web des services WCF RIA ajoute une autre dimension : une riche expérience de modification.

Ajouter un projet d'application d'entreprise de Silverlight nommé “ CSSCustomerEdit ” (sans espace) et Visual Studio l'ajoute à votre solution deux projets : un client de Silverlight (CSSCustomerEdit) et un service Web (CSSCustomerEdit.Web). Exécuter la solution pour voir ce que vous débutez avec. Ouvrez ApplicationStrings.resx CSSCustomerEdit projet et changer la valeur de ApplicationName “ client Success Stories ” pour lui donner un aspect agréable.

Dans CSSCustomerEdit.Web, connectionStrings copie à partir de CSSModel dans Web.config, ajoutez des références à CSSModel et System.Data.Entity et affectez à la copie locale la valeur true pour toutes les références. Ensuite, avec le bouton droit sur le dossier Services et ajouter une nouvelle classe de service de domaine appelé “ CSSDomainService. ” Assurez-vous que le nom de cette classe se termine dans le service, sans un numéro, pour pouvoir le meilleur parti de l'outillage entre les deux projets (un autre “ secrète négociation ”). Cliquez sur OK pour ouvrir la boîte de dialogue Ajouter une nouvelle classe de service de domaine et vérifiez toutes les entités ainsi activer la modification pour chaque (de figure 8 ).

image: Adding a Domain Service Class

La figure 8 Ajout d'une classe de service de domaine,

Notez que “ générer associée classes pour les métadonnées ” est désactivée. Cet exemple illustre un compromis avec l'approche que je suis espousing ici. Dans une application métier de Silverlight, les classes de métadonnées peuvent être utilisées pour ajouter une logique de validation supplémentaires tels que les plages et afficher des valeurs par défaut. Toutefois, lorsque le modèle d'Entity Framework se trouve dans un projet séparé de CSSCustomerEdit.Web, la trousse à outils ne vous permettre d'ajouter ces classes de métadonnées. Si cette fonction est importante de vous, ou si vous savez que vous aurez à investir la majeure partie de votre énergie dans la partie d'une Application Silverlight Business de votre solution, vous pourriez créer votre modèle d'Entity Framework directement dans le projet “ .Web ” au lieu d'un projet distinct. Vous pouvez toujours référencer CSSCustomerEdit.Web pour partager le modèle d'Entity Framework dans un autre projet.

Comme mentionné, l'authentification et l'autorisation sont hors de portée de cet article, mais il est possible de livre et l'avoir encore précis. Dans la classe CSSDomainService, ajoutez une propriété de l'espace réservé appelée “ myCompany ” pour représenter la société de que l'utilisateur est autorisé à modifier. Pour l'instant, coder en dur à 1, mais finit par la volonté de processus d'ouverture de session définie pour la société de droite de l'utilisateur authentifié.

Modifier la classe CSSDomainService afin de refléter le cas d'utilisation spécifiques pour le projet : l'utilisateur peut mettre à jour de sociétés, mais pas insérer ou supprimer des (un administrateur effectue que dans le site Web de données ASP.NET dynamique), donc supprimer ces méthodes de service. En outre, l'utilisateur peut modifier uniquement la même société qu'ils fonctionnent pour pas une liste de sociétés, remplacez donc GetCompanies GetMyCompany. De même, remplacez GetStories GetMyStories et faire en sorte que l'utilisateur crée des histoires dont CompanyId est égal à myCompany :

private int myCompany = 1; // TODO: set myCompany during authentication
public Company GetMyCompany()
{
  return this.ObjectContext.Companies.Single(c=>c.Id.Equals(myCompany));
}
...
public IQueryable<Story> GetMyStories()
{
  return this.ObjectContext.Stories.Where(s=>s.CompanyId.Equals(myCompany));
}

public void InsertStory(Story story)
{
  story.CompanyId = myCompany;
  story.Id = -1; // database will replace with next auto-increment value
  ...
}

WCF RIA services projette la création d'interfaces orientées sur un champ modifiables, mais il important de commencer tout simplement et ajouter des fonctionnalités lentement. Les contrôles DataGrid et les formes sont puissants, mais chaque fois que j'ai fonctionne trop rapidement ou que vous essayez d'ajouter trop de fonctionnalités à la fois, je finir messing et d'avoir à revenir en arrière. Il est préférable de travailler de manière incrémentielle et ajouter une amélioration de l'interface utilisateur à la fois.

Pour implémenter une interface utilisateur de base pour cet exemple, ajouter des références à System.Windows.Controls.Data et System.Windows.Controls.DomainServices dans CSSCustomerEdit. Créer de nouveaux affichages (éléments de la Silverlight Page) pour la société (singulier) et des articles, puis simuler le code XAML à partir de la page d'accueil existante et les affichages. Modifier MainPage.xaml pour ajouter de nouvelles lignes de séparation et les boutons de lien (ou bien, venez profiter Home et les affichages à utiliser pour la société et des histoires existantes).

Dans le développement de Silverlight, la majeure partie de la magie implique la modification de code XAML. CSSCustomerEdit, ajouter des entrées d'espace de noms, une DomainDataSource et une formes de la vue de la société. En outre, ajouter un contrôle DataGrid pour l'affichage des articles. Dans les deux DataForms, gérez l'événement de EditEnded appeler MyData.SubmitChanges.Stories.xaml, ce qui devrait être similaire à figure 9-.

image: XAML for the Stories View

La figure 9 XAML pour la vue articles

Générer … exécuter … fonctionne ! Une expérience de modification riche est prête à faire évoluer (voir la rubrique figure 10 ).

image: The Stories View in Action

La figure 10 de la vue des histoires en action

Comme avant, créez un nouveau projet de service de nuage, publier et tester sur Windows Azure. Copie CSSCustomerEditTestPage.aspx à default.aspx pour une expérience plus propre et que vous avez terminé.

Ne ‘ True unidirectionnels ’

Visual Studio et le .NET Framework offrent une multitude de choix pour créer des solutions qui peuvent s'exécuter sur Windows Azure. Bien qu'il soit tentant de rechercher la “ une façon de true ” pour créer l'application qui tue suivante pour le nuage, il est plus récompenser pour tirer parti des fonctions à partir de plusieurs technologies pour résoudre des problèmes complexes. Il est plus facile à du code, plus facile de faire évoluer et, grâce à Windows Azure — plus facile à utiliser.

Patrick Foley est une spécialiste d'architecte ISV pour Microsoft, qui signifie qu'il vous aide à des logiciels de sociétés réussissent à s'appuyant sur la plate-forme Microsoft. Consulter son blog à pfoley.comde .

Grâce à l'expert technique suivante pour la révision de cet article : Hanu Kommalapati