Danmark vil mindske afhængigheden af globale techgiganter, men det kræver mere end politiske formuleringer og strategier, understreger PROSA’s formand Niels Bertelsen.
Jeg synes da det fungere udemærket, hvis du ikke gør synes jeg da at du skal komme med en begrundelse, og så kan vi måske finde en løsning på det problem.
DataBinder.Eval benytter latebound vurdering på runtime-tidspunkt gennem brug af reflection. Det er derfor indlysende at den resulterer i bemærkelsesværdig dårlig performance sammenlignet med standard ASP.NET databinding syntax.
"CAUTION Since this method performs late-bound evaluation, using reflection, at runtime, it can cause performance to noticeably slow compared to standard ASP.NET data-binding syntax."
disco >> hvis du har mod på det kan du jo forklare hvad du mener med at "sende et objekt af typen System.Object som du binder dine data til, i dit datatilgangs lag" ? Jeg forstår ikke helt hvad du mener...
hmmm... det var ikke mange der havde noget konstruktivt at bringe til diskussionen om denne fremgangsmaade. Fra mit synspunkt tilhoerer denne fremgangsmaade (DataBinder.Eval) en af disse som programmmoerer elsker grundet dens lette implementering og som de derfor ikke taenker naermere over. Det kraever ikke meget indsigt i .NET arkitekturen for finde ud af at denne boernevenlige metoder ofte har en hoej pris et andet sted (robusthed || performance). Den bruger latebinding og reflection som er to ting der burde faa en .NET programmoer til at standse op og lede efter alternativer... ogsaa selv om fremgangsmaaden goer det muligt at skrive mere kode paa kortere tid.
Sum: enhver programmoer der ikke hedder "middelmaadig" til mellemnavn boer ikke bruge DataBinder.Eval hvor man ikke er noedsaget til dette...
Det har han skrevet: "DataBinder.Eval benytter latebound vurdering på runtime-tidspunkt gennem brug af reflection. Det er derfor indlysende at den resulterer i bemærkelsesværdig dårlig performance sammenlignet med standard ASP.NET databinding syntax."
Hvis man hurtigt skal have loopet indholdet fra en database igennem, så er det effektivt og databind sine data til en server kontrol som et datagrid, datalist eller en repeator.
Men hvad hvis man kun skal have udskrevet et felt?
Så er det måske lidt overkill og anvende et datagrid eller datalist kontrol.
Man kan eksempelvis binde sine data, til en label kontrol som følgende:
---------------------------------------------------------------------------- 'ProfileDetails objektet Public Structure ProfileDetails Public Profile As String End Structure
----------------------------------------------------------------------------- 'Datatilgangs laget
Public Function GetProfile() As ProfileDetails Dim oConnection As New SqlConnection(DB("DataBase")) Dim oCommand As New SqlCommand Dim oDataReader As SqlDataReader Try oConnection.Open() With oCommand .Connection = oConnection .CommandText = "spGetProfile" .CommandType = CommandType.StoredProcedure oDataReader = .ExecuteReader(CommandBehavior.CloseConnection) End With Dim oDetails As New Library.ProfileDetails While oDataReader.Read With oDetails .Profile = oDataReader("Profile").ToString End With End While oDataReader.Close() Return oDetails Catch ex As Exception Throw ex End Try End Function
Læg mærke til Profile fieled i Structuren. Ved at instantiere den Structure, som i øvrigt er af typen Value Type, tager jeg en kopi af den og har her Profile fieled tilrådig. I datatilgans laget, opretter jeg en metode som returnere netop det data fra databasen, som jeg har bundet til Profile objektet.
Dette objekt kan jeg ved hjælp af en variabel reference, binde til min label kontrol:
ASP.NET databinding standard >> tja... som i begge er inde paa er det lettere at naevne hvad der ikke er og det kan her med sikkerhed siges at brug af DataBinder klassen IKKE er... nu kan jeg ioevrigt citere baade MSDN og mig selv naar jeg skriver "...slow compared to standard ASP.NET data-binding syntax.".
disco >> du foreslaar altsaa at man bruge valuetype structures i codebehind og webcontrols i praesentation som alternativ til DataBinder klassen ?
>> du foreslaar altsaa at man bruge valuetype structures i codebehind ?
ikke generelt, men hvis man opretter et sådan objekt som ikke indeholder andet, så er det ikke nødvendigt at lave en Class. Men det er op til en selv...
>> webcontrols i praesentation som alternativ til DataBinder klassen ?
Nu ved jeg ikke helt hvad du mener her, men jeg plejer da at gøre sådan her når jeg looper noget igennem fra db med en datalist webkontrol.
disco >> ovenstaaende eksempel benytter DataBinder hvilket vil sige at data ikke bindes paa det ordinaere DataBind tidspunkt. Det vil sige def. paa latebound. Standard ASP.NET databinding techniques indebaerer at data bindes paa eventen DataBind og ikke andre...
subklassing er når du udvider en eksisterende klasse ved hjælp af nedarving. F.eks. i dette tilfælde, hvor man ville lave en ny klasse der arver fra System.Web.UI.WebControls.Datalist, og i den override OnDataBinding. Istedet for at subklasse kan man dog gøre brug af DataBinding-eventen som findes i Datalist-klassen, hvilket måske umiddelbart ikke er så omstændigt. Om der er nogle perfomance-mæssige forskelle ved at gøre det på den ene eller den anden måde skal jeg dog ikke kunne svare på på stående fod :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.