Galin Iliev's blog

Software Architecture & Development

Language comparison

I found some goods language syntax comparison sheets that can help you easily to write your algorithm in VB.NET even you are expert in C# (or vice versa). But remember: the most important things are algorithm and benefits for the users not which language you use! in other words if you have some genius thoughs it doesn't matter if you say them in English or in Bulgarian - people will understand you

Hope this helps

Visual Studio 2008 Beta 2, .NET FX 3.5 Beta 2, and Silverlight 1.0 RC

Well, well... The long waiting is over - Visual Studio 2008 Beta 2 is here (actually here :) )

You can download .NET 3.5  Redistributable too. Also Silverlight has its Release Candidate and it will be available for dowload in next day or two. 

It seems there is some trick with policy so remember:

After the Beta 2 installation has finished, you should run this script to ensure that the installation of .NET Framework 3.5 Beta 2 will not affect the development of ASP.NET AJAX 1.0 applications

Update: I am now installing Beta2 but these are new features for Web Development summarized on ScottGu blog:

VS 2008 Multi-Targeting Support

  • VS 2008 Web Designer and CSS Support
  • VS 2008 Nested Master Page Support
  • VS 2008 JavaScript Intellisense
  • VS 2008 JavaScript Debugging
  • If you have ever installed a previous version of "Orcas" or VS 2008 on your machine (either Beta1 or one of the CTP versions), you need to reset your VS 2008 settings after installing Beta2.  If you don't do this, you'll have an odd set of settings configured (some windows will be in the wrong place), and you'll potentially see some IDE performance slowness.  You can reset your settings by typing "DevEnv /resetsettings" on the command-line against the VS 2008 version of the IDE.

    How is this possible?!?!

    I am fighting with an interesting situation. I have code that when executed in VS2005 SP1 Web Application project gives one result and when same line executed in Immediate Window gives another result!?!?  Very weird.

    thi code lives in anonymous method and it is called though delegate by

    List<T>.FindAll(new Predicate<T>(filterDelegate));

    Does anyone have an idea?

    Orcas June CTP - new features

    I've found interesting blog post about changes in Orcas July CTP at dev guy. Here are they (copied directly):

    • IPOCO -- there's a lot more coming here to bring us closer to true POCO, but this is the first step in that direction and makes the key change to allow the creation of Entity classes that do not inherit from our base class.
    • ObjectContext.Detach() -- will detach an object from the ObjectStateManager associated with an object context so that it can be attached to some other context or reclaimed by the garbage collector
    • Multiple entity sets per type -- this is relatively esoteric, but it does exactly what its name says.  You can define a model which has more than one entity set with the same base type.  This is important because it enables models which work more naturally with various database models.  If you have two tables with the same schema (say "accounts" and "expired_accounts" or something), then you can define entitysets for each of them which use the same entity type rather than needing to create a different entity type which just happens to have all the same properties.  This resulted in a change to a number of the object context APIs -- strongly typed contexts, for instance, now have AddToEntitySetName methods (where EntitySetName is the actual name of each entity set).
    • Support for referential integrity constraints -- This allows you to define a key to one entity type which is made up, in part, of properties which are also in the key of another entity type.  The modeling scenario in the database is where a column is both a foreign key and part of a primary key.
    • Span -- this makes it possible to specify that a query not only return an entity but return some set of related entities in a single round trip and automatically hook-up the graph.  So, for instance, you could say that your customer query should also return the orders for each customer in a single round trip.  We also have an automatic query re-write feature for the object layer that enables a feature we call Relationship Span where queries that retrieve entities will under-the-covers also return relationship information if the relationship is an EntityReference (rather than a collection).  This is usually a quick operation since typically this relationship information is co-located in the relational database as a foreign key property, and it has the very useful property that for many cases entity graphs will automatically be hooked up as long as the relevant entities on either side of the relationship have been loaded.  So, for example, if I query for a set of customers and then I separately do a query for a bunch of orders--any of those orders that are related to those customers will automatically bring along the relationship info and connect the orders up to the customers they go with.
    • Transactions -- specifically integration with System.Transactions.
    • Serialization -- that is, entities are automatically generated with attributes that enable binary serialization.  Unfortunately EntityKeys do not yet serialize but that will be coming in a future CTP.
    • No more default constructors in code-generated classes -- I've already written about this in an earlier blog post.
    • Improvements to stored procedure support -- honestly I can't remember the details of this one just now, and since I'm sitting in the Denver airport where I have limited battery life on my laptop I'll delay looking it up for you.  If anyone is wondering, drop me a note and I'll get back to you.
    • Access to the underlying store connection -- You can now easily access the store connection from an EntityConnection which makes it much easier to go around the covers if you need to.  (But I must say I don't have to do that nearly so often now as I used to -- this framework is actually starting to work pretty well for writing apps, IMHO <grin>.)
    • Directory macros -- Makes it easier to specify where the metadata lives in hosted scenarios
    • Native SQL read-only views -- You've got to see one of the demos Tim Mallalieu runs where he shows the entity framework accessing sharepoint or some other schema that otherwise really doesn't fit the model.
    • UNICODE support in Entity SQL
    • Query plan caching and I'm pretty sure we do some metadata caching across app domains as well, but that may not be fully online yet in this CTP release.
    • Canonical functions in Entity SQL
    • Associations between sub-types -- This one is a biggy (as if the others aren't).  Before this change, the entity types that are on the ends of relationships had to be the base type of an entityset, but after this change you can define relationships between any types in the type hierarchy even if they aren't the base types.  So, for instance, if I have a hierarchy that has Customer and BigAccountCustomer, then I could create an entity type DiscountPolicy and a relationship that only relates BigAccountCustomers to DiscountPolicies not just regular customers.

    Orcas June CTP - is out there such CTP?

    The answer is yes! Definetely! Microsoft UK made a post:

    The Product Group have released an newer version of Visual Studio, but they aren't releasing it as a CTP. It is aimed at fixing a couple of problems for some targeted customers. The reality of this isn't tested or up to the quality of a proper CTP. You can still use this download, but it has some problems and it isn't supported for TFS. I would recommend waiting until Beta 2. Sorry for any confusion I have caused.

    You can download VPC image from 

    Breaking Changes in .NET Fx Libraries (Update: 7/11/2007)

    LINQ to SQL: INotifyPropertyChanged and Column properties have changed, which generates 100+ errors in small projects. You'll need to recreate your LINQ to SQL classes with the renamed LINQ to SQL Classes template.

    LINQ to SQL: Jim Wooley reports in a comment that the System.Data.Linq.AttributeMappingSource and System.Data.Linq.XmlMappingSource classes have moved to System.Data.Linq.Mapping.AttributeMappingSource and System.Data.Linq.Mapping.XmlMappingSource respectively. [Note: MappingSource changed to AttributeMappingSource and XmlMapping changed to XmlMappingSource, and namespace prefixes added.]

    LINQ to DataSet: The System.Data.DataTableExtensions namespace has moved from System.Data.Entities.dll to System.Data.DataSetExtensions.dll so you must change references.

    LINQ to XML: Fixing "Could not load type 'System.Linq.Func`2' from assembly 'System.Core, Version=, Culture=neutral, PublicKeyToken=b77a5c561934e089'." exceptions requires adding a reference to System.Linq.DataSetExtensions.dll. This is probably a temporary expedient for the June 2007 CTP.

    (via OakLeaf Systems )

    Windows Presentation Foundation labs

    I am on WPF and .NET 3.0 wave and I found some good labs that worths sharing. If you want to ramp up with WPF take a look

    Part 1: Creating XAML Browser Applications with Microsoft® Visual Studio 2008™
    Part 2: Creating XAML Browser Applications with Microsoft® Expression Blend™
    Part 3: Animations and Media with Microsoft® Expression Blend™

    Thanks to Charles Sterling for nice labs

    (via Ozzie Rules Blogging - there is a sample room xbap application)

    Transactional NTFS

    Can you name the common things (logical ones) between file system storage and RDBMS? For sure both stores user's and system's data. For historical reasons the engines are quite different but can they be brought closer with current level of technologies? Why not?! Microsoft has made an attempt with WinFS but this adventure threatened Windows Vista relesase and was dropped from Vista. This mean we won't see it in Windows Server 2008 either as they share same core AFIAK.

    But still we can have small good even now - transactions in file system or trade name - Transactional NTFS (TxF)

    There is a good article explaining TxF in July 2007 issue of MSDN Magazine.

    The easiest use of TxF is with native code. Being .NET developer this isn't that good for me but in the article's sample code is placed a basic wrapper you could start with.

    If you're interested but too lazy to read take a look at Channel9 screencast Developer, Meet Server #1 - Transactional NTFS

    Visual Studio 2008 (When to expect?)

    It is amazing how many improvements was made from VS 2003 to VS 2005. I remember the time when I was so anxious to touch new VS 2005. MS guys are working hard (and smart) to let us waiting new VS 2008 (Orcas) in same manner.

    ScottGu was very responsive to users' comments on his blog entry VS 2008 Nested Master Page Support and shares

    VS 2008 Beta2 should be available for free download in the next three weeks. It will support a go-live license (Posted on July 09, 2007)

    Also the date of big launch is known... as  Windows Server 2008, Visual Studio 2008 and Microsoft SQL Server 2008 Joint Launch Announced. It is Feb 27, 2008 in LA.

    While the launch events are scheduled to kick off on February 27, 2008, Visual Studio 2008 will be released before the end of the year.