Ich möchte statistische Informationen wie Seitenansichten, Anzahl der Kommentare für jeden Benutzer usw. sammeln. Ich habe über die Verwendung des Beobachtermusters nachgedacht. Wie würde ich dies in ASP.NET MVC implementieren?Wie sammle ich statistische Informationen zur Anwendungsnutzung in ASP.NET MVC?
Antwort
Das Beobachtermuster passt hier nicht wirklich. Die von Ihnen beschriebene Funktionalität sollte mit dem von Ihrer Anwendung verwendeten Modell erfasst werden. Wenn Sie beispielsweise die Anzahl der Kommentare für jeden Benutzer verfolgen möchten, bedeutet dies, dass Sie wahrscheinlich eine Kommentardatenbanktabelle haben. Sie können einfach eine SQL-Abfrage schreiben, die Ihnen eine Liste der Benutzer und eine Anzahl der Kommentare, die sie in dieser Tabelle erstellt haben, gibt.
so etwas wie
select userid, count(*) from comments group by userid
Für die Fälle, in denen Sie nicht die Informationen über eine direkte Abfrage der Datenbank sammeln kann, würde ich denke, diese Attribute über Filter zu implementieren. Entwickeln Sie einen benutzerdefinierten Filter, der die benötigten Informationen sammelt und archiviert. Gestalten Sie die Aktionen, für die der Filter Informationen mit dem Filter sammeln soll. Siehe hierzu MSDN page zum Erstellen eines benutzerdefinierten Aktionsfilters.
[PageViewCounter]
public ActionResult Index()
{
}
public class PageViewCounterAttribute : ActionFilterAttribute
{
public override OnActionExecuting(ActionExecutingContext filterContext)
{
...
}
}
kürzlich entdecken I DDD events und ThreadStatic attribute used in this cntext, was denken Sie?
Ich mag den Einsatz in diesem Fall wirklich. Auf diese Weise können Sie auch kein PageView aufzeichnen, wenn die Aktion ein Post ist, wodurch Ihre Statistiken aufgebläht würden. Ich habe kürzlich auch OnActionExecuted und OnActionExecuting als eine Möglichkeit gesehen, ModelState nach der Validierung beizubehalten. –
Wer möchte den Downvote erklären? Ich würde daran interessiert sein, Meinungen darüber zu hören, warum die Verwendung von Filtern keine gute Idee ist. – tvanfosson
Es ist zu einfach und heuristischer Modus. – diadiora