2010-12-08 37 views
2

Je dois intégrer des réseaux sociaux tels que Facebook etc. pour afficher les éléments qui ont été lus ou cliqués ou commentés par les amis des utilisateurs. Certaines questions d'architecture se posent:Questions d'architecture pour les services REST de Consuming Social Networks?

questions: a) dois-je mettre en cache la liste d'amis de l'utilisateur dans mon application db? L'inconvénient est que la liste des utilisateurs amis pourrait changer. Ou devrais-je récupérer cette liste après chaque connexion?

b) Lorsqu'un utilisateur se connecte à mon application (en utilisant oauth), quelle est la meilleure façon d'aller chercher sa liste d'amis - devrais-je le faire dans le fil de la demande web, où je suis locataire à notre base de données locale, ou devrais-je générer un autre travail tâche/thread/batch pour aller chercher cette liste? C) images miniatures de l'utilisateur: si un utilisateur se connecte, dois-je mettre en cache la vignette du profil utilisateur et la diffuser depuis mon application ou dois-je simplement intégrer l'URL du profil (pointant vers le site social) sur la page?

Répondre

1

Je n'ai jamais intégré avec les réseaux sociaux (SN) avant donc mon conseil va être général (désolé).

A) Mise en cache

  • Quelle sorte d'utilisation de votre système vous attendez-vous? Ceci est important si le SN cible a une limite sur le nombre de requêtes que votre application peut effectuer au cours d'une période donnée. Exemple hypothétique: si vous voulez obtenir 100 connexions par heure mais que le SN vous limite à 50 demandes par heure, vous devrez alors mettre en cache. Mauvais exemple de perhaops mais je suis sûr que vous avez l'idée.
  • À quelle fréquence les données changent-elles et à quel point les gens s'en soucient-ils? Si vous pouvez obtenir un nouvel ensemble de données à peu près en ligne avec la fréquence à laquelle les amis des gens changent, vous serez aussi efficace que possible tout en préservant la précision.
  • Pouvez-vous interroger le SN pour voir si les données ont changé avant d'obtenir un nouvel ensemble?
  • Si vous rencontrez des problèmes de performances liés à l'obtention de données, vous devez envisager la mise en cache.

B) OAuth

Si vous pouvez le faire de manière asynchrone, alors il est probablement pas une mauvaise idée. Vous n'avez aucun contrôle sur le système cible, alors que faites-vous quand les choses ne vont pas bien? Vous voudrez probablement rendre ceci aussi simple que possible; Je ne sais pas grand-chose sur le fait de travailler de manière asynchrone, sauf en utilisant AJAX (mais cela semble être dans le back-end?), Donc je ne suis pas sûr des détails.

C) Vignettes

  • Vérifiez la politique de la cible SN sur la liaison de retour; si elles le permettent alors c'est une option, sinon ...
  • Si le SN dont vous tirez l'image est important, il est probable que leurs systèmes seront plus disponibles que les vôtres. Cela suggère que le fait de les lier ne sera pas une dépendance qui risque de baisser et de rendre votre application mauvaise. Alternativement, si leur disponibilité est suspecte, vous allez proposer une application cohérente en conservant tout ensemble.
  • Si votre plan d'hébergement a des restrictions de bande passante ou des coûts liés à la bande passante, vous économiserez $$ en liant; mais c'est exactement pourquoi votre SN cible pourrait l'interdire.
  • Si la SN cible décide de changer de politique (et coupe vos liens) - comment le saurez-vous?
  • Incidemment, StackOverflow adopte une approche de liaison, mais cible un service basé sur le cloud qui est spécifiquement conçu pour permettre cela (pour autant que je sache).