5 tips til hurtigere udvikling af Dynamicweb moduler

Udvikler du moduler til Dynamicweb, men syntes det går lidt sløvt? Kan du ikke få lov til at debugge dine moduler ordentligt? Du sidder måske enda og flytter dine assemblies manuelt? Så kan nedenstående tips være noget for dig.
#1 Sæt flere Dynamicweb løsninger op på samme IIS
Det er super let at sætte flere forskellige løsninger op på din egen Windows maskine, og med flere løsninger følger muligheden for at udvikle de samme typer moduler/extenders uden at skulle skifte rundt på IIS’en eller andet.
Du ved med garanti hvor du kan hente Dynamicweb applikationen, så det springer jeg over.
Start i stedet med at sætte en løsning op et sted på din maskine. jeg bruger normalt denne struktur til mine løsninger:
c:\developer\dynamicweb\solution1\Files
c:\developer\dynamicweb\solution2\Application
c:\developer\dynamicweb\solution2\Files
Når du har filerne på plads skal du starte IIS’en op og herefter skal du sættes et ny website op:

Læg mærke til at jeg har angiver ad.local i Værtsnavn feltet, værstsnavnet er det domæne som bliver knyttet på websitet, og det er ad.local jeg vil kunne skrive i min browser for at kalde løsningen frem. Her efter sætter der en virtuel mappe op til Files mappen, og så er IISen klar.
Når IIS’en er sat op, skal vi fortælle windows at når jeg skriver ad.local i min browser, så skal den kigge på min egen IIS, i stedet for ude på internettet. Til dette formål har windows en fil, som ligger gemt i Windows mappen “C:\Windows\System32\drivers\etc”. Filen hedder hosts og kan åbnes i notepad eller lignende.
Ved at indsætte følgende linie mapper du http://ad.local til din egen IIS
(lav en tabulering mellem IP’en og domænet.)
Gentag processen med de løsninger du har kørende på din maskine, og sørg blot for at dine lokale domæner er unikke.
Host filen kan også bruges til at teste om en host header er sat op på en ny webserver.
#2 Brug post-build event i Visual studio
Med post-build eventen i Visual studio, kan du bestemme hvad der skal ske når du har bygget dit projekt.
Benyt muligheden til at flytte dine Assemblies og Custom modules file over i din lokale løsning, eller jeres udviklings server. Så sparer du en masse tid og bøvl.
Du finder fanen “Build events” under properties på dit projekt.

På fanen har du mulighed for at indtaste hvilke kommandoer som skal kører før og/eller efter du bygger dit projekt. Det er dog Post-build eventen som for mig er mest interessant.
Klik på “Edit Post-build …” for at bringe en lille editor frem hvor i du kan se hvilke makroer du er til rådighed.

Ved at benytte XCOPY kommandoen kan man kopiere de filer og mapper over i vores DW løsning som man har behov for.
Hver kommando skal stå på en linie for sig selv. men så er det også bare at gå i gang.
Med nedenstående kald, kopiere jeg f.eks. min byggede assembly, samt mine modul filer over i min lokale Dynamicweb løsning.
XCOPY $(ProjectDir)CustomModules\MyModule\*.* C:\Developer\Dynamicweb\Solution1\Application\CustomModules\MyModule
#3 Attach to process er din ven
Med Attach to process kan du hooke Visual Studio op mod et websitet som kører på din lokale IIS, og på den måde kører debugging på en Dynamciweb løsning.
Du finder Attach to process under menuen “Tools -> Attach to process”, du kan også tryke “ctrl + alt + p”, i dialogen skal du attache til processen w3p.exe.

Så snart du attacher til processen, vil Visual studio gå i debug mode og du kan nu indsætte breakpoints og arbejde med din lokal løsning som var den i normal debug mode.
#4 Visual studio macros FTW
Lav dig en makro som bygger dit projekt og attacher til w3p.exe, du bliver glad for det i længden.
Der er jo alligevel lidt langt ind til “Attach to process” og man skal jo scrolle lidt for at finde w3p.exe, og det skal gøres hver gang du har lavet en rettelse i din kode.
Med en makro, kan du optage en sekvens af handlingen og afspille dem så tit du lyster. Du kan knytte din makro på en menu eller en genvejstast så du har den lige ved hånden.
#5 Brug Dynamicwebs Visual studio templates
Dynamicweb har lavet Visual studio templates til mage af deres Extenders. Hvis du ikke allerede brugere dem, så kig forbi http://engage.dynamicweb-cms.com/Custom-Modules-397.aspx og hent dem.
Hvis du har problemer med at få dem til at fungere i VS2010, så hop forbi Imar Spaanjaars blog indlæg som beskriver hvordan du får det til at fungere.
#Bonus: Sæt dig ind i databasen
Nogle gange vil man komme til kort med API’et fordi det ikke helt gør som tror eller forventer, og så er det rart hvis man har godt styr på hvordan databasen er skruet sammen, da mange af API funktionerne hedder det sammen som tabellerne i databasen.
Hvis man skal f.eks. arbejder med eCommerce så er det helt klart et must at vide hvilke tabellen der bliver brugt, for du kan være sikker på at myProduct.save() ikke sætter alle de relationer som skal til for at dit produkt bliver vist
Afslutning
Hvis ikke du kendte til ovenstående tips, så håber jeg du har fået et par ideer til hvordan du kan klare rutine opgaverne lidt hurtigere, Og dermed får du mere tid til det der virkeligt er sjovt, at kode modulerne.
Hvis du kunne bruge mine tips, eller du har andre gode råd så skriv en kommentar.


