Je prévois un système de réalisation pour un site ASP.NET MVC. Je veux que les «règles» de réussite soient stockées dans une base de données - pour être plus facile d'ajouter de nouvelles réalisations et un endroit central pour gérer les règles existantes. Les utilisateurs n'auront aucun accès pour modifier les règles.Comment créer un ensemble de règles basé sur une base de données pour le système de réalisation d'applications Web?
Lorsqu'un utilisateur effectue une action qui pourrait potentiellement gagner une réussite, les règles de db seront interrogés et s'il y a des matches, leur donner les réalisations (stockées dans une table de consultation, (userId, achievementId, dateAwarded).
Actuellement, je prévois de mettre les "déclencheurs" sur certaines actions dans le contrôleur, mais le code qui fait le travail sera dans le modèle
Existe-t-il un schéma DB standard pour un système de réalisation qui accomplit Il n'est pas nécessaire de réinventer la roue si ce n'est pas nécessaire, sinon, quels types de problèmes pensez-vous qu'il apparaîtrait, que faut-il faire attention?
@Rex M - Ça sonne bien! Pour l'exemple que vous avez donné il serait un type de recherche de travail cron. Comment recommanderiez-vous l'accrochage dans les actions que les utilisateurs prennent? Par exemple, ils affichent une nouvelle «chose» et c'est la 100e, alors donnez-leur une réussite. Supposez également qu'il pourrait y avoir un certain nombre de réalisations pour poster une nouvelle "chose". – Chaddeus
@Chad désolé pour la réponse tardive - pour répondre à votre question, comme vous l'avez dit, cela fonctionne mieux comme un travail cron ou, dans l'autre réponse, un objet cache auto-insérant initialisé au démarrage de l'application. Votre meilleur pari tout autour, pour la simplicité et la performance, est d'éviter de le connecter directement aux actions de l'utilisateur du tout lorsque cela est possible. Dans de nombreux cas, il est préférable de vivre avec quelques minutes de retard entre l'action qui vous a poussé à la limite et la récompense accordée. –
@ Rex M - merci ... comment Foursquare le fait-il? Je ne l'utilise pas, mais quand un utilisateur débloque un badge, l'obtient-il immédiatement? Ou est-il attribué plus tard quand le travail de cron tourne autour? J'ai vraiment aimé l'idée de garder le site performant! J'ai juste obtenu la page d'accueil pour charger en 48 secondes.: D – Chaddeus