Toon posts:

[asp.net] PetShop 4.0 tiers

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben me nu aan het verdiepen in de PetShop (versie 4.0). Wat me opvalt is het grote aantal projecten dat in de solution zit. Als ik de repeater met categorieen op de homepage terug probeer te leiden naar de database dan kom ik heel wat code tegen:

De repeater krijgt een IList<CategoryInfo> van de class BLL.Category. Deze krijgt op zijn beurt een IList<CategoryInfo> van de class SQLServerDAL.Category (geinstantieerd middels een statische methode van de class DALFactory.DataAccess).
Die class gebruikt DBUtility.SQLHelper, een aangepaste Data Access Application Block (kant en klaar spul van MS uit de Enterprise Library) om Categorien uit de database te halen en maakt daar de in het begin genoemde IList<CategoryInfo> van, zo'n verzameling bevat dus classes Model.CategoryInfo.

Nou, als ik dat goed beschreven heb, dan heb ik de theorie redelijk helder (volgens mij wel). Maar het wordt er niet makkelijker op. Kortom, een bespreking van de PetShop 4.0 lijkt mij erg interessant omdat ik nog geen ervaring heb met bouwen van applicaties op deze manier.

Bijvoorbeeld:
Hoe kun je dit geheel vereenvoudigen zodat het makkelijk te overzien is? BLL en Model kunnen volgens mij samengevoegd worden, dus i.p.v. BLL.Category en Model.CategoryInfo één class Category?
En hoe gaat de DAL eruit zien? Die SQLHelper is reuzehandig, dat scheelt veel code, maar die hele factory kan toch weg als je niet verwacht een andere DB te gaan gebruiken? Dus dan wordt de SQLServerDAL gewoon dé DAL.
En hoe zit het nu met het heen en weer sturen van gegevens tussen lagen? Ik lees regelmatig in weblogs dat je DataSets naar je BLL kan sturen, en ik lees ook regelmatig dat je dat juist niet moet doen. Wat is nu verstandig/sneller/veiliger?

  • joopst
  • Registratie: Maart 2005
  • Laatst online: 01-10-2024
Alle antwoorden zijn goed, het is alleen een kwestie van smaak.

Het enige wat handig is aan architectuur van software is dat je de weg niet kwijt raakt in je eigen puinhopen. De weg niet kwijt raken is zorgen dat je het overzicht houdt.
Hoe je dat het beste kan doen, daar hebben heel veel mensen hun mening over op het net geflikkerd. Als je goed wilt leren programmeren, moet je zelf nadenken over welke ideeën handig/bruikbaar zijn. :)

Voortrekkers van architectuur als Martin Fowler zeggen ook dat de manier waarop je het beste een programma kan opzetten, afhankelijk is van het doel en de verwachte complexiteit.

Software bouwen is balanceren op de grens van pragmatisch en utopisch :)

  • EfBe
  • Registratie: Januari 2000
  • Niet online
Het lijkt me veel verstandiger algemene theorie te leren dan je te verdiepen in petshop implementaties van MS, want die zijn allemaal ronduit schandalig slecht. OF overengineered OF werkelijk niet normaal rampzalig triest.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

EfBe, bedoel je deze rampzalig trieste? :X

Nouja, ze zijn iig vooruitgegaan.

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

EfBe schreef op donderdag 23 maart 2006 @ 10:03:
Het lijkt me veel verstandiger algemene theorie te leren dan je te verdiepen in petshop implementaties van MS, want die zijn allemaal ronduit schandalig slecht. OF overengineered OF werkelijk niet normaal rampzalig triest.
En wat is er volgens jou slecht aan PetShop 4?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • EfBe
  • Registratie: Januari 2000
  • Niet online
kenneth schreef op donderdag 23 maart 2006 @ 10:15:
EfBe, bedoel je deze rampzalig trieste? :X
Nouja, ze zijn iig vooruitgegaan.
Precies. :)
Kaassoevlee schreef op donderdag 23 maart 2006 @ 12:03:
[...]

En wat is er volgens jou slecht aan PetShop 4?
Ik heb het nog niet in depth bekeken, maar het zag er wat over-engineered uit.

[ Voor 33% gewijzigd door EfBe op 23-03-2006 13:45 ]

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Verwijderd

Het is ook grappig dat met dit soort demo implementaties het hele idee van .NET onderuit wordt geschoffeld, echte rad is dit namelijk niet. Dit is pad :)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:52

gorgi_19

Kruimeltjes zijn weer op :9

