Avatar billede zappa Nybegynder
11. maj 2012 - 12:46 Der er 12 kommentarer og
1 løsning

Analyse af brugen af software

Hej

Jeg kunne godt tænke mig at implementere statistik/analyse i en .NET applikation således at jeg kan efter en kunde brug kan trække informationer omkring hvilke funktionaliter der blev brugt, hvilke knapper der blev trykket på, hvor en exception opstod m.m. F.eks. 80% af tiden blev brugt i modul B, funktionalitet 1.2.

Jeg har overvejet et AOP framework (Spring, fluentAOP, PostSharp) men ville gerne høre andre erfaringer eller foreslag.

Zappa
Avatar billede mireigi Novice
11. maj 2012 - 15:56 #1
Hvis du selv er herre over applikationen, kan du jo ligge det ind i den således at data bliver genereret automatisk on-the-fly.
Avatar billede janus_007 Nybegynder
11. maj 2012 - 16:43 #2
Og det er en applikation og ikke webapplikation?
Avatar billede arne_v Ekspert
12. maj 2012 - 03:24 #3
Hvis du vil vide hvor meget tid der bruges i forskellig kode, saa skal du have fat i en profiler. Du kan ikke bruge AOP - det er ikke helt simpelt at undgaa at profile koden paavirker profile output saa meget at resultatet er ubrugeligt.

Skal du bare vide hvilken kode der bliver brugt og hvilken der ikke bliver brugt, saa er AOP helt fint. Du skal brug en static weaver med aspects, pointcuts og advice i separat fil.
Avatar billede zappa Nybegynder
12. maj 2012 - 21:12 #4
Takker for svarene.

mireigi:  jeg er herre over applikationen, men forstår ikke hvad du mener. Kan du give et eksempel?

janus_007: det er ikke en webapplikation, men statitiskken/analyse burde også virker hvis det var. Jeg mener på server siden kunne logge hvilke services der bliver kaldt m.m.

arne_v: Der drejer sig ikke om profiling. Idden er at bliver klogere på hvad brugerne af systemet laver således jeg kan optimere processen eller udvikle ny funktionalitet i det meste brugte moduler.
Avatar billede arne_v Ekspert
12. maj 2012 - 23:47 #5
Saa burde AOP virke fint.
Avatar billede mireigi Novice
13. maj 2012 - 21:05 #6
Noget i den her stil:

Det er blot et eksempel for at vise ideen bag det, og der skal muligvis tilføjes mere til det.

public void LogUsage(int userId, string application, string view, string action)
{
  string connString = "Your_Connection_String_Here";
  using(SqlConnection conn = new SqlConnection(connString))
  {
      SqlCommand cmd = new SqlCommand();
      cmd.CommandType = CommandType.Text;
      cmd.CommandText = "INSERT INTO tbl_Usage " +
                        "(User, Application, Action) " +
                        "VALUES " +
                        "(" + userId + ", '" + application + "', '" + action + "');"
      cmd.Connection = conn;
      cmd.ExecuteNonQuery();
  }
}

private void saveButton_Click(Object sender, EventArgs e)
{
  // Your Code Here
  // ...
  // ...
  // ...
  // ...
  // ...

  LogUsage(Session.CurrentUser, "User Management", "Create User", "Save New User");
}
Avatar billede arne_v Ekspert
14. maj 2012 - 04:01 #7
Fordelen ved AOP er at man ikke behoever manuelt putte et LogUsage kald ind i alle Click metoder - man kan bare faa weaveren til at indsaette kaldet.

Jeg er dog lidt usikker paa hvilke weavere der kan modificere events.
Avatar billede zappa Nybegynder
15. maj 2012 - 07:48 #8
mireigi: Takker for eksemplet. Jeg udtrykte mig ikke godt i sprøgsmålet - min fejl. Jeg vil gerne have noget mere vedligeholdelsesvenlig. Andre udviklere (inkl. mig selv) glemmer nemt at indsætte custom kode i serice kald og events. Derfor skal det være mere automatisk a la AOP.

arne_v: Jeg hører at der er ulemper ved AOP bl.a.
- performance
- sværere at debugge

Kender du andre ulemper?
Avatar billede arne_v Ekspert
16. maj 2012 - 02:10 #9
Performance

Hvis du f.eks. weaver ind i alle click metoderne vil det koste adskillige nano sekunder for hvert klik. Men har du er stopur der kan maale nano sekunder?

Debug

Hvorfor vil du logge kald hvis du koerer under debugger? Du klikker selv og du kan se hvilken kode du koerer.
Avatar billede zappa Nybegynder
10. juni 2012 - 20:16 #10
Beklager meget den lange svar tid.

arne_v: hvis det bliver logget i databasen i AOP-koden, så er det ikke bare nanosekunder. Jeg ved dog ikke endnu hvor det skal logges fil/db og om det på klient eller serveren eller begge.

Mht. debugging så kan logningskoden eller noget andet kode i AOP-metoden kaste en exception, som ville være rar at kunne debugge sig frem til.

arne_v, du må gerne sende et svar.
Avatar billede arne_v Ekspert
11. juni 2012 - 00:47 #11
nano sekunderne er hvad AOP added sammenlignet med andre metoder
Avatar billede arne_v Ekspert
11. juni 2012 - 00:47 #12
svar
Avatar billede zappa Nybegynder
28. juni 2012 - 20:03 #13
Svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Saab Danmark A/S

System Engineer

Cognizant Technology Solutions Denmark ApS

Test Manager