Je suis à la recherche de la manière la plus appropriée de gérer un flux d'activité utilisateur sur mon site de réseau social. En ce moment j'ai plusieurs activités qui peuvent apparaître sur les flux de nouvelles telles que:NHibernate + ASP.Net Flux d'activité utilisateur MVC +
- utilisateurs rejoint le site
- Commentaires d'utilisateurs sur un poste
- utilisateur ajoute un message à leurs favoris
- utilisateur ajoute un nouveau poste sur le site
Voici une version simplifiée de mon domaine d'objets au moment:
public abstract class NewsItem : Entity, ITenantSpecific
{
public virtual Account Account { get; set; }
public virtual DateTime DateTime { get; set; }
// returns formatted news html string which gets
// overridden by inherted classes
public abstract string GetNewsHtml();
}
public class NewsItemJoiner : NewsItem
{
public virtual Account AccountJoined { get; set; }
public override string GetNewsHtml()
{
return "XXX has just joined our music network";
}
}
Comme vous pouvez le voir pour le moment j'ai une propriété qui doit être substituée sur chaque activité appelée GetNewsHtml
. Ce n'est pas idéal car je ne crois pas que mon domaine devrait être responsable de générer mon code HTML.
J'ai envisagé d'utiliser une vue partielle pour chaque type d'activité et de lui passer la classe de base NewsItem
dans le type correct.
Cependant, je suis ouvert aux suggestions.
merci pour la réponse. Cela ressemble exactement à ce que je dois faire et transmet la responsabilité de mon affichage au niveau du contrôleur. Merci! –
J'essaie de mettre cela en place, mais j'ai du mal à trouver comment appeler GetRenderer lorsque j'ai une liste de différents types de NewsItem (comme un menuisier, mise à jour de statut, etc). Avez-vous une solution pour cela? –
J'ai ajouté une réponse sur comment faire ceci sans IoC. La réponse de l'IoC varie selon les différents conteneurs (Windsor, etc.), donc je ne peux pas en donner un générique. Pour une implémentation manuelle, une simple mise en cache accélérerait la solution. – queen3