Att man inte får använda sig av reflection verkar vara "trendigt" bland webbhotell.
Läser man på div. hotells specar på vad man får/inte får så kan man lätt tro att de bara kopierat varandras texter. För vissa hotell har exakt samma punktlista! :l
Men vad är "farligt" med reflection egentligen eftersom hotellen inte tillåter det?
CatZMedlem sedan jan. 20022 440 inlägg Åja så farligt är det inte med reflection. Det går att använda reflection konstant utan att sänka ett webbhotell.
Webbhotell som skriver att man inte får använda reflection är inte seriösa eftersom de inte vill uppgradera hårdvaran eller inte har kontroll över den och om du ser ett hotell som skriver så ska du fundera på att byta!
CatZ skrev:
Webbhotell som skriver att man inte får använda reflection är inte seriösa eftersom de inte vill uppgradera hårdvaran eller inte har kontroll över den och om du ser ett hotell som skriver så ska du fundera på att byta!
Seriös eller inte, två av sveriges största tillåter det inte, Loopia och Binero. :(
http://support.loopia.se/?_a=knowledgebase&_j=questiondetails&_i=234&nav=+%26gt%3B+<a+href%3D'index.php%3F_a%3Dknowledgebase%26amp%3B_j%3Dsubcat%26amp%3B_i%3D31'>Utveckling+%2F+Programmering<%2Fa>+%26gt%3B+<a+href%3D'index.php%3F_a%3Dknowledgebase%26amp%3B_j%3Dsubcat%26amp%3B_i%3D33'>ASP.NET<%2Fa>
https://www.binero.se/kundservice/hjalp/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=73&nav=0,4,9
cok skrev:
Det är resurskrävande.
På vilket vis då? Är det processorkrävande eller är det ramminnet som blir fullt?
Och jag har för mig att man kan ställa hur mycket resurser en viss iis-instans får nyttja och då borde det inte bli ett problem!?
Det känns som det måste vara nått mer kruks med reflections.
Kan man med reflections komma åt att läsa metadata eller dyligt ur filer som man inte har behörighet till? Alltså filer utanför sin webbrot.
Jag vet inte så mycket om det, men det finns tydligen olika security levels och reflection är inte tillåten på ett par av dom nivåerna.
CatZMedlem sedan jan. 20022 440 inlägg Nu kom inte allting jag skrev med då jag startade om datorn men det jag skulle tillägga är att det är med reflection som det är med allt annat i kodväg. Det spelar ingen roll så länge det används rätt men felkodat kan det ställa till med problem.
spangoMedlem sedan juni 20008 205 inlägg
Nickemannen skrev:
Jag vet inte så mycket om det, men det finns tydligen olika security levels och reflection är inte tillåten på ett par av dom nivåerna.
http://msdn2.microsoft.com/en-us/library/ms998326.aspx
De har - som de skriver - medium trust på CASen. Förstår man inte varför de har det... så får man tänka lite till.
Jag fattar ändå inte! :(
http://msdn2.microsoft.com/en-us/library/stfy7tfc.aspx
Vad skulle jag kunna göra på webhotellet om jag hade reflectionrättigheter?
Skulle jag kunna förstöra något eller vad?! :q
spangoMedlem sedan juni 20008 205 inlägg Skulle gissa att det är för att undvika okontrollerad exekvering. Använder du reflection kan du teoretiskt låta en användare diktera vilka metoder som ska anropas. Tycker spontant att det är lite udda, med tanke på att resten av permissionsettet begränsar ganska duktigt skadan man kan åstadkomma då, men det finns säkert en god anledning.
Oki.
Jag har i alla fall kollat med Anders på Binero nu och det visar sig att de visst tillåter reflection i deras medium trust config. Weeii! :D :bire
Jepp :)....
Reflection är krafftfullt därför skulle jag nog aldrig välja ett webhotell som inte stödjer det.
inspiroMedlem sedan sep. 2005673 inlägg Kan någon lite enkelt förklara vad reflection är för något?
inspiroMedlem sedan sep. 2005673 inlägg Hm, så reflection är samma sak som intellisens i vs? Använder inte alla klasser reflections då? Antagligen har jag helt missförstått. :)
CatZMedlem sedan jan. 20022 440 inlägg Nej inte riktigt... med hjälp av reflection kan man skapa "anonyma" metoder som tar emot basklassen som parameter.
Det är stort! Riktigt stort och definitivt något man vill kunna använda sig av. Du kan mha reflection skapa modulbaserade sajter och program och låta reflection ladda rätt moduler åt den inloggade användaren "conditionally".
Du kan också i runtime låta reflection söka rätt på det du letar efter.
inspiroMedlem sedan sep. 2005673 inlägg Ok, hittade den här artikeln som förklarade det så jag förstår tror jag.
http://www.codersource.net/published/view/291/reflection_in.aspx
Däremot har jag svårt att se några direkta tillämpningar. Varför skulle man inte känna till vilka metoder/properties som finns på ett objekt när man skriver sin kod?
PMedlem sedan jan. 20012 204 inlägg I runtime kan du se t.ex se vilka metoder en klass har. Så användbart är det väl egentligen inte, som det är nu, i framtiden kanske det blir bättre. Säg att du på en klass "användare" har en metod "namn". Men om inte en specifik användare inte har något namn, då borde ju kanske inte den metoden "namn" existera.
Jag tycker mest reflection känns som en gratisprodukt man fått då man inte använder c++ stil att anropa t.ex metoder. I en klass i c++ som har några olika metoder så har man (vad jag har förstått) en lista med olika funktionspekare till de olika metoderna. Typ:
1. Metod1
2. Metod2
3. Metod3
Sen om du anropar en funktion så kompileras den positionen som metoden har in i koden. I C#/Java så anropar man med hjälp av namnet på metoden och inte dess plats i listan.
spangoMedlem sedan juni 20008 205 inlägg
P skrev:
I C#/Java så anropar man med hjälp av namnet på metoden och inte dess plats i listan.
Njae, vid direkta anrop av metoder etc sker anropen mer i stil med hur de funkar i C++, både i Java och C#, det är därför direkta anrop är så larvigt mycket snabbare än reflection.
Tillfällen då reflection kan vara kraftfullt är vid skapande av applikationer som man skall kunna implemmentera plugins till :).
Applikationen ifråga har ett interface som den kräver att plugins skall implemmentera och sedan så läggs dll:en/dll:erna i en mapp som applikationen kollar av, och söker efter klassen som implemmenterar interfacet och använder sig på det sättet av den nya assemblien, kanske lägger till funktionaliteten i ett menyalternativ eller dylikt :).
Annars så är NHibernate ett exemplariskt exempel.