Dariusz quatscht

Web Development on Microsoft's Platform

April, 2009

Navigation
Posts
  • Dariusz quatscht

    Visual Basic for Applications Language Specification

    • 2 Comments

    Haben Sie gewußt das es eine veröffentlichte Sprachspezifikation von VBA gibt? Ich habe das zufällig auf einem internen Verteiler gelesen und dachte mir das es vielleicht noch mehr Leute nicht wissen. Enthält im übrigen auch die formale Grammatik von Visual Basic 6.

    Hier geht es zur VBA Language Specification.

  • Dariusz quatscht

    Da bin ich jetzt aber Baff!

    • 1 Comments

    1&1 bietet für Studenten ein dediziertes Windows Server 2008 Server Hosting an. Das gibt es zwar schon ein länger doch seit kurzem für diesen unglaublichen Preis.

    shot1

    Mehr Informationen hier.

  • Dariusz quatscht

    Rundumschlag in 5 Tagen

    • 1 Comments

    Sich in Technologien einzuarbeiten kostet Zeit, so ist es hilfreich während der Einarbeitungsphase auf Praxis Know-How zurückgreifen zu können. Momentan bietet DevelopMentor in Zusammenarbeit mit thinktecture einen Kurs in Deutschland zum Thema “Service-Orientierung heute und morgen” an. Mehr Informationen gibt es auf dem Blog von Dominick Baier.

  • Dariusz quatscht

    TechTalk im Juni: Parallele Programmierung mit Visual Studio 2010 und Intel® Parallel Studio

    • 7 Comments

    Im Juni darf ich mal wieder auf TechTalk Tour gehen. Diesmal jedoch ist es ein wenig anders als sonst. Ich habe Begleitung. Dr. Mario Deilmann von Intel wird mit mir zusammen einen TechTalk zum Thema Parallele Programmierung machen.

    Mario wird die Themen Intel® Parallel Studio und C++ Entwicklung abhandeln, während ich mich ganz auf die Parallel Framework Extensions für .NET fokussiere und zeige was alles im .NET Framework 4.0 und Visual Studio 2010 kommt. Ganz besonders freut es mich das Dresden mit in die Liste reingekommen ist. Ich habe es mir gewünscht dort zu sprechen, da ich schon ein paar Anfragen aus dieser Region hatte. Ich hoffe das dann auch entsprechend Leute in Dresden kommen und vielleicht Dresden somit zu einer Standard Lokation etabliert wird.

    Zur Anmeldung geht es hier:

    TechTalk Juni 2009: Parallele Programmierung mit Visual Studio 2010 und Intel® Parallel Studio

    Die Termine:

    08.06. Karlsruhe

    09.06. München

    15.06. Köln

    22.06. Hamburg

    29.06. Berlin

    30.06. Dresden

  • Dariusz quatscht

    Empfehlung: Entity Framework Learning Guide von Zeeshan Hirani

    • 2 Comments

    Zeeshan Hirani hat einen Umfangreichen Learning Guide zum ADO.NET Entity Framework geschrieben. Auf knapp 500 Seiten gibt es Problemstellungen und die passenden Lösungen dazu. Durch den Aufbau kann man im Inhaltsverzeichnis das Thema rauspicken das einen Interessiert und seperat die Problemstellung und Lösung nachvollziehen. Dazu gibt es auch noch ein komplettes Beispielprojekt. Der Guide selbst wurde schon im Dezember veröffentlicht, jedoch bin ich erst vor kurzem darauf hingewiesen worden und wolllte das auch gleich in meinem Blog weitergeben.

    Blog Post: Contributions to Entity Framework Community

    PDF: Entity Learning Guide

    Samples: Complete Project with Databases

    Zeeshan, Thank you for this contribution!

  • Dariusz quatscht

    Meine erste FullTrust Windows Azure Anwendung

    • 1 Comments

    ist nun publiziert und damit von jedem erreichbar. Ich habe die Anwendung auf zwei Knoten gehostet und das Load Balancing funktioniert auch.

    shot1

    Die Anwendung die ich drauf gestellt habe läuft im FullTrust Mode und hat somit Zugriff auf Umgebungsinformationen wie z.B. den Maschinennamen und die momentan laufenden Prozesse. Mich hat es immer schon interessiert wieviele Prozessoren die Maschinen haben und welche Prozesse auf den Maschinen laufen die zum Hosten für Windows Azure genutzt werden. Die Daten sind zwar ein wenig ernüchternd, aber ich nehme an das dies noch am CTP liegt. Grafisch nicht hübsch, aber erfüllt vollkommen seinen Zweck.

    shot2

    Wer Lust hat kann selber mal einen Blick auf die Anwendung unter http://blabber.cloudapp.net werfen.

  • Dariusz quatscht

    Neue CTPs – MEF und Velocity

    • 0 Comments

    Zwei neue CTPs sind heute erschienen.

    cc298427_GettingStarted(en-us,MSDN_10)

    Velocity CTP 3

    Velocity ist ein verteilter Cachespeicher der beliebig viele Maschinen zu einem logischen Cachespeicher vereinigt. Wenn man also im Keller noch eine Menge alter Hardware rumfahren hat, könnte man sich überlegen die mal zu reaktivieren (Voraussetzung für Velocity ist allerdings .NET 3.5 SP1 + Powershell)

    Zusammenfassend bringt dieser CTP

    • Cache Notifications
    • Cluster Management und Lead Hosts
    • Performance Verbesserungen (nun macht es Sinn mal einen POC in Sachen Geschwindigkeit zu machen)
    • Sicherheitsverbesserung durch Nutzung des Network Service Accounts als Prozess Account
    • API Erweiterungen und Änderungen

    Download: Velocity CTP 3

    Weitere Informationen sind auf dem Velocity Team Blog zu finden.

    blocks 

    Managed Extensibility Framework CTP 5

    MEF ist ein Framework zum dynamischen Zusammenstellen von Anwendungskomponenten zur Laufzeit. Eine neue Beispielanwendung in diesem CTP, das MEF Studio, demonstriert den Einsatz von MEF.

    Download: Managed Extensibility Framework CTP 5

    Weitere Informationen gibt es auf der Codeplex Seite zu MEF.

  • Dariusz quatscht

    Webcast zu Mesh Enabled Applications erschienen

    • 0 Comments

    Soeben ist nun der 9. Teil der Serie Windows Azure Services erschienen: Live Services: Fokus Mesh Services.

    In erster Linie zeige ich in diesem Webcast wie das Live Operating Environment aufgebaut ist, wie man mit dem Ressourcen Modell programmiert und wie man eine Silverlight 2 Anwendung ins Live Mesh publiziert.

    Hier geht es zum Webcast Live Services: Fokus Mesh Services.

    Im nächsten Teil wird es um nochmal um die .NET Services gehen, konkreter um die .NET Service Bus (März CTP) Queues und Router Funktionen.

  • Dariusz quatscht

    WPF Twitter Client – digiTweet

    • 0 Comments

    Auf Codeplex gibt es nun einen Twitter Client der vom Look & Feel ein wenig an TweetDeck erinnert.

    shot1

    Sourcen und Binaries sind zu finden auf http://digitweet.codeplex.com.

  • Dariusz quatscht

    Improving Entity Framework Performance

    • 9 Comments

    I was really shocked when I saw this blog post: Entity Framework and LINQ to SQL Performance. I decided to download the performance test solution and try the tests myself. I did not changed any of the tests so far, I just added for my own interest NHibernate into the game as I think that it is the choice of Frameworks for Domain Driven Design.

    So, I was shocked again, as I saw my numbers in the chart:

    shot1

    The elapsed time was 4 times higher than with plain SqlDataReader. But more worse was the fact the the elapsed processor time was nearly 8 times higher. NHibernate was really good in performance compared to Entity Framework, but LINQ to SQL was still better.

    What was wrong? I couldn’t imagine that we had such an issue in data access using the Entity Framework. I took a look at the code. All test runs are looping 10000 times over the access method to retrieve the customers data. In this loop, each time a connection will be created and closed. Linq to SQL and Linq to Entities are using compiled queries, so, this optimization was already done. I also added in my tests a pre-generated Entity Framework view (using edmgen.exe) to enhance startup performance. Still those poor results.

    Here is the original code from the tests:

       1: public static List<CustomerResults> GetCustomers()
       2: {
       3:     using (NorthwindEntities ne = new NorthwindEntities())
       4:     {
       5:         return GetCustomersQuery(ne).ToList();
       6:     }
       7: }
       8:  
       9: private static Func<NorthwindEntities, IQueryable<CustomerResults>> 
      10:     GetCustomersQuery = CompiledQuery.Compile(
      11:         (NorthwindEntities ne) => from c in ne.Customers
      12:                                   select new CustomerResults
      13:                                   {
      14:                                       CustomerID = c.CustomerID,
      15:                                       CompanyName = c.CompanyName,
      16:                                       ContactName = c.ContactName,
      17:                                       ContactTitle = c.ContactTitle,
      18:                                       City = c.City,
      19:                                       Country = c.Country
      20:                                   });

    My guess was that the instantiation of the connection string could be the problem. Why? Because several things happen here. First, the EntityConnection which is created when not specifying any argument in the constructor of the typed object context class NorthwindEntities, has to read from the config file. I/O cost. Second, it has to read the metadata information, which is stored by default in the assembly as resource. Second performance cost. Here is my optimization approach. One of the overload constructors is taking an EntityConnection object. Guess what, you probably just use this one connection object during the whole life time of your application, so why not create it once and give it into the constructor. This does not mean that I open the connection beforehand, no, I just create the type EntityConnection and retrieve the meta information in the first call. From that, I reuse this instance, so no need anymore to retrieve the metadata information again.

    Here is the optimization in my code base:

       1: private static EntityConnection entityConnection;
       2:  
       3: public static void InitializeConnectionString()
       4: {
       5:     SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder();
       6:     sqlBuilder.DataSource = @"(local)\sqlexpress";
       7:     sqlBuilder.InitialCatalog = "NorthwindPerfTest";
       8:     sqlBuilder.IntegratedSecurity = true;
       9:     sqlBuilder.MultipleActiveResultSets = true;
      10:  
      11:  
      12:     EntityConnectionStringBuilder builder = new EntityConnectionStringBuilder();
      13:     builder.Provider = "System.Data.SqlClient";
      14:     builder.Metadata = "res://*/Customers.csdl|" +
      15:                        "res://*/Customers.ssdl|" +
      16:                        "res://*/Customers.msl";
      17:     builder.ProviderConnectionString = sqlBuilder.ToString();
      18:     
      19:     entityConnection = new EntityConnection(builder.ToString());
      20: }

    I have a static variable entityConnection which holds the reference on the object. In the constructor I just pass this reference:

       1: public static List<CustomerResults> GetCustomers()
       2: {
       3:     using (NorthwindEntities ne = new NorthwindEntities(entityConnection))
       4:     {
       5:         return GetCustomersQuery(ne).ToList();
       6:     }
       7: }

    Now I have difference numbers to show in my chart:

    shot2

    For this specific test scenario I cutted performance cost two times for the elapsed time and four times for the process elapsed time. Hope that helps.

Page 1 of 2 (16 items) 12