Jag har byggt ett CMS i ASP3.0 som rullar på en win2003 server. Jag har lagt rätt mycket tid på att optimera och snabba upp koden och är rätt nöjd med hur fort sidorna genereras. Men det känns som jag börjar närma mig gränsen för hur mycket jag kan påverka hastighet osv genom kodoptimeringar. Alla fuktioner som ofta används ligger i en includefil och denna ligger på strax under 50kb. Därför har jag börjat fundera på om man kunde göra på något annat sätt för att ytterligare snabba upp det hela. 50kb kod måste ju ändå ta lite tid för servern att kompilera vid varje sidanrop. CMS'et växer också konstant och includefilen lär ju inte direkt bli mindre. Har försökt läsa lite om COM men inte hittat svar på alla mina frågor. Vad jag har förstått så kan ett färdigkompilerat COM-objekt snabba upp en hel del. Men vilka begränsningar har COM jämfört med vanlig VB-skriptkod? Hej, då du inte nämner .net något så förmodar jag att du inte vill välja det spåret. .Net med samma kod kommer i stort sett öka prestanda mellan 2-500% lite beroende på vad som görs, men vi släpper det spåret för en sekund och försöker svara på dina frågor istället. Då har jag fattat rätt så här långt så jag verkar vara på rätt spår. Ett par frågor till: <ul> Newbie och nyfiken som jag är, vad är Content Management System ? Content betyder innehåll - så svaret på din fråga är ett administrativt verktyg för att lägga till, ändra och arbete med det innehåll som finns i programmet, oftast relaterat till en webblösning. Content Management System med COM
Kan man komma åt formulärdata, cookies, querystrings osv? Kan man göra all databashantering i COM? Ställs det särskilda krav på kodens utformning jämfört med valig ASP? Hur fungerar variabelhantering?
Har sökt info om allt detta men inte hittat någon bra sida. Någon form av tutorial plus lite exempelkod hade varit intressant.Sv: Content Management System med COM
COM-objekt är kompilerad kod till skillnad från asp som måste kompileras vid varje tillfälle den visas så det är helt rätt att göra en flerskiktad lösning för dig som lutar åt prestanda. Vad du egentligen gör är att du skapar ett vb 6 dll projekt och flyttar in all din kod dit istället. Alla databasanrop, alla replace och renderingsfunktioner och på så sätt kan kompilera och lägga dll:en på servern för att sedan köra in den i mts (en installation av din dll).
MTS har två syften, dels lastbalansering men även att de funktioner som finns i din dll ligger i minnet och på så sätt startas och körs mycket snabbare, det är här styrkan kommer. Samma sak med databasanropen, trådningen blir bättre och dina databasanrop blir snabbare och effektivare.
När det gäller sessionsobjekt och annat går det också att använda dessa inne i din dll så det är inga problem. Att sätta igång med att börja bygga en vb-dll är första momentet, du lägger helt enkelt in en eller några funktioner som du kallar via (server.createobject("mindll.minklass) och får antingen tillbaks ett recordset, en textmassa eller ett värde från funktionen - så fungerar principen.
Vad jag kan säga är alltså att du har createobject på dina sidor istället för all kod du använder runt omkring på dina sidor. Det finns i artikelarkivet ett litet program du kan titta på för de mest primära anropet bara för att se hur du bygger en dll, se:
Artikel [Bygg din första dll-komponent ]
Se film för att lägga in komponenten i mts via http://www.pellesoft.se/area/articles/movies/mts_component.avi
Lycka tillSv:Content Management System med COM
Måste man göra några speciella ändringar i sin kod för att den ska fungera i ett COM-objekt, eller är det bara att flytta över den och kompilera?
(I min include så anropar jag functions - som i sin tur kan anropa en annan function eller sub - som returnerar ett eller flera värden.)
Körs enbart kod som ligger i functions eller subs och som man gör ett anrop till, eller kan man ha kod som ligger utanför en function som körs direkt när man instansierar objektet?
(I min include så har jag några rader kod överst som dimmar lite variabler och ger dom värden. Kanske jag ska lägga även detta i en funktion?)
Kan jag från min asp-sida läsa från eller skriva till en variabel inuti COM-objektet?
Bevaras COM-objektets variabler och deras värden efter att en funktion jag anropat kört färdigt? Kan vara bra om jag senare anropar en annan funktion som jobbar vidare med de variabler och värden som blev till när jag körde den föregående funktionen.Sv: Content Management System med COM
<li>1. Ja, du måste referera till objekt för att kunna köra transaktioner samt arbeta med sessionsobjekt.
<li>2. Ja, du kan kalla en subrutin eller funktion från en annan funktion
<li>3. Ja, du kan köra kod vid instansiering av ditt anrop
<li>4. Du kan dimentionera variabler precis som vanlig vb-kod, men objektet vill du döda så fort det går. Lagra inte variabler i tron om att de skall användas på nästa sida, använd sessionsobjektet då.
</ul>Sv: Content Management System med COM
Sv:Content Management System med COM