.NET Blog   ·   .NET Casts   ·   .NET GUI Foren   ·   .NET BlogBook   ·   WPF Blogger   ·   visual studio one   ·   ASP.NET professional

  • ACHTUNG - NEUES BLOG

    Ab sofort steht unter http://devtyr.norberteder.com mein neues Blog zur Verfügung. Dieses Blog wird nicht weiter betreut, bleibt aber erhalten. Neue Eintr%auml;ge erfolgen nur mehr im neuen Blog. Kommentare werden ebenfalls nicht mehr behandelt. Wer weiterhin meinen Einträgen und Aktivitäten folgen möchte, möge bitte RSS-Feeds, Verlinkungen etc. an die neue Location anpassen.
Download .NET Essentials Installer
Trickkiste

Encryption-Framework BouncyCastle

27.10.06 - .NET, Allerlei, Security
Beitrag von Norbert Eder
 Vor Jahren hatte ich aufgrund eines Projektes mit der Java-Version von Bouncycastle zu tun. Stichwörter: S/MIME, PGP. Auch damals gab es schon eine rudimentäre C#-Umsetzung [1], welche ich hier nun einmal kurz erwähnen möchte.

Am 24. Oktober 2006 (also vor ein paar Tagen) gab es ein weiteres Beta-Release, welches ansich schon recht gut funktioniert und auch zahlreiche Funktionalitäten bietet. Wer also Bedarf an einem Encryption-Framework hat, tut gut daran, sich BouncyCastle näher anzusehen.

[1] BouncyCastle C# Framework
  Kommentar hinzufügen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


Warum mir .NET so gefällt ..

21.09.06 - .NET, Allerlei
Beitrag von Norbert Eder
 ... muss ich an dieser Stelle los werden, auch wenn der eine oder andere diesen Beitrag sicherlich kritisieren wird. Kein Problem, nur zu.

Aufgefallen ist einigen, dass es derzeit wenig Postings in meinem Blog gibt - zumindest wenn man den "Anfragen" via Mail Glauben schenken darf. Fakt ist, dass ich derzeit tief in einem C++ Projekt stecke und daher relativ wenig Zeit für Postings bleibt. Nun war ich ja noch nie der große Freund von C++. Natürlich, die Sprache hat unbedingt seinen Wert, das will ich nicht in Frage stellen. Was mich daran jedoch stört sind folgende Punkte (und diese beschreiben, warum mir .NET so behagt):

1. Strings

In .NET ist es einfach. Es gibt einen Char und einen String. Der String ist ein konstanter Char-Array und das war es dann im Grunde auch schon wieder, ohne hier viel Details zu diskutieren. Für den Entwickler absolut gefahrlos einsetzbar. Unter C++ hätten wir dann char*, wchar_t*, char, wchar_t, std::string, std::wstring, BSTR, CComBSTR, CString usw. Hier stellen sich mir zumindest zwei Fragen:

a) Warum soviele? Jeder verhält sich ein wenig anders. Nehmen wir uns den BSTR als Beispiel. Hier finden SysAllocString() und SysFreeString() ein wenig Arbeit vor. Speicher muss ja reserviert und freigegeben werden. Ach, dann nehmen wir CComBSTR. Ist das gleiche und die Reservierung und Freigabe werden automatisch übernommen. Und Konvertierungen von String in einen anderen Typ? Unter .NET einfach. Int32.Parse(), Double.Parse() etc. Muss man als Anfänger natürlich auch erst finden, aber dafür ist es dann lesbar. Unter C++? atoi, _wtoi etc. Was das ist? Ganz easy, ANSI To Integer und Wide Char to Integer (also Unicode).

b) Warum die Unterteilung in ANSI-Strings und Unicode-Strings? Das Betriebssystem arbeitet seit Windows NT intern ohnehin nur mit Unicode. Daher ist es recht sinnlos, diese in ANSI zu konvertieren und dann wieder nach Unicode usw.

2. Syntax - Fingerkrämpfe

Unterschiedliche Delimiter für Namespaces, Methoden, Pointer find ich im Grunde ja nicht so schlecht. Schließlich will man ja auch wissen, womit man arbeitet. Aber muss es :: sowie -> oder aber nur . sein? Der Doppelpunkt geht ja noch, aber -> wird dann schon etwas anstrengend mit der Zeit. Ein entsprechender Entwickler wird seinen Pointer ohnehin pMyPointer benennen (die Betonung liegt hier am kleinen p). Die Namespaces selbst, sollte ohnehin bekannt sein, also warum nicht auch nur . verwenden? Naja, man möchte ja mehr und kompliziert tippen. Erinnert mich irgendwie an Perl ;-)

3. Fehlende Standard-Libraries

C++ gibt es seit 1979, zumindest liegen in diesem Jahr die Anfänge durch Bjarne Stroustrup. Viel hat sich seitdem getan, viele Libraries kamen hinzu, aber warum beispielsweise keine Library für Regular Expression? Ja, CAtlRegExp wäre ein Beispiel aus der ATL, aber das ähnelt auch mehr einem Krampf als einer guten Regular Expression Library. Eigentlich ein Standard-Werkzeug für jeden Entwickler findet man beim Thema C++ hier eine hervorragende Auswahl: Boost, GRETA und pcre. Und alle haben ihre Macken.

4. Void* / Object

Unter .NET gibt es den Typ object, der die Grundlage für alle Objekte bildet. Mittels der Methode getType() bekommt man überall auch ganz nett heraus, um welchen Typ es sich wirklich handelt. Weiß man unter C++ nicht genau welchen Typs daherkommende Daten sind, stopft man sie in einen void Pointer. Gut. Soweit klar. Und jetzt? Keine Info darüber ob da jetzt ein Date, String, int, double etc. drinnen steckt. Zumindest ist mir dazu keine Möglichkeit bekannt. Wer also eine Idee hat, bitte einen Kommentar hinterlassen.


Einige Punkte für diese Liste hätte ich noch, jedoch möchte ich meine Leser nicht überstrapazieren. Mein Conclusio ist die Freude darüber, dass ich mich bald wieder voll und ganz .NET hingeben kann.

PS: Ich möchte natürlich darauf hinweisen, dass mir die grundlegenden Unterschiede zwischen C++ und .NET durchaus bewusst sind, ebenfalls auch die Einsatzgebiete. Nicht, dass ich falsch verstanden werde.
  2 Kommentare - 1349 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


C#: Google Web API schon getestet?

16.02.06 - .NET, Allerlei
Beitrag von Norbert Eder
 Nein? Dann wird's - wie bei mir - nun absolut höchste Zeit.

Als ersten Schritt muss man sich die Google API unter http://www.google.com/apis/ downloaden und sich einen Account erstellen. Nach dem Account bekommt man eine Google ID zugesendet, mit der 1000 Requests pro Tag durchgeführt werden können.

Nun, als nächsten Schritt einfach ein neues Projekt im Visual Studio erstellen. Nun eine Web-Referenz auf http://api.google.com/GoogleSearch.wsdl erstellen und dem Teil am besten den Namen Google geben. Nun ist das wildeste erledigt.

Eine Abfrage sieht dann in weiterer Folge so aus:


Google.GoogleSearchResult r = s.doGoogleSearch(googleID, keywords,
0, 10, false, "", false, "", "", "");
int estResults = r.estimatedTotalResultsCount;

Google.ResultElement[] elements = r.resultElements;


Damit lässt sich dann schon etwas machen. Und beispielsweise könnte eine sehr einfach Abfrage-Anwendung so aussehen:



  3 Kommentare - 1796 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL


C# und Schach ...

30.11.05 - .NET, Allerlei
Beitrag von Norbert Eder
 Wer mit C# arbeitet und in der Freizeit auch die eine oder andere Schach-Partie spielt, der kann sich auf CodeProject eine kleine, nette Schach-Implementierung ansehen.

Eigentlich ganz interessant ...
  Kommentar hinzufügen - 7 mal angesehen   |  0 Trackbacks   |  Permalink  |  Trackback-URL



Zurück