Visual Studio 2010 RC en Team Foundation Server 2010 RC

Vanaf vandaag (9 februari 2010) zijn beide producten te downloaden voor MSDN subscribers. Vanaf morgen (10 februari 2010) kun je ook zonder MSDN subscription downloaden.

De versies komen met een Go-live licensie.

Tijdens de Devdays van Microsoft zal er erg veel aandacht zijn voor hun nieuwe vlaggenschip! Schrijf je snel in (www.devdays.nl), want op-is-op.

Visual Studio Azure Cloud Services update

Zojuist heb ik de Visual Studio Azure Cloude Services februari update gedownload en geinstalleerd. Deze is alleen te gebruiken voor Visual Studio 2008 en Visual Studio 2010 RC (helaas is die nog niet te downloaden).

missingref0

Het was mij niet eerder opgevallen, maar sinds de november update van de Cloud tools is er een naamswijziging doorgevoerd. Microsoft.ServiceHosting is Microsoft.WindowsAzure gaan heten.

missingref1missingref2

Ook het diagnose gedeelte is aangepast. Had je voorheen de RoleManager nog nodig om iets naar een Log te schrijven, nu gebruik je gewoon de alombekende Trace functionaliteit van .NET.

  missingref3 missingref4

Waarom ontdekte ik dat nu pas? Sinds Visual Studio 2010 Beta 2 heb ik Visual Studio 2008 niet meer gebruikt voor Azure zaken. Maar na het installeren opende ik een reeds bestaand project gemaakt met een eerdere versie van de Cloud tools. Tja, dan zie je ineens rode kriebels en dat is vreemd bij gegenereerde code.

Wel werd mij duidelijk dat de toevoeging van de optie Resolve in Visual Studio 2010 bij een vergeten reference erg gemakkelijk is. Daar wen je heel snel aan.

missingref5

SQL Azure en Azure: Data Near / Data Away voorbeelden

Tijdens mijn voorbereidingen voor mijn praatje op het CodeCamp en het SDN event had ik twee demo’s in gedachten. Een demo waarbij de applicatie lokaal bij de gebruiker staat en de database een SQL Azure database is. En een demo waarbij de applicatie op Microsoft Azure draait en gebruik maakt van een SQL Azure database.

De Data Away demo (Applicatie lokaal en Data in de Cloud) ging gemakkelijk. Op de SQL Azure homepage zet je de firewall settings dat je jouw ip adres bij de SQL Azure database kan.

sqla_fwms1

Voor de Data Near (Applicatie en Data in de Cloud) had dat toch meer voeten in de aarde. Tijdens het ontwikkelen maak je gebruik van de Development fabric en dan gelden de Firewall regels voor Home. Vervelend is het dan ook als je na het deployen van je Azure applicatie het volgende scherm ziet.

sqla_fwms2

Je gaat dan op zoek in de documentatie van SQL Azure en daar staat dat je het vinkje “Allow Microsoft Services access to this Server” moet aanzetten. Tijdens mijn voorbereidingen leek dat niet te werken en moest ik het IP adres van de Azure cloud in de Firewall settings op te nemen.

sqla_fwms3

Dat wilde ik toch even een keer controleren. Dat het vinkje niet werkte, dat leek mij een bug te zijn. Dus heb ik het IP adres van de Azure cloud uit de Firewall setting gehaald en zie hier het werkte gewoon.

sqla_fwms4

Het bleek dus gewoon een bugje te zijn.

Het ontwikkelen voor de Cloud is lastig qua testen. Het deployen van een Cloud applicatie neemt nogal wat tijd in beslag. Bij de eerdere Azure versies was het zo, dat als de Azure beheer pagina aangaf klaar te zijn, dit in werkelijkheid nog niet zo was. Het deployen is nu wel een beetje veranderd, daarover later meer.

En als je dan gebruik maakt van een SQL Azure database, dan moet je dus wetenschap houden met het Microsoft Services vinkje.

SharePoint 2010 – WebPart development

Nadat ik mijn SharePoint 2010 ontwikkelomgeving opgezet had, begin ik aan het maken van een Visual Webpart. Niet te hoogdravend en zeker niet te moeilijk voor de eerste keer. Uiteraard wilde ik wel dat de naamgeving een beetje op orde was. Dus na een hernoemen van onderdelen en een succesvolle compile, kon ik mijn webpart gaan testen.

Met SharePoint 2010 is het ontwikkelen en testen van componenten wel een stuk beter. Na het coderen en builden van een WebPart kun je in de Visual Studio omgeving gewoon F5 doen. Automatisch wordt je naar de SharePoint omgeving geleid om een test pagina te maken. Op deze pagina kun je dan je Component plaatsen en testen.

Echter toen ik dat deed, kreeg ik onderstaande foutmelding.

safecollection2

Waar zou je dan moeten aangeven dat het safe was? Er wordt standaard een Strong Name key gemaakt bij de Solution. Is dat niet genoeg? Waar kun je dat nog meer instellen dan?

Na wat zoeken zag ik deze property tegen. Deze Folder property is onderdel van de WebPart properties.

safecollection

En tja in deze collection stond nog een niet aangepaste verwijzing. Nadat ik deze aangepast had

safecollection1

Oke, ik had kennelijk de Rename refactoring niet volledig genoeg gedaan. Weer wat geleerd.

SQL Azure Examples

Afgelopen zaterdag tijdens de CodeCamp heb ik een presentatie gehouden over SQL Azure. Daar hoorde twee voorbeeld applicaties bij. Er zijn namelijk twee mogelijkheden om de SQL Azure database te gebruiken:

  1. Data Far Away: de applicatie draait bij de gebruiker op zijn werkstation en de database staat in de Cloud.
  2. Data Nearby: de applicatie en de database draaien allebei in de Cloud.

Bij het eerste demo had ik een applicatie waarbij ik ook het inserten, updaten kun laten zien.

sqlazurefaraway

Voor de twee demo had ik ongeveer dezelfde applicatie. Maar doordat ik tegen wat issues aanliep en de deadline rap naderde, heb ik er niet teveel werk van gemaakt. Maar eigenlijk schaamde ik mij wel voor de applicatie.

sqlazurenearbyprev

Dus heb ik hem gisteravond toch maar even aangepakt en aangepast. Tenslotte geef ik 14 december deze presentatie nog een keer.

sqlazurenearby

Dat ziet er toch al een stuk beter uit 😉

Je mag ook kijken op http://marcelmeijer.cloudapp.net. Als er geen rijtjes meer zijn, dan heeft iemand ze allemaal weggegooid 😉

SharePoint 2010 Beta

Vanavond een VM-tje geinstalleerd met Windows 2008 R2, SQL Server 2008, Office 2010 Beta, SharePoint 2010 Beta, SharePoint Designer 2010 Beta en Visual Studio 2010 Beta, dat allemaal op 64 bits. Het geheel heeft 2 Gb aan geheugen en draait toch nog redelijk, maar ik heb nog niet te veel te gelijk gedaan.

Het installeren ging trouwens allemaal erg voorspoedig. SharePoint gaf wel een foutmelding, maar draaide daarna ogenschijnlijk gewoon.

Bij mijn eerste vlugge tour door SharePoint 2010 zag ik een paar opmerkelijke zaken voorbij komen. Zoals:

  • Central Administration: heeft een beetje het uiterlijk van het Control panel in Vista en Windows 7. Alle beheerzaken zijn als zodanig geordend.
  • Het developers dashboard (tijdens een sessie bij Sparked had ik hem al gezien), staat standaard uit, maar is wel erg handig.
  • SharePoint designer kun je via de Central Admin toelaten of weigeren. Bij SharePoint 2007 moest je dan nog in de duisteren diepte grutten en graaien.

Wat heerlijk al dat nieuwe spul. Jammer dat er zo weinig tijd is om echt te spelen.

devdashboard

spdesigner

TFS 2010 Beta 2

Goed zeg! Zojuist heb ik Team Foundation Server 2010 Beta 2 geinstalleerd. Dat gaat snel en eenvoudig. En ik heb het gewoon op mijn gewone werkstation geinstalleerd. Dus niet op een Server, maar gewoon op mijn Client pc met Windows 7. Daar heb ik SQL server 2008 op geinstalleerd en dat is de data tier van mijn TFS.

tfsweb

tfsadmin

Mooi he, al dat nieuwe spul.

VS2010 en .NET 4.0 – Dynamic

Variabelen moet je in .NET altijd netjes typeren.

orgdeclaraties

En ook als het datatype niet in de variablenaam staat (zoals sommige codeerstandaarden voorschrijven), dan weet je het datatype door de ondersteuning van Visual Studio. Niets aan de hand, voor iedereen duidelijk en overzichtelijk.

compilerhint

Maar sinds versie 3.0 is er een manier bijgekomen. Het keyword VAR werd geintroduceerd (niet te verwarren Variant in VB). Deze declaratie wijze wordt veel gebruikt bij Linq queries. Maar ook in andere situaties prima bruikbaar. Nog niets aan de hand. Je declareert een variabele van het type var en je moet hem gelijk initialiseren. Vervolgens doet de compiler net alsof je wel een datatype opgegeven hebt.

compilerhintvar

Wat er gebeurt, het werkelijke datatype wordt afgeleid van de initialisatie en kan dan natuurlijk niet meer wijzigen. Bij het compileren wordt deze optimalisatie doorgevoerd. Er gebeurt dus niet op runtime.

Zie deze foutmelding:

compvarstrint

Met versie 4.0 komt er een derde variant bij, namelijk het keyword Dynamic. Deze zal runtime bepalen van welk type een variabele is en daar naar acteren. Heel handig is situaties waarin je geen Code completion tot je beschikking hebt, zoals het gebruik van COM objecten. Als je, zoals in onderstaand voorbeeld een variabele declareert van het type dynamic, dan zal de compiler (bij de declaratie van een Class) aangeven het werkelijke type at runtime te resolven. Bij een simpele variabele zoals hierboven zal rode krinkeltje verdwijnen.

 compilerhintdynamic

Wat is het grootste verschil tussen de drie manieren dan? Performance is een verschil, het resolven van een Dynamic op runtime kost uiteraard tijd.

Zie hier mij voorbeeld. Ik heb een MyClass met 2 methoden.

 class

Ik heb een methode, die de drie varianten gebruikt en ik bereken het verstreken milliseconden. Als de twee regels met commentaar slashes zouden voor compiler errors zorgen.

 declaraties2

Het resultaat is dan, zoals verwacht. Het gebruik van het dynamic variant kost tijd.

 elapsedms

Ik ben benieuwd, hoe vaak dit keyword misbruikt gaat worden.