So da ich mich ja mal für den C# Bereich groß mache möchte ich auch mal fortführend etwas für die zwar nicht so breiträumig hier vorhanden aber schon erfahreneren Programmier der Sprache C# etwas bieten.
Ein Blick hierrein lohnt sich garantiert noch einige male da ich ihn erweitern werde!
Kommen wir erst mal zu den getter/setter Variabeln. Auch Properities genannt.
Es handelt sich dabei scheinbar um ganz normale Feldtypen. Sind sie aber nicht!
Sie bieten viele Vorteile gegenüber normalen Feldtypen.
Man kann sie im Gegensatz zu Feldtypen jederzeit einfach aussetzen.
Und noch viel wichtiger setzt man gleich Properities hat man nicht das Problem das man ein Feldtyp nicht zu einem Properity umwandeln kann. In gewissen Fällen werden diese nähmlich benötigt. Zum Beispiel wenn man sie validieren möchte.
Sie biete noch einige weitere Vorteile aber die bekommt man selbst zu spüren sobald man mit ihnen Arbeitet.
Seit der Version 3.0 des netFrameWorks ist es sehr einfach geworden solche Properities zu definieren.
So sah es vor 3.0 aus:
Alles anzeigen
Wesentlich kürzer und einfacher dank der Automatic Properities sieht es seit 3.0 so aus:
Alles anzeigen
Kommen wir zu der viel zu wenig gestellten Frage welche Konfigurationsdateitypen man nutzt. Viel zu oft werden Konfigurationsdateitypen wie xml und weitere verwendet.
Gravierender Nachteil dieser ist. Das sie sehr lange brauchen bis sie ausgewertet/ausgelesen wurden.
Kommen wir also zu den Binären Dateitypen.
Bei diesen Dateitypen gibt es keine Formatierung diese bestimmt ihr nähmlich selber. Es wird nur das geschrieben was geschrieben werden muss.
Also die Größe des Blocks. Evt der name des aktuell gelesenen Blocks die Anzahl der Blocks und den Inhalt des Blocks.
Erstellen kann man solche Dateien kinderleicht.
Hier ein Beispiel für die LeseMethode die Schreibmethode wäre einfach der gegengesetzte Writer statt reader:
Alles anzeigen
Binäre Datentypen haben also kurz zusammen gefasst den Vorteil. Sie sind nur das was sie sein sollen. Sind sehr schnell verarbeitbar und dafür das sie schwer lesbar sein mögen wir unroutinierte Nutzer. Ist es doch durchausmöglich Programme zum bearbeiten dieser zu schreiben. Mit nahe zu nicht vorhandenem aufwand. Oder man schreibt gleich einen Converter der zum Beispiel ne xml Datei in eine Binäre Datei umwandelt.
Und wie ichbinniemand bereits sagte ebenfalls sehr wichtiger Punkt: die Programmierer regel #1: Vertraue niemals dem User.
Der user kann jeder zeit etwas versuchen zu ändern, sei es bewusst oder unbewusst, binäre dateien machen das ganze schon schwieriger
Ein Blick hierrein lohnt sich garantiert noch einige male da ich ihn erweitern werde!
Inhalt
Get/set Variabeln (Properities)
Binary/Ascii? Which should i use?
Get/set Variabeln (Properities)
Get/set Variabeln (Properities)
Binary/Ascii? Which should i use?
Get/set Variabeln (Properities)
Kommen wir erst mal zu den getter/setter Variabeln. Auch Properities genannt.
Es handelt sich dabei scheinbar um ganz normale Feldtypen. Sind sie aber nicht!
Sie bieten viele Vorteile gegenüber normalen Feldtypen.
Man kann sie im Gegensatz zu Feldtypen jederzeit einfach aussetzen.
Und noch viel wichtiger setzt man gleich Properities hat man nicht das Problem das man ein Feldtyp nicht zu einem Properity umwandeln kann. In gewissen Fällen werden diese nähmlich benötigt. Zum Beispiel wenn man sie validieren möchte.
Sie biete noch einige weitere Vorteile aber die bekommt man selbst zu spüren sobald man mit ihnen Arbeitet.
Seit der Version 3.0 des netFrameWorks ist es sehr einfach geworden solche Properities zu definieren.
So sah es vor 3.0 aus:
Quellcode
- public Crypt crypt;
- private int sessionId;
- public int SessionId
- {
- get { return sessionId; }
- set { sessionId = value; }
- }
- public Socket socket { get; set; }
- public AsyncCallback callback;
- private string ip;
- public string Ip
- {
- get { return ip; }
- set { ip = value; }
- }
- private Account account;
- public Account Account
- {
- get { return account; }
- set { account = value; }
- }
- private SessionKey sessionKey;
- public SessionKey SessionKey
- {
- get { return sessionKey; }
- set { sessionKey = value; }
- }
Quellcode
Binary/Ascii? Which should i use?
Kommen wir zu der viel zu wenig gestellten Frage welche Konfigurationsdateitypen man nutzt. Viel zu oft werden Konfigurationsdateitypen wie xml und weitere verwendet.
Gravierender Nachteil dieser ist. Das sie sehr lange brauchen bis sie ausgewertet/ausgelesen wurden.
Kommen wir also zu den Binären Dateitypen.
Bei diesen Dateitypen gibt es keine Formatierung diese bestimmt ihr nähmlich selber. Es wird nur das geschrieben was geschrieben werden muss.
Also die Größe des Blocks. Evt der name des aktuell gelesenen Blocks die Anzahl der Blocks und den Inhalt des Blocks.
Erstellen kann man solche Dateien kinderleicht.
Hier ein Beispiel für die LeseMethode die Schreibmethode wäre einfach der gegengesetzte Writer statt reader:
Quellcode
- public Modifiers ReadModifiers()
- {
- Modifiers mod = new Modifiers();
- SimpleModifier simple;
- int smallcount = Readbyte();
- for (int k = 0; k < smallcount; k++)
- {
- simple = new SimpleModifier();
- simple.Name = Readbyte();
- simple.Bonus = Readbool();
- simple.Value = Readint32();
- mod.Add.Add(simple);
- }
- smallcount = Readbyte();
- for (int k = 0; k < smallcount; k++)
- {
- simple = new SimpleModifier();
- simple.Name = Readbyte();
- simple.Bonus = Readbool();
- simple.Value = Readint32();
- mod.Sub.Add(simple);
- }
- smallcount = Readbyte();
- for (int k = 0; k < smallcount; k++)
- {
- simple = new SimpleModifier();
- simple.Name = Readbyte();
- simple.Bonus = Readbool();
- simple.Value = Readint32();
- mod.Rate.Add(simple);
- }
- smallcount = Readbyte();
- for (int k = 0; k < smallcount; k++)
- {
- simple = new SimpleModifier();
- simple.Name = Readbyte();
- simple.Bonus = Readbool();
- simple.Value = Readint32();
- mod.Rate.Add(simple);
- }
- MeanModifier mean;
- smallcount = Readbyte();
- for (int k = 0; k < smallcount; k++)
- {
- mean = new MeanModifier();
- mean.Name = Readbyte();
- mean.Bonus = Readbool();
- mean.Min = Readint32();
- mean.Max = Readint32();
- mod.Mean.Add(mean);
- }
- return mod;
- }
Und wie ichbinniemand bereits sagte ebenfalls sehr wichtiger Punkt: die Programmierer regel #1: Vertraue niemals dem User.
Der user kann jeder zeit etwas versuchen zu ändern, sei es bewusst oder unbewusst, binäre dateien machen das ganze schon schwieriger