Gegeven een web applicatie in ASP.NET, met een DAL bestaande uit strongly typed dataset (m.b.v. Visual Studio's dataset designer) en een BLL. De BLL past regels/logica toe waarvoor informatie over de huidige gebruiker nodig is. Deze informatie is terug te vinden in sessie variabelen, via de User eigenschap van een Page en met behulp van de zgn. Roles klasse uit System.Web.Security
Dit zijn allemaal objecten die vanuit een ASPX pagina makkelijk te gebruiken zijn. Maar is het niet zo dat een BLL hier niets van zou moeten weten? Het lijkt mij dat een klasse in de BLL geen referentie zou moeten hebben naar System.Web om via de HttpContext toegang te krijgen tot een sessie variabele.
Maar dat zou betekenen dat alle methodes in de BLL voorzien moeten worden van extra parameters om toch de waarden in die variabelen te krijgen en er iets mee te doen. Of zie ik een elegante oplossing over het hoofd?
Om de verwarring compleet te maken: Op asp.net is een starterkit te vinden genaamd The BeerHouse. De programmeur heeft ook een boek geschreven over deze applicatie (ASP.NET 2.0 Website Programming, Problem - Design - Solution). In die applicatie erft iedere BLL klasse van een basis klasse die velden heeft voor de gebruiker en het IP adres. Hier wordt dus zonder probleem de BLL voorzien van eigenschappen die gekoppeld zijn aan de implementatie van de GUI.
Samengevat: Hoe lossen we het probleem op dat de BLL informatie nodig heeft om logica toe te passen, terwijl die informatie opgeslagen is op een wijze die specifiek is voor de implementatie van de GUI laag boven de BLL?
Dit zijn allemaal objecten die vanuit een ASPX pagina makkelijk te gebruiken zijn. Maar is het niet zo dat een BLL hier niets van zou moeten weten? Het lijkt mij dat een klasse in de BLL geen referentie zou moeten hebben naar System.Web om via de HttpContext toegang te krijgen tot een sessie variabele.
Maar dat zou betekenen dat alle methodes in de BLL voorzien moeten worden van extra parameters om toch de waarden in die variabelen te krijgen en er iets mee te doen. Of zie ik een elegante oplossing over het hoofd?
Om de verwarring compleet te maken: Op asp.net is een starterkit te vinden genaamd The BeerHouse. De programmeur heeft ook een boek geschreven over deze applicatie (ASP.NET 2.0 Website Programming, Problem - Design - Solution). In die applicatie erft iedere BLL klasse van een basis klasse die velden heeft voor de gebruiker en het IP adres. Hier wordt dus zonder probleem de BLL voorzien van eigenschappen die gekoppeld zijn aan de implementatie van de GUI.
Samengevat: Hoe lossen we het probleem op dat de BLL informatie nodig heeft om logica toe te passen, terwijl die informatie opgeslagen is op een wijze die specifiek is voor de implementatie van de GUI laag boven de BLL?