Sök  
 
Skribent Inlägget Löst
Google
 
     

  Forum » .NET 3.5 » Allmänt .Net tänk  
 
Skriven av: famous | den 24 november 2008 Kl 14:49
Allmänt .Net tänk
Tänkte bara plöja genom lite saker här i en och samma tråd, så man kan få svar man själv förstår.

Har som sagt nyss börjat försöka mig på .Net (3.5) och det hela är ju otroligt annorlunda från gamla ASP. Kul, men också frustrerande.

Jag känner mig inte helt hemma med tänket, men som jag förstått det så är den s k treskiktslösningen alltså .aspx, aspx.cs och sedan .cs filerna som ligger och jobbar i App_Code?

Hur bör man bäst lägga upp strukturen här och hur ska man arbeta med namespace etc på ett bra sätt?

Nedan är lite frågor och påståenden ni gärna får rätta mig på.

1) .aspx filen innehåller lite kontroller och html-koden som besökaren möts av.
2) .aspx.cs innehåller lite events som .aspx filen är kopplad mot. Alltså finns en .aspx.cs för varje .aspx som innehåller de events som behövs för just den sidan.
3) Vad tusan är aspx.designer.cs?
4) I App_Code lägger man filer som innehåller klasser, som i sin tur innehåller metoder och tjosan för att tex hämta data, öppna databas och annat?
5) Är en smidig struktur då att ha en .cs fil för de olika sektionerna på sidan, tex Forum.cs, Nyheter.cs osv? Ska då dessa ha olika namespace?


Vad bör man lägga vart i denna strukturen? Ska man dela upp det ännu mer än vad jag nämnt redan?
Är ett bra sätt att från aspx.cs anropa något i tex Nyhet.cs, och där sker SQL-kommandon osv, eller ska man ta det ett steg längre / kortare?

Hur fungerar namespace lite mer ingående och vad bör man tänka på?


Finns säkert redan svar på allt jag frågar om, men gör ett försök iaf då det är skönt att få allt samlat.

Antal svar 47



NAVIGERING: [1] 2 3 4 5
Skriven av: vimpyboy | den 24 november 2008 Kl 15:05
Jag kör aldrig med app_code-mappen, utan har istället ett separat klassbibliotek. På så sätt räcker det med att lägga till en referens i webbprojektet. Det är mycket lättare att hålla reda på de olika delarna då.

1) Ja.

2) Ja.

3) Det är en fil som kommer när man har skapat ett "Web Application Project", och inte en "Web site". Där finns alla kontroller specifierade, samt binder deras olika event till olika metoder. Du behöver inte ändra här själv särskilt ofta, utan det sköter Visual Studio/Visual Web Developer när du lägger till en kontroll på sidan. Det är bara en partial class, vilket betyder att den kompileras ihop med den vanliga code behind-filen.

4) Ja, om man vill. Jag använder som sagt hellre ett separat klassbibliotek för det.

5.1) Nej, du bör inte ha en cs-fil för alla forumfunktioner inklusive db-anrop och annat där utan istället skall du sikta på att ha en klass per cs-fil. Du kan t.ex. ha en Forum-klass där du har en metod som heter GetForumEntries(int forumId) och som returnerar en collection med ForumEntry-klasser. ForumEntry innehåller sedan t.ex. Id, Titel, Post, Skribent m.m.

5.2) Ja, du bör separera allt väl med namespaces. Jag brukar följa samma spår som .NET och köra yadda.Data, yadda.Web, yadda.Web.UI.WebControls etc för att det ska bli lätt för andra utvecklare att hitta bland klasserna.

Du kan t.ex. ha en user control som visar en lista på inlägg i forumet. Den anropar sedan Forum.GetForumEntries(ForumId) (där ForumId är en publik egenskap). Där hämtar du alla inlägg för forumet med det specifierade ID:t, gärna genom att anropa ett generellt databaslager.

Namespaces hjälper dig att ha en bra struktur över alla klasser. Säg att du skulle ta bort alla namespaces från .NET, så skulle du helt plötsligt ha en jäkla massa klasser i en stor salig röra, och det vill du nog helst inte. Genom att ha alla ASP.NET-specifika klasser under System.Web, alla databasrelaterade klasser under System.Data osv så vet du att det är specifikt för just det.

Du skall dock aldrig använda System som rot-namespace för dina egna klasser, utan använd t.ex. produktens eller företagets namn där för att göra det tydligare.

För att underlätta arbete med klasserna så bör du även kika på XML-kommentarer som gör det enkelt att generera dokumentation för klasserna, samtidigt som det ger information för intellisense i utvecklingsverktyget.
Skriven av: Stefan | den 24 november 2008 Kl 15:05
Jag tycker du verkar ha fått bra koll på läget.
aspx.designer.cs är lite "skräp" bara, ignorera den. Den skapas automatiskt, och jag kan inte tro att du ska behöva pilla i den.

