Laden...

Logging @ ViewModel

Erstellt von DaMoe80 vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.888 Views
D
DaMoe80 Themenstarter:in
500 Beiträge seit 2007
vor 9 Jahren
Logging @ ViewModel

Hallo zusammen,

mich interessiert eure Ansicht bzgl. Logging/Auditing in ViewModels. Wir haben eine Diskussion bei uns darueber, ob nun Logging Funktionalitaet in einem ViewModel verwendet werden darf oder nicht.
Eine Meinung dazu ist, da das ViewModel "zur UI gehoert", dass dort Logging nicht zu suchen hat. Ich sehe das etwas anders. Meiner Ansicht nach bildet das ViewModel u.A. Use-Cases ab, die man auf einer grob granularen Ebene "mitloggen"(Auditing) kann.

Wie seht Ihr das? Habt Ihr irgendwelche Literatur/Links zu Pro und Contra?
Selber habe ich mal u.A. bei Prism geschaut, wie die das machen.

Gruesse,
DaMoe

16.835 Beiträge seit 2008
vor 9 Jahren

Ein ViewModel ist ein Container und sollte keine direkte Logik enthalten.
Ein Logger ist im Prinzip Businessrelevant und gehört definitiv nicht in das ViewModel. Das Logging gehört daher in die Applikations-Infrastruktur.

Zudem machst Du Dir mit einem Logger in einem ViewModle (o.Ä.) das Testen nur unnötig schwer.

F
10.010 Beiträge seit 2004
vor 9 Jahren

Äh was?

Das ViewModel in MVVM ist die Businesslogik des View.
Wenn hier etwas zu loggen ist, was nichts in der darunterliegenden Schicht zu suchen hat, dann ist es natürlich die richtige Stelle.
Genauso wie hier auch Validierungen stattfinden können u7nd weitere UI Logik.

Aber Audit hört sich nach einer tieferen Schicht an, die hat im ViewModel dann nichts zu suchen.
Also nochmal, das ViewModel ist die Businesslogik des View, und deckt das ab. Nicht mehr und nicht weniger.

Zudem machst Du Dir mit einem Logger in einem ViewModle (o.Ä.) das Testen nur unnötig schwer.

Und da man den Logger auch hier per DI hinzufügt, wo ist da jetzt das Testproblem?

2.207 Beiträge seit 2011
vor 9 Jahren

Hallo,

Hehe, das ist wieder son "Das kommt darauf an"-Ding. Grundsätzlich ist das ViewModel schon der Ort, wo die Logik abgehen kann. Somit kann man da auch loggen. In grossen Applikationen wird oft aber das ViewModel eine Fassade und bietet im Prinzip nur (Ui)Services oder UiInformationProvider (o.ä.) an. Oftmals werden dann auch Interfaces vom Viewmodel gemacht (Die nur der Übersicht dienen). Dann ist das Logging natürlich in den einzelnene Providern oder Servies viel sinnvoller.

Gruss

Coffeebean

D
DaMoe80 Themenstarter:in
500 Beiträge seit 2007
vor 9 Jahren

@FZelle: Mit Auditing meinte ich lediglich Aktionen, die der User in einer Applikation durchfuehrt, d.h. Dinge selektiert, Aktionen ausfuehrt, Buttons klickt etc., sodass man einen groben Pfad durch die Applikation erhaelt. Das entscheidende an dieser Stellt soll aber nicht der Begriff sein. Ich meinte also das, was Du umschrieben hast mit:

Das ViewModel in MVVM ist die Businesslogik des View.
Wenn hier etwas zu loggen ist, was nichts in der darunterliegenden Schicht zu suchen hat, dann ist es natürlich die richtige Stelle.

Gruss,
DaMoe

P
157 Beiträge seit 2014
vor 9 Jahren

Hallo,

vielleicht etwas spät aber egal 😉

Also wenn ihr keine zusätzliche Abstraktionschicht in eure App-Logik(VIEWMODELS) eingebaut habt, dann spricht nichts gegen ein Auditlog im ViewModel. Das ganze wird aber auf dauer etwas aufwändig, gerade wenn man viele vm's verwendet die ggf gleiche funktionale kontexte verwendet, bietet sich für solche Fälle eine zusätzliche Abstraktion an, wir verwenden sie um die Applogik etwas getrennter zu halten.

vg

Wenn's zum weinen nicht reicht, lach drüber!