Question

Avez-vous d'utiliser l'architecture de la couche d'entreprise lors de la création de solutions SharePoint? Pouvez-vous me donner un projet de site codeplex.com/other comme exemple, où je peux trouver une conception en couches? (Interface / BL / DAL)

Était-ce utile?

La solution

J'utilise l'architecture en couches dans toutes mes solutions SharePoint et SharePoint traiter généralement la couche d'interface utilisateur, en le gardant très mince. Toute logique va dans le modèle d'affaires et je wrappers DAL à abstraire l'infrastructure de la liste (ce qui contribue également à l'essai).

Pour une bonne lecture sur l'architecture en couches dans ASP.NET consultez cet article . Il est ASP.NET et NHibernate, mais les principes sont les mêmes. Il y a aussi un échantillon d'architecture en couches dans .NET sur CodePlex. Encore une fois, non SharePoint spécifique, mais les principes sont les mêmes.

Gardez la mince interface SharePoint et résister à la tentation de commencer à lire / écrire des listes dans votre code partie web. Le traiter comme une base de données (parce qu'il est!)

Autres conseils

D'accord avec Bil.

parties Web, les contrôles Web, pages d'application, etc ne doivent être la couche d'interface utilisateur que les appels dans une couche qui est agnostique du contexte d'appel d'origine; contexte d'appel pourrait être un récepteur d'événements, l'application de la console, le travail du minuteur, workflow, etc. Veillez toujours à ce que cette couche partagée que vous appelez en ne dispose pas d'une dépendance à l'égard SPContext.Current puisqu'il n'est pas toujours là! Veuillez agréer, SPWebs SPLists, etc SPLisItems en tant que paramètres et les paramètres du constructeur méthode. Dans un contexte web, vous pouvez les transmettre à partir du SPContext.Current, mais dans une application console vous construire vous-même ces.

Pour améliorer la facilité de débogage (appuyez simplement sur la touche F5) et de raccourcir le cycle de rétroaction de développeur, j'écriture commencent souvent d'une simple application de console qui appelle dans la couche qui contiendra la logique de base, en passant dans un SPWeb que je construisais dans le Application de la console. Une fois que la logique de noyau est terminée, j'écrire un WebControl mince ou WebPart pour remplacer l'application de la console, la lecture du contexte SPWeb au lieu de construire, mettre en place des gestionnaires d'événements, etc.

Pour Bil et Jaap (ou quelqu'un d'autre),

Je me demande quel type d'objets / interfaces vous passez entre les couches? Avez-vous retraverser un SPListItem ou avez-vous retraverser une sorte d'interface qui représente la SPListItem?

SharePoint est une bête étrange parce que l'utilisateur a réellement la possibilité de changer la structure de données via l'interface web (ils peuvent ajouter / supprimer / modifier des colonnes dans une liste). Si vous passez en arrière un objet / interface, chaque fois qu'une liste est modifiée par un utilisateur, le code devrait être recompilé (et déployé) pour accueillir la nouvelle colonne (propriété). Si vous retraverser le SPListItem, vous en effet briser la couche en permettant un accès direct à la source de données (SharePoint).

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top