Toon posts:

[C#] Circular Dependency

Pagina: 1
Acties:

Onderwerpen


  • Tarabass
  • Registratie: februari 2008
  • Laatst online: 17-06 23:19
Ik ben bezig met een solution waarin ik gebruik maak van een eigengemaakt framework project, een businesslogic project en het webapplication project. WebApplication heeft references naar het FrameWork en BusinessLogic, BusinessLogic heeft references naar het FrameWork (de managers maken gebruik van de datasource-classes ivm connections naar sql-servers) en het FrameWork heeft geen references.

Nu wil ik vanuit FrameWork gebruik maken van de managers en objecten in BusinessLogic, maar dat kan natuurlijk niet via een reference want dan krijg ik de error over Circular Dependency. Hoe ga ik dit bewerkstelligen?

Ik heb veel gelezen, maar lees enkel over interfaces. Zie niet hoe dit een oplossing zou kunnen zijn voor dit probleem.

circular_dependency.jpg
http://i5.photobucket.com/albums/y152/Tarabass/th_circular_dependency.jpg

  • Xiphalon
  • Registratie: juni 2001
  • Laatst online: 24-09 21:24
Als je framework objecten nodig heeft uit je businesslaag, dan is je framework (ervan uitgaande dat het een algemeen framework is) niet abstract genoeg. Een oplossing is dan (bijvoorbeeld) om je framework interfaces te laten aanbieden die de objecten in de businesslaag implementeren.
Edit:
Ah zover was je zelf ook al. Het idee is dus dat je door middel van interfaces die je framework aanbiedt, de vereiste functionaliteit afdwingt in de object in de businesslaag, doordat die objecten de interfaces implementeren. Hierdoor hoeft je framework dus niet(s meer) te weten over de objecten in je businesslaag.

Anders haal je misschien 2 framework-typen door elkaar. De applicatieframework, welke ondersteuning levert aan alle businessobjecten en een algemeen app-framework.

[Voor 26% gewijzigd door Xiphalon op 10-10-2010 11:48]


  • yade
  • Registratie: mei 2002
  • Laatst online: 16-09 21:02
Er zijn twee oplossingen, of het framework en BLL laten versmelten. Of er een nieuwe laag bijmaken. Meestal noem ik die shared of common. (Of wat Darkmage zegt, misschien wel het beste.)

[Voor 15% gewijzigd door yade op 10-10-2010 11:50]


  • Davio
  • Registratie: november 2007
  • Laatst online: 13-07 14:13
Als je cross-verwijzingen nodig hebt tussen je projecten, ben je niet echt gelaagd bezig, wat hier wel logisch zou zijn.

Ik neem aan dat FrameWork de onderste laag is en dat BusinessLogic daar op ligt, dan kun je in BusinessLogic alleen elementen uit FrameWork gebruiken en niet andersom.

Ik zou in jouw geval misschien een tussenlaag tussen FrameWork en BusinessLogic maken die elementen uit het FrameWork samenvoegt. Of je kunt de gewenste functionaliteit in BusinessLogic implementeren.

Maak anders even een schets van alle lagen en bedenk dan waar je functionaliteit het beste past.

  • Tarabass
  • Registratie: februari 2008
  • Laatst online: 17-06 23:19
darkmage schreef op zondag 10 oktober 2010 @ 11:45:
Als je framework objecten nodig heeft uit je businesslaag, dan is je framework (ervan uitgaande dat het een algemeen framework is) niet abstract genoeg. Een oplossing is dan (bijvoorbeeld) om je framework interfaces te laten aanbieden die de objecten in de businesslaag implementeren.
Edit:
Ah zover was je zelf ook al. Het idee is dus dat je door middel van interfaces die je framework aanbiedt, de vereiste functionaliteit afdwingt in de object in de businesslaag, doordat die objecten de interfaces implementeren. Hierdoor hoeft je framework dus niet(s meer) te weten over de objecten in je businesslaag.

Anders haal je misschien 2 framework-typen door elkaar. De applicatieframework, welke ondersteuning levert aan alle businessobjecten en een algemeen app-framework.
En waar behoort mijn class waarin de connectie gemaakt wordt en sp's uitgevoerd worden om results terug te geven (DataSources in FrameWork)? Deze hebben ik nu namelijk samen met custom webcontrols (UI) in hetzelfde framework. Beide wil ik namelijk kunnen hergebruiken in andere solutions, waarbij ik dan enkel de dll hoef te includen. Ik heb het gevoel dat mijn denkfout daarin zit. De situatie die nu voor problemen zorgt is het volgende:

In de businesslaag zitten objecten en managers. De managers maken gebruik van de datasource-class in het framework om data op te halen uit de database en een connectie te kunnen maken. Vandaar de reference vanuit businesslogic naar het framework. Tot zover logisch. Echter zitten er nu ook custom webcontrols in hetzelfde framework die die managers in de businesslogic nodig hebben om data te kunnen binden. Daar zit dus ook mijn cross-verwijzingen. De webcontrols halen lijsten met objecten op uit de businesslogic, die dan weer connectie moet maken via het framework :)

Thanks voor de input btw :P

  • yade
  • Registratie: mei 2002
  • Laatst online: 16-09 21:02
Dus je framework is een soort data access layer? Ik zou dat dan DAL noemen en controls naar de business logic verplaatsen. Als de controls niet specifiek tot deze business logic laag toebehoren dan zou ik er een nieuwe laag van maken. Of, als je framework meer business logic dan data access is de data access eruit halen.

[Voor 20% gewijzigd door yade op 10-10-2010 22:53]


  • Davio
  • Registratie: november 2007
  • Laatst online: 13-07 14:13
Die Custom Webcontrols horen natuurlijk niet echt thuis in een hierboven genoemde Data Access Layer, wat jouw FrameWork in principe is. Web is immers een frontend en de DAL is duidelijk backend.

Je moet gewoon een aparte GUI library maken met die custom webcontrols. Dan kun je daarin natuurlijk best de DAL referencen.

  • Tarabass
  • Registratie: februari 2008
  • Laatst online: 17-06 23:19
Ik ga denk ik inderdaad voor de extra laag. Die nieuwe GUI laag kan ik dan gebruiken voor alle frontend zaken, waardoor mijn framework meer een data access layer wordt. Dan heb ik twee libraries die ik ieder goed kan hergebruiken. De GUI voor web, en het framework voor zowel web als win :)
Pagina: 1


Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee