Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[WCF] Elke client instance in nieuw appdomain op server

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb hier een WCF service die een codebase aanspreekt van een standalone app.
In die standalone app kan maar 1 gebruiker tegelijk ingelogd zijn en wordt er veelvuldig gebruik (en misbruik) gemaakt van statics.
Die statics worden gedeeld met elke consumer en dat is niet de bedoeling
Wat de mooie oplossing is weet ik, maar die tijd is er niet (klant zit met issue)

Nu had ik bedacht om elke keer dan een client een sessie opzet, dat die sessie in een eigen appdomain moet komen.
Los van het hele WCF gedoe, als ik dat met een gewone reference probeer lijkt het het probleem op te lossen.
Maar ik krijg het niet voor elkaar om het in WCF te doen.
Het wordt gehost in een selfhost app. Moet ik nu met IInstanceProvider in de weer om zo iets af te dwingen?
Kan het uberhaupt wel wat ik probeer? Zoek ik het nu helemaal in de verkeerde richting?

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Kun je niet eenvoudig in je WCF service per sessie een app-domain aanmaken, en in dat domain de calls naar de standalone app doen?

Dan hoef je dus niet elke service instantie in een appart appdomain te plaatsen, maar moet je in je service eerst even het juiste appdomain ophalen, en daar de call op doen.

Eventueel kan je dat zelfs met een service wrapper doen.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Topicstarter
Woy schreef op woensdag 08 januari 2014 @ 11:46:
Kun je niet eenvoudig in je WCF service per sessie een app-domain aanmaken, en in dat domain de calls naar de standalone app doen?

Dan hoef je dus niet elke service instantie in een appart appdomain te plaatsen, maar moet je in je service eerst even het juiste appdomain ophalen, en daar de call op doen.

Eventueel kan je dat zelfs met een service wrapper doen.
Dat was ook de bedoeling, maar kon vanuit de service niet het juiste event vinden om dat te doen.
In de constructor ging het fout want dan krijg je natuurlijk een stack overflow en ook 2 instanties naast elkaar. Toen wezen klootviolen met een alternatieve constructor om vervolgens toch te eindigen met IInstanceProvider
Met die interface kan je zelf de instanties uitdelen en dat was dus wat ik zocht.
Ipv dat ik daar een gewone 'new' uitdeel maak ik een appdomain aan en laad de service via CreateInstanceAndUnwrap en geef die terug.
Dan nog afvangen wanneer de sessie ten einde is en vervolgens de appdomain opruimen.
Alles lijkt te werken, dus ik ga er wel uitkomen.