2013-08-10 5 views
0

Voici une situation où j'ai une application web qui doit:Accès API Web modèle

  • Accès sa base de données de base via une couche API Web (donc je n'ai pas accès direct à ses référentiels/UOW)

  • autres accès externes API tierces pour les données supplémentaires/actions

Quelles sont les meilleures pratiques/modèles qui sont recommandés pour envelopper et se connecter à ces Individu al API?

+0

Je ne comprends pas vraiment votre question, cherchez-vous une sorte de façade ws- *? Un courtier de service? –

+0

J'aurais dû mentionner que je suis encore novice avec .NET et les modèles mais j'essaie d'obtenir un bon design. Par exemple, disons que j'ai un formulaire simple qui recueille les détails d'un pilote et utilise une API REST tierce pour récupérer les modèles/marques de voiture que l'utilisateur doit sélectionner. Je ne veux pas que mon contrôleur soit jonché de requêtes HttpClient, alors est-ce que cela aurait du sens de créer un référentiel ou une autre classe pour chacun des services web api? Où placerais-je ces classes dans un projet en couches? – user2671272

Répondre

0

Ha ok, je l'ai maintenant :) Cela dépend vraiment de la quantité de données que vous consommez et de la quantité de demande. Vous pouvez par exemple avoir un cache local côté client contenant les données si elles sont assez petites, vous pouvez les répliquer dans l'une de vos bases de données si elles ne changent pas souvent et vous abonner aux mises à jour sur le webservice distant. Donc, oui, cela peut avoir du sens si vous avez vraiment beaucoup de demandes, mais après vous devrez gérer la cohérence du cache et la mise à jour. Pour moi, j'inclurais cela dans le DAL et j'unifierais tout derrière une façade pour que votre client consomme de la même manière des données internes et externes.

Pour le cache, il dépend, cache client, le cache du serveur, "WS- SQL * réplication", ...

Mais encore une fois, cela dépend vraiment du type/quantité de données et la charge acceptable/demandes

Peut-être un peu plus de détails? (Il n'y a pas de bonne réponse pour moi, dépend déjà du contexte, les objectifs, l'heure, le budget, etc, etc.)

0

Avis de non-responsabilité: Je suis l'auteur de Entity REST SDK. L'accès à la base de données avec l'API Web mènera à un cauchemar de sécurité, car vous devrez coder les règles de sécurité à chaque opération. C'est assez fastidieux.

Nous avons donc créé Entity REST SDK qui vous permet de configurer rapidement l'API REST avec les règles de sécurité en tant qu'expressions lambda simples qui font la plupart de votre logique liée à la sécurité.

Sécurité Le contexte fonctionne également au niveau du champ, donc si un administrateur demande un objet, il recevra tous les champs mais si un utilisateur demande le même objet à partir de la même URL, il recevra uniquement certains champs. La même chose s'applique aux modifications ainsi qu'aux clés étrangères.

https://entityrestsdk.codeplex.com/

Nous avons aussi JSON convertisseur LINQ qui vous permet de personnaliser vos requêtes avec la syntaxe JSON dans les chaîne de requête comme expliqué.