Jag gör ungefär som du beskriver.
Skriven av: vimpyboy | den 24 november 2008 Kl 15:09
Citerar Stefan:

aspx.designer.cs är lite "skräp" bara


Lite skräp som gör code behind-filen så otroligt mycket vackrare. :-) Bara att se hur det såg ut med .NET 1.x för att man ska inse hur underbar den är.
Skriven av: famous | den 24 november 2008 Kl 15:14
1) Utmärkt!

2) Samma som ovan.

3) Då är jag med!

4) Hur fungerar det då, "separat klassbibliotek". Är det en fil som innehåller alla dina klasser, med alla namespace etc eller hur menar du?

5.1) Menar du att jag, om jag förstod 4 rätt, har en fil med olika klasser som heter tex Forum, Nyheter etc, istället för flera filer med en klass i varje fil?

5.2) Man kan ange flera namespaces i samma klassfil? TexKod:
namespace EttNamespace {
  public class EnKlass {
  }
}

namespace EttAnnat {
  public class EnTillKlass {
  }
}

Eller?


Tacka vet jag ASP, där man blandar hela skiten, jättebra i långa loppet ^^
Skriven av: vimpyboy | den 24 november 2008 Kl 15:31
4) Det är ett separat projekt (C# -> Class Library). Det innehåller alla cs-filer i en fin mappstruktur. När det kompileras så blir det en dll som jag refererar i mitt webbprojekt. Båda dessa har jag i samma solution i Visual Studio.

5.1) Du bör ha en fil för varje klass. Dvs Forum.cs ForumEntry.cs osv.

5.2) Nej.

Ja, det är ju underbart att blanda allt. Man får ju en otroligt fin struktur. ;-)
Skriven av: famous | den 24 november 2008 Kl 15:38
4) Aha. Så du skapar alltså detta helt fristående från dina projekt? Sen lägger du in alla klasser du behöver i detta bibliotek och när detta ska köras så hittar det atuomatiskt vilka klasser du använder och sparar ner dom till en dll, eller missförstod jag helt?
Så du kan ha ett klassbibliotek med tusentals klasser som du inte använder i ett projekt, sedan tas de du behöver?

5.1) Hmmpf, okej. Sa du inte att jag inte bör ha det?

5.2) Roger.


Jamen precis, vem kom på att det inte var bra att blanda utséende och funktioner så mycket det bara går?
Skriven av: vimpyboy | den 24 november 2008 Kl 15:42
4) Ja, det är ett helt eget projekt, men jag har det i samma solution. Jag skapar en referens från webbprjektet, och då hämtas alla klasser med automagi, ja. Och ja, jag kan ha hur många klasser jag vill. Det underlättar om jag vill ha något generellt klassbibliotek som jag vill använda i andra projekt.

5.1) Nej.
Citerar vimpyboy:

sikta på att ha en klass per cs-fil


5.2) Bengt.
Skriven av: Stefan | den 24 november 2008 Kl 15:43
Själv saknar jag BASICs gamla härliga GOTO och GOSUB...
Skriven av: famous | den 24 november 2008 Kl 15:46
4) Då förstår jag, även om jag i praktiken inte vet vad du pratar om.

5.1) Aha... Fast. Blir det inte en jäkla massa filer om man löser det så? Jag vet ju iofs inte hur mycket man kan göra i en klass.
Kan man / bör man i samma klass ha tex en metod för att spara en post, en för att uppdatera, en för att ta bort, en för att hämta en viss post och en för att hämta en lista?
Eller bör man separera dessa till flera klasser, med andra ord flera filer?
Skriven av: vimpyboy | den 24 november 2008 Kl 15:46
Minns jag inte fel så finns GOTO i VB.NET.

Redigerad av: vimpyboy
Tada!
http://weblogs.asp.net/HPreishuber/archive/2004/11/18/260360.aspx
NAVIGERING: [1] 2 3 4 5
 
     

  Svara på inlägg  
 
Du måste vara medlem på ASPsidan för att kunna skriva i forumet.
För att bli medlem klicka här.
 
     

  » Logga in  
 
Användarnamn

Lösenord

 
     

  » Bli medlem  
  Bli medlem på ASPsidan!  
     

     
  Microsoft  
     

  » Partners  
  Comsolvia  
     
  » ANNONS  
  ingen annons än  
     

  » Senast online  
  Endast för inloggade  
  Antal inloggade: 1  
     

Copyright © 2007 www.ASPsidan.se
ingen sponsrar längre ASPsidan med Dedikerad Server
ASPsidan RSS
   
 XHTML / CSS
Det tog 0,6875 sekunder att ladda sidan