NMapper v2.0

NMapper Logo

NMapper Logo

Så er jeg i gang med version 2 af min NMapper.

NMapper v2.0 kommer til at have følgende features:

  • Alt fra de foregående versioner.
  • Forbedret cache system.
  • Nyt DB Manager system.
    • Ansvaret flyttes fra managerne til NMapperen.
  • Mulighed for at lave instanser af datamapperen så man kan bruge flere DB managere.
  • Helt ny indre struktur.
  • Forbedret ydelse.
  • Flere generelle og automatiserede metoder.
  • Mulighed for at få taget tid på SQL kaldene.
  • Og meget mere.

Håber at blive færdig om 2-3 måneder. Hvis du har idéer eller ønsker til yderligere funktionalitet så må du gerne smide en kommentar herunder.

XML DBManager

commentxml1[1]Så er min XML Manager til NMapperen, ved at være godt moden. Jeg bruger den på mit arbejde, sammen med NMapperen, selvfølgelig, og har i den forbindelse fundet en hel del svagheder i den. I den seneste version er de fleste af de svagheder blevet helbredt.

Et af mine problemer opstod da jeg ville indsætte 9445 rækker i en tabel (xml fil) navigate to these guys. Den insisterede på at gemme filen for hver indsættelse. Det tog evigheder, sad i en halv time og ventede.

Så slog det mig. Indsæt en buffer, der indeholder alle XML-filer fra de oprettes eller indlæses, og så lade en tråd gemme de filer en gang i mellem.

På den måde skal der faktisk kun læses een gang fra harddisken og kun skrives til disken samtidig med at cachen renser sig selv.

NModules

Til den seneste version af NMapper’en har jeg haft brug for en modul styrings komponent. Det er der kommet NModules ud af.

I NModules kan du registrere flere interfaces. NModules gennemsøger så en mappe for dll’er og finder alle de klasser der implementere et registreret interface. Ud af de klasser kan NModules så lave instanser som kan bruges som var de hårdkodet i systemet.

NCache

Til den seneste version af NMapper’en, har jeg lavet et par nye komponenter. Det ene er NCache.

NCache bruges til cache håndtering. Man kan smide hvad som helst i den og få det frem igen. Som standard gemmer den de cachede objekter i 10 minutter, hvorefter den fjerner dem. Men den fjerner kun de objekter der er ældre end 10 min. så alle objekter er cachede lige lang tid.

Man kan selvfølgelig selv ændre hvor lang tid cachen skal gemmes.

Du kan læse mere om NCache her.

NMapper 1.0

Endelig! Efter utrolig lang tid, er det endelig lykkedes mig at få tid til at færdiggøre NMapper 1.0.

Der er kommet en masse nye features.

NMapper skal bl.a. ikke længere kende alle mulige og umulige versioner og udgaver af database systemer. NMapper er nemlig blevet modul baseret, så man selv kan lave en database manager der passer til den database man bruger. NMapperen skal nok selv finde og registrere manageren.

Ud over at have lavet database managere, har jeg også lavet cache styrring, så der skæres ned på trafikken til og fra databasen, samtidig med at svar tiden bliver hurtigere.

Det eneste jeg mangler nu er bare at skrive en masse dokumentation, men indtil den er færdig, kan du jo skrive herunder hvis der skulle blive problemer.

Læs mere her.

NLog – Log-system.

Dansk:

Jeg er i gang med et eksamens projekt, og har i den anledning haft brug for at lave et logning system til at styre ændringer i system og evt. fejl. Til det system vi arbejder med er log-systemet lavet som en integreret del af systemet, men jeg tænkte om ikke kunne laves som en enkelt dll der blot skulle implementeres. Jeg er derfor kommet frem til det vedhæftede resultat: NLog. NLog består af en dll-fil og et css-dokument.

Disse to filer skal ligge i samme mappe som projektet bliver kørt fra. DLL’en er lavet i .NET 3.5 frameworket og kan implementeres i alle sprog der kører i dette framework. DLL’ens namespace er NLogClasses.

DLL-en og css-filen kan distribures frit. Dog må dll-en eller css-filen skifte navn og indholdet af dll-en må ikke ændres!

Eksempler (C#):

// Indlæs alle logs:
NLog.LoadAllLogs(); // Skal køres for der oprettes logge eller poster!
// Opret Log:
// CreateLog(string logName); logName angiver loggens navn!
Log minLog = NLog.CreateLog("LogNavn");
// Opret log-indlæg:
// CreateEntry(string description, bool error); description er en beskrivelse af hændelsen.
// error er true hvis der er tale om en fejl og false hvis ikke.
minLog.CreateEntry("Beskrivelse",false);
// Find Log:
// FindLog(string logName); logName er navnet på den log du vil finde.
Log fundetLog = NLog.FindLog("LogNavn");
// Find indlæg:
// FindEntry(DateTime time); time er tidspunktet hvor hændelsen finder sted.
Entry minEntry = fundetLog.FindEntry(DateTime.Parse("01-01-01"));
// Gem alle logs:
NLog.SaveAllLogs(); // Denne opretter en xml-fil hvis ikke denne allerede eksistere.
// Følgende er en beskrivelse af properties:
NLog.Logs; // Returnerer alle logge.
minLog.Name // Returnerer navnet på loggen.
minLog.Entries // Returnerer alle entries i den aktuelle log.
minEntry.Descr; // Returnerer beskrivelsen af hændelsen.
minEntry.Time; // Returnerer tidspunktet for hændelsen.
minEntry.Error; // Returnerer om hændelsen var en fejl eller ej.

Download NLog 0.1.

English:

I am in the middle af an exam project, in which we had to built a log-system to manage alle events to go back and se what happened when. Our log-system is embedded within our entire system so it can only run in our system. I then began to develop this little log-system which is not embedded in any way and can be used when and where it should be. It is made on the .NET 3.5 framework and is a dll-file and it can be implementet in all systems using that framework. The appended file contains the dll and a css-file. These two files has to be stored in the same directory as the rest of the executables is.

The namespace of the DLL is: NLogClasses.

The dll-file and the css-file is free to distribute but you may not change the name of the dll or the css-file. The content of the dll must stay as is!

Examples (C#):

// Load all logs:
NLog.LoadAllLogs(); // Has to be run before creating any logs or entries!
// Create Log:
// CreateLog(string logName); logName is the name of the log!
Log myLog = NLog.CreateLog("LogName");
// Create Log-entry:
// CreateEntry(string description, bool error); description is a descripten of the event.
// If the event is an error the error parameter is true.
myLog.CreateEntry("Description",false);
// Find Log:
// FindLog(string logName); logName is the name of the log you want to find.
Log foundLog = NLog.FindLog("LogName");
// Find entry:
// FindEntry(DateTime time); time is the time where the event took place.
Entry MyEntry = fundetLog.FindEntry(DateTime.Parse("01-01-01"));
// Save all logs:
NLog.SaveAllLogs(); // This creates an xml-file if it does not already exist.
// Th folowing is a description of alle the properties:
NLog.Logs; // Returns all logs.
myLog.Name // Returns the name of the log.
myLog.Entries // Returns all entries in the active log.
MyEntry.Descr; // Returns the discription of the event.
MyEntry.Time; // Returns the time of the event.
MyEntry.Error; // Returns wether the event is an error or not.

Download NLog 0.1.