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
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.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ä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?
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
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
@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
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!