Wilden ze met Petshop ook niet bewijzen dat .Net sneller was dan Java en ze dus alle ranzigheden qua ontwerp hebben gebruikt voor ieder beetje performance, zoals direct binden van datareaders aan datagrids e.d. ?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
EfBe schreef op donderdag 23 maart 2006 @ 13:44:
Ik heb het nog niet in depth bekeken, maar het zag er wat over-engineered uit.
Dat dacht ik ook, daarom vroeg ik mij af hoe je het simpeler kon maken. Dus daarom dacht ik dat je de BLL- en Model-projecten samen kon voegen, dus twee klassen als BLL.Category (die alleen ondersteunt: GetCategories en GetCategory) en Model.CategoryInfo (die een echte representatie is van een categorie), daarvan maak je één Category met bijvoorbeeld statische methoden GetCategory en GetCategories.
Verwijderd schreef op donderdag 23 maart 2006 @ 13:48:
Het is ook grappig dat met dit soort demo implementaties het hele idee van .NET onderuit wordt geschoffeld, echte rad is dit namelijk niet. Dit is pad :)
Wat bedoel je hiermee?
gorgi_19 schreef op donderdag 23 maart 2006 @ 13:53:
Wilden ze met Petshop ook niet bewijzen dat .Net sneller was dan Java en ze dus alle ranzigheden qua ontwerp hebben gebruikt voor ieder beetje performance, zoals direct binden van datareaders aan datagrids e.d. ?
Nee, volgens mij niet hoor. Dit is versie 4 inmiddels en het gaat niet meer om prestaties te vergelijken, wel om een soort referentie te bieden volgens mij. Wat wel opvalt is dat de layout nog wel met tables is enzo. Maar de winst qua code zit 'em nu meer in het gebruik van (asp.)net 2.0 zaken als masterpages, wizard-control en generics.

Toch, ik weet zelf ook niet zeker of ik er goed aan doe om ernaar te kijken, maar ik ga iig niet zitten copy-pasten, ik wil gewoon de principes beter begrijpen, en tegelijkertijd het voor mij als beginner overdreven spul (zoals de DALFactory) even erbuiten laten.

PS, het is ontwikkeld door Vertigo Software in opdracht van MS, waarom ze dat niet ff zelf konden maken, bijvoorbeeld met behulp van Northwind ofzo begrijp ik niet.

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

gorgi_19 schreef op donderdag 23 maart 2006 @ 13:53:
Wilden ze met Petshop ook niet bewijzen dat .Net sneller was dan Java en ze dus alle ranzigheden qua ontwerp hebben gebruikt voor ieder beetje performance, zoals direct binden van datareaders aan datagrids e.d. ?
Kan dat er niet echt uithalen.

Ze vergelijken wel het aantal regels met v3:
Presentation Layer: 1,822 => 1,365
Model: 349 => 395
Business Logic Layer: 210 => 199
Data Access Layer: 1,538 => 985
Total Lines of Code: 3,919 => 2,944

Maar deze winst is voornamelijk gehaald door meer kant-en-klare onderdelen van ASP.NET 2.0 te gebruiken, zoals Krimszon als aangaf: masterpages, wizard-control en generics. Maar ook membership, welke wel intressant is omdat ze hier ook de koppeling naar Oracle hebben gemaakt.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Tsja, de heilige LOC ...
Onze DAL/BL heeft veel LOC, maar als 95% daarvan gegenereerd wordt, wat is dan het punt?

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Kaassoevlee schreef op vrijdag 24 maart 2006 @ 11:31:
[...]

Kan dat er niet echt uithalen.

Ze vergelijken wel het aantal regels met v3:
Presentation Layer: 1,822 => 1,365
Model: 349 => 395
Business Logic Layer: 210 => 199
Data Access Layer: 1,538 => 985
Total Lines of Code: 3,919 => 2,944

Maar deze winst is voornamelijk gehaald door meer kant-en-klare onderdelen van ASP.NET 2.0 te gebruiken, zoals Krimszon als aangaf: masterpages, wizard-control en generics. Maar ook membership, welke wel intressant is omdat ze hier ook de koppeling naar Oracle hebben gemaakt.
Oh, aantal regels code is minder! Nou dan moet het wel goed zijn. Code is cheap in .NET, elk object shared zn class code met alle andere instances van dezelfde class. Het boeit echt niet als er wat meer code is, het boeit pas wanneer je veel runtime datastructures moet opzetten omdat je zo nodig op code moest besparen.

Ik bedoel, een DAL van 985 regels. Tja...

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com

Pagina: 1