Wer sich mit der Entwicklung von Webapplikationen herumschlägt, sollte unbedingt JSter kennen.

Wer sich mit der Entwicklung von Webapplikationen herumschlägt, sollte unbedingt JSter kennen.

Am Donnerstag, dem 05.07. haben wir Constantin Klein aka Kostja in Wuppertal zu Gast. Beginn ist um 18:30 Uhr in den Räumlichkeiten der netzkern AG.
Mit dem Release des SQL Server 2012 steht nun die nächste Major Version des Microsoft Datenbankservers zur Verfügung. Doch was sind die wichtigsten Neuerungen? Wo ergeben sich neue Lösungsszenarien und was ist insbesondere für Entwickler von Interesse? Diese Session soll einen kompakten Überblick über viele Neuerungen geben und dabei die Highlights für Entwickler besonders hervorheben.
Constantin arbeitet als Anwendungsarchitekt und Entwickler bei der Freudenberg Forschungsdienste KG. Dort beschäftigt er sich hauptsächlich mit dem Design und der Entwicklung von Web-Informationssystemen und Datenbanken. Seit seinem Studium der Wirtschaftsinformatik gilt sein besonderes Interesse darüber hinaus allen aktuellen Themen im Microsoft .NET Umfeld, insbesondere aber dem Thema Softwarearchitektur.
Er ist MCSD, MCITP Database Developer und MCPD Web + Enterprise Application Developer. 2010, 2011 und 2012 wurde er von Microsoft zum Most Valuable Professional (MVP) für SQL Server ernannt.
Er engagiert sich zusätzlich im Vorstand des Just Community e.V. (http://www.justcommunity.de) und als Leiter der .NET User Group Frankfurt (http://www.dotnet-ug-frankfurt.de).
Sein Blog finden Sie unter: http://kostjaklein.wordpress.com
Am 31.05. haben wir Albert Weinert (@DerAlbert) zu Gast, der uns ab 18:30 Uhr einen Überblick über das Framework SignalR verschaffen wird. Veranstaltungsort ist die netzkern AG in Wuppertal.
SignalR ist eine integrierte Client- und Server-Bibliothek, die browserbasierten Clients und ASP.NET-basierten Serverkomponenten die bidirektionale und mehrstufige Kommunikation ermöglicht. Anders ausgedrückt ist die Kommunikation nicht auf einen einzelnen, statusfreien Datenaustausch des Typs Anforderung/Antwort beschränkt, sondern sie dauert an, bis sie ausdrücklich beendet wird. Die Kommunikation findet über eine dauerhafte Verbindung statt, wobei der Client mehrere Nachrichten an den Server senden kann, auf die der Server antwortet. Und vor allem kann der Server asynchrone Nachrichten an den Client senden.
Falls du teilnehmen möchtest, würde ich dich bitten via Facebook an der Veranstaltung teilzunehmen. Alternativ genügt auch ein Kommentar unter diesem Artikel.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
Viele Zeilen der Methode GetUserById entfallen in diesem Beispiel auf das obligatorische Cachegehampel (Zusammensetzen eines eindeutigen Cache-Keys, Instanz im Cache suchen, Instanz im Cache ablegen). Die eigentliche Logik ist recht überschaubar.
Was kann man also tun, um diesen Overhead zu reduzieren?
Eine Möglichkeit wäre z.B. das AOP-Framework PostSharp und ein passender Cache-Aspekt. Finde ich sehr interessant und werde ich mir bei Gelegenheit definitiv näher ansehen.
Alternativ kann ein ähnliches Verhalten mit Unity oder Castle Windsor und deren Interceptoren erreicht werden.
“Meine Lösung” sieht es momentan vor, dass ich den MemoryCache (seit .NET 4.0 Bestandteil des Frameworks) und eine Extension Method verwende. Aus der oben gezeigten Klasse wird:
1 2 3 4 5 6 7 | |
Der Zugriff auf die Methode könnte nun wie folgt aussehen:
1
| |
ValueFor()-Extension Method:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | |
Innerhalb der Extension Method wird nun ein Cache-Key auf Basis von Typname, Methodenname, Parametern und der aktuellen UI-Culture generiert. Wird das dazugehörige Objekt im Cache gefunden, wird es ohne Umwege zurückgegeben. Falls nicht, wird die übergebene Expression ausgeführt und dessen Rückgabewert unter dem generierten Cache-Key gespeichert.
Ich habe in den letzten Tagen erstmals das ”Bundling & Minification“-Feature in einem Projekt verwendet und bin bis dato eigentlich auch sehr zufrieden damit. Etwas unpraktisch finde ich allerdings die Tatsache, dass sämtliche Bundles hart im Code verdrahtet werden müssen.
Auf GitHub findet sich nun ein kleines Repository von mir, welches die Registrierung der Bundles in der web.config ermöglicht:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
Beim Start der Applikation müssen die Bundles lediglich via RegisterConfigurationBundles() registriert werden:
1 2 3 4 5 6 | |
Vielleicht kann der ein oder andere ja etwas damit anfangen.
Die Tage wollte ich eine neue Datenbank in meinem lokalen SQL Server anlegen. Eigentlich keine wilde Sache: Management Studio auf, Verbindung mittels Windows Authentication herstellen, Datenbank anglegen, ggfs. Rechte vergeben, Management Studio zu. Fertig!
Dieses Mal erhielt ich jedoch beim Versuch die Datenbank anzulegen die Meldung: CREATE DATABASE permission denied in database 'master'.

Grund für dieses Problem war die Tatsache, dass mein Windows-User – warum auch immer – nicht mehr Mitglied der Rolle sysadmin war.
Falls das Post-it mit dem Passwort des sa-Users nicht mehr am Monitor klebt, bleibt wahrscheinlich nur noch eine Neuinstallation.
Alternativ könnte es auch mit den folgenden Schritten funktionieren:

Standardmäßig beschränkt der IIS die maximale Dateigröße für *.config-Dateien auf 250KB. Wird dieses Limit überschritten, erscheint die abgebildete Fehlermeldung.
In einem aktuellen Projekt sollten viele (sehr viele!) alte URLs gerettet werden und mittels URL Rewrite auf die neuen, korrespondierenden Zielseiten weitergeleitet werden. Aufgrund der immensen Anzahl an Rewrites wurden die 250KB relativ schnell erreicht und auch die Auslagerung in eine eigene Datei via configSource-Attribut hat hier nicht helfen können.
Die Lösung des Problems war ein einfacher Eintrag in der Registry, der unter HKLM\SOFTWARE\Microsoft\InetStp\Configuration angelegt werden musste. Klingt dreckig, funktioniert aber ;)

Weitere Informationen zu diesem und weiteren IIS-relevanten Registryschlüsseln gibt es auf einer Support-Seite von Microsoft.
Das OWASP hat 2010 eine Liste mit den Top 10 Sicherheitslücken von Webseiten/Webapplikationen veröffentlicht (eine neuere Version existiert bis dato nicht):
Troy Hunt hat kurz nach Erscheinen der Liste eine Blogserie gestartet, in der er all diese Themen innerhalb von ASP.NET- und ASP.NET MVC-Anwendungen thematisiert. Ein PDF, welches alle Artikel beinhaltet, kann hier heruntergeladen werden.
Definitiv lesenswert!
Am 12.04. bekommen wir Besuch von PostSharp MVP Johannes Hoppe. Beginn ist um 18:30 in den Räumlichkeiten der AUTOonline GmbH Informationssysteme (Karte).
Als Entwickler sind wir täglich bemüht hochwertigen und sauberen Code zu produzieren. Für viele Probleme kennen wir bewährte Patterns und Vorgehensweisen.
Doch manche Belange – wie etwa Logging, Exception Handling, Validierung oder Caching – liegen schnell unsauber verstreut im gesamten Projekt herum.Johannes Hoppe spricht von seiner Sicht über Clean-Code und die Grenzen von objektorientierter Programmierung. Anhand praktischer Bespiele zeigt er, wie man mit dem AOP-Framework Postsharp elegante Modularisierungsansätze erhält.
Der Vortrag richtet sich an interessierte Einsteiger in das Thema AOP mit .NET.
Alle Beispiele können Anhand der ASP.NET MVC Demo-Applikation WebNoteAOP nachvollzogen werden.
Seit einiger Zeit verlinkt Google in den SERPs auf die Google+-Profile von Autoren. Dies geschieht aber keinesfalls willkürlich, sondern lässt sich mit wenigen Schritten auch für die eigene Seite bewerstelligen.

Möchte man ebenfalls mit Bild in den Suchergebnissen auftauchen, sind zwei einfache Schritte nötig.
Als erstes muss auf der gewünschten Seite bzw. dem Dokument ein Link zum Google+-Profil des Autors vorhanden sein. Wichtig hierbei ist der angehängte ?rel=author Query-String-Parameter.
1
| |
Anschließend muss die Root-URL der Zielseite im Google+-Profil des Autors eingetragen werden. Hierzu einfach in Google+ einloggen und in die Sektion “Über mich” wechseln. Danach unter Angabe eines Namens (z.B. Name der Seite) und der URL einen neuen Eintrag unter ”Macht mit bei” hinzufügen.

Mit dem Rich Snippets Testing Tool lässt sich überprüfen ob die Implementierung geglückt ist.

Werden sowohl das Autoren-Bild, als auch die Meldung ”Verified: Authorship markup is verified for this page.” angezeigt, dann heißt es warten. Warten auf den Googlebot, der diese Änderung hoffentlich übernimmt und in den SERPs darstellt.

Falls das Rich Snippets Testing Tool etwas zu beanstanden hat, liefert es in der Regel recht eindeutige und hilfreiche Fehlermeldungen zurück.