Jag har programmerat ASP i mer än ett halvår och det känns som att jag måste få svar på vissa frågor för att kunna avancera med nya tekniker och nya tricks.
Som vanligt är jag tacksam för inlägg skrivna av författare som vet vad dem snackar om! ;)
De frågor jag har är följande:
1. Option Explicit
-- besvarad --
2. Stored Procedures
-- besvarad --
3. Templates
Det var inte så längesedan jag ställde en fråga angående detta och fick då några bra (tack för dem) artiklar om ämnet men dock skulle jag gärna vilja se någonting lite enklare som någon här på forumet har skrivit så att jag bättre förstår. Det handlar alltså om en HTML-Template med ASP-variabler för head, body osv. I det exemplet jag studerade fanns det bara "stöd" för en sida och inte flera, det vill säga, för en -hel- hemsida.
4. Com Objekt
-- besvarad --
5. Prestandatester
Hur brukar ni göra innan ni slutgiltigt släpper iväg ett system till en kund? På vilka plan och med vilka metoder testar ni prestanda? Jag vet att man med någon kod (trevligt om någon postar den :) ) kan se hur snabbt en ASP-sida genereras men det måste ju finnas massvis av andra faktorer som också spelar in...
6. Scriptlets
Samma som nummer fyra, samma som nummer två (ledsen att frågorna kommer lite om lott med varandra). Detta är förövrigt någonting jag undrar mycket över så det vore extra juste om ni svarar på just denna! ;)
7. REXX scripting language
Det ska tydligen finnas ett scriptspråk som man kan använda i asp som heter rexx. Har det några speciella ändamål eller är det bara ett utdaterat gammalt scriptspråk? Ren nyfikenhet...
8. Citat från en hemsida (som borde vara pålitilig):
-- besvarad --
9. Till slut lite MS-citat!
På microsoft finns en liten tio-i-topp-lista över tips rörande prestanda i asp. Det skulle vara formidabelt om någon kunde skriva om var punkt (ok, ni kan skippa ettan och den om OptionExplicit om ni vill ;)):
1. Design for success.
2. Use application state for caching output.
3. Create and modify ProcessorThreadMax registry value.
4. Use system DSNs, not file DSNs or DSN-less DSNs.
5. Enable buffering for all Applications.
6. Use Microsoft Transaction Server "Library" Packages.
7. Disable Session state, if not used.
8. Use OptionExplicit with VBScript.
9. Make ADO free-threaded if you use SQL Server.
0. Modify the metabase AspScriptEngineCacheMax value.
Jag vet att det är många frågor men snääälla... :f :OO
Nåja, jag hoppas att i alla fall någon lägger lika lång tid på sitt svar som jag gjort på mina frågor och att denna tråden blir ett bra bidrag till ASP/VBScript-forumet! :bire
Jag har inte märkt någon generell prestandabättring i de applikationer jag skrivit. Det ska till hög belastning om man ska kunna märka någon skillnad. Dock finns en annan stor fördel, och det är att man tvingas definiera alla variabler man vill använda. Det gör att man fort märker om man skrivit fel på ett variabelnamn, istället för att felsöka på helt fel ställen.
Stored Procedures har ingenting med ASP att göra. En Stored procedure är ett kodstycke SQL för Microsoft SQL Server och andra ordentliga DBMS. En Stored procedure går fortare att exekvera än lösa SQL-frågor, då servern före exekveringen vet vad som ska exekveras.
Ett COM-objekt är kompilerad kod, skriven i något riktigt programspråk, exempelvis C++ eller Visual Basic. COM betyder Component Object Model, och man brukar kalla dem för komponenter helt enkelt.
Testar brukar jag inte göra själv, men jag ser till att någon testar med någon sorts stresstestprogramvara, som simulerar x antal samtidiga användare och anrop.
Nyckel: if you are working with the Oracle database. Använder du Access, hoppa över det som står specifikt för Oracle. ;)
- - - -
Japp, jag hoppade över några. Dels sånt som jag inte har tid att svara på, och dels sånt jag inte har kompetens att svara på.
Tack för svaret Anders! Ingen annan som kan hjälpa till?
Solbulle: Ingen fara! Förresten, känner du igen denna gamla hemsidan? http://home.no/musicfocus ... för du har väl varit medlem i megadomains forum för så där ett, ett o ett halvt år sedan? :q
Jag kan ta mina egna erfarenheter av punkt 3: templates.
Jag har nyligen slängt in alla artiklar (ursprungligen html-filer) i databasen och genererar via mallar dessa html-filer istället. Mycket smidigare! Sökningar görs i databasen (snabbare), ändringar kan göras online etc. Databasmodellen är nog det viktigaste, den avgör ju hur utbyggbart det kan bli i framtiden. Såhär har jag gjort:
1. articles_texts - Alla artiklar.
2. articles_categories - Kategori för varje artikel.
3. articles_sections - Sektionen på hemsidan (artiklar/adresser etc).
Varje kategori är ihopkopplad med en sektion.
4. articles_templates - Mallarna. Varje sektion är kopplad till en egen mall.
För att förstå databasmodellen är det nog enklast att börja bakifrån med punkt 4: I articles_templates sparas mallarna. Eftersom alla sidor inom en viss sektion på hemsidan har samma layout skapas en mall för varje sektion i tabellen articles_section (t ex artiklar, postadresser, program etc). Därefter finns det olika kategorier inom en sektion (t ex postadresser: filmfestivaler, resruscentrum, övrigt) och det sparas i tabellen articles_categories. Kategorin är sedan kopplad till artikeln.
Mycket JOINs blir det, men ingen data är sparad på mer än ett ställe och det är väldigt utbyggbart. Samtidigt kan man byta layout på en hel sektion genom att ändra ett ID nummer. Det var mitt mål och det blev färdigt igår! Skööönt! :bire
Eftersom jag är ett stort fan av dreamweaver (MX) så kan jag
rekomendera att använda sig av deras templates.
Där kan du enkelt skapa olika mallar för hur sidor ska se ut, vill du
sedan ändra nån detalj så ändrar du bara i template-filen så
ändras alla tillhörande sidor automatiskt, praktiskt och enkelt!
Dock, detta är endast designtemplate inte informationstemplate.
Men vill du ha nått mer djupgående att sätta dig in i så börja skissa på
en databas-template som Pace beskrev ovan :)
Yeah, tänkte väl det! Då kan jag passa på att tacka dig (om än lite sent :D ) eftersom att jag kommer ihåg att du _då_ gillade den designen vilket uppmuntrade mig att fortsätta!
... och så kan jag glatt meddela att jag kommit fram till vad REXX är för någonting: Ett scriptspråk, utvecklat på en IBM och körs oftast på sådana... används oftast för att göra CGI-scripts. Ett kodexempel:
SAY "Content-type: text/plain"; SAY ''
Input=TRANSLATE(GETENV('QUERY_STRING'),' ','+')
DO WHILE INDEX(Input,'%')/=0
PARSE VAR Input Pre'%'+1 Char +2 Input
IF VERIFY(TRANSLATE(Char),'0123456789ABCDEF')=0 THEN Input=Pre||X2C(Char)||Input
ELSE DO; SAY 'Invalid %'Char' ASCII encoding!<br>'; EXIT; END
END
Valid=' abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
Valid=Valid||'0123456789-_/.@'
V=VERIFY(Input,Valid)
IF V/=0 THEN DO
SAY 'Bad char('SUBSTR(Input,V,1)') in:"'Input'"'
EXIT 99
END
IF SUBSTR(GETENV('REMOTE_ADDR'),1,7)/='134.79.' THEN DO
SAY 'Access restricted to SLAC nodes!<br>'; EXIT
END'
ADDRESS UNIX 'finger' Input
Pace, är det inte smaratare att använda objekt istället? Som här? (jag vet inte själv...):
Jag har endast nämnt databasmodellen, inte själva koden för att presentera filerna. Det kan man göra på flera olika sätt.
Själv har jag gjort ett classobjekt som antingen sparar filen till webbservern, visar filen till webbläsaren, eller laddar ned den till klienten. Jag använder det förstnämnda för att publicera filer och det mittersta för att förhandsgranska.
Du skulle inte kunna ta bort innehåll och sådant som du inte vill visa och sedan posta lite hela koder och sådant eller skicka det till mig? Det vore -grymt- snällt!
Jag tog inte med början av subben för jag vill inte visa det som finns i början. ;)
Varför jag använder subbar? Tja, att "modularisera" koden är det enda vettiga om man vill ha struktur. Ännu hellre classer eller com-objekt om man har det.
Jag tog inte med början av subben för jag vill inte visa det som finns i början. ;)
Varför jag använder subbar? Tja, att "modularisera" koden är det enda vettiga om man vill ha struktur. Ännu hellre classer eller com-objekt om man har det.
Hmm.. jag kan ingenting direkt om subrutiner som du kanske märker.
Varför skulle det strukturera upp koden bättre för att man använder dessa?´ :q
Det blir bättre på så vis att du kan byta ut/ändra/ta bort valfri kod mycket, mycket enklare. Du slipper skriva saker två gånger. Använder du en viss typ av sak ofta kan du göra en sub/funktion av den och kalla på den via en global include-fil.