2008-11-03 14 views
6

J'ai besoin de créer plusieurs applications qui partagent toutes une base de données Microsoft SQL Server. Ceux-ci incluent les applications Web ASP.NET, les applications de bureau WPF et probablement l'application de console impaire de temps en temps. Je souhaite utiliser ADO.NET Entity Framework pour l'accès aux données, étendre ses objets pour ma logique métier et lier ces objets aux contrôles de mon interface utilisateur. Comment puis-je faire cela dans chacune de mes applications sans trop me répéter? Si le schéma de base de données ou ma logique métier change, alors je veux un moyen facile (ou automatique) de mettre à jour toutes mes applications.Comment partager DAL et BLL entre plusieurs applications .NET?

Comment devrais-je concevoir ce système?


Mise à jour: J'ai posé des questions de suivi ...

Répondre

9

pour que je recommande la création d'une solution Visual Studio qui contient plusieurs Projets. Votre couche d'accès au contenu sera contenue dans son propre projet, puis pour les autres projets qui doivent utiliser cette fonctionnalité, créez une référence de projet dans le projet DAL.

Espérons que cela aide!

3

L'idée d'adamalex est saine. Selon votre configuration, une autre approche privilégiée consiste à séparer les projets communs, à les compiler et à faire en sorte que vos autres projets référencent cette DLL compilée. c'est à vous de décider s'ils font référence à la dernière version de cette DLL ou à une version spécifique de celle-ci. Peut-être que vous ne voulez pas que certains projets restent tout le temps.

+0

Oui, d'accord que cette approche est tout aussi raisonnable que celui que je suggère. Comme toujours, cela dépend de vos besoins. –

2

Peut-être que vous pouvez utiliser webservices pour centraliser l'accès base de données/logique ...

Comme on le voit dans les réponses de link (SOA/WebServices/Remoting)

+0

Si ce n'est pas trop ... – bob

1

je recommande la création d'un nouveau Visual Studio solution qui contient plusieurs projets. Pour une séparation DAL/BLL, je recommanderais d'utiliser une bibliothèque de classes. Faire cette abstraction vous permet de l'intégrer à d'autres projets comme un service web WCF par exemple et de l'exposer ouvertement non seulement aux systèmes .NET, mais potentiellement à d'autres systèmes. Une fois que vous avez créé ce (s) projet (s) de bibliothèque de classes, vous pouvez y ajouter une référence dans vos autres projets et les utiliser. Cela aidera à garder une séparation claire des préoccupations.

2

Je vous suggère de regarder CSLA.Net. Il vous permet de créer vos objets métier qui supportent facilement plusieurs interfaces (asp.net, wpf, silverlight, etc.). Je ne sais pas ce que vous construisez, mais l'AAPC le soutient très bien.

J'ai une platine coulissante qui peut vous aider à démarrer avec l'AAPC.

CSLA Slide Deck