Hello tout le monde
Côté archi, j'ai mon RIA Services côté serveur qui appelle un service WCF hosté sur une autre machine
A l'heure actuelle, dans mon DomainService, je crée un nouveau proxy à chaque fois que j'en ai besoin, exemple:
Mon service WCF est configuré comme tel:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 [Query] public IEnumerable<Underlying> GetAllUnderlyings() { IEnumerable<Underlying> result; using (var service = new EMapsService.ServiceClient()) { result = service.GetAllUnderlyings(); } return result; } [Query] public IEnumerable<PricingTask> GetAllPricingTasks() { IEnumerable<PricingTask> result; using (var service = new EMapsService.ServiceClient()) { result = service.GetAllPricingTasks(); } return result; }Le fait de créé un nouveau proxy à chaque fois implique une nouvelle instance de mon service à chaque appel et j'ai donc pas de "session".
Code : Sélectionner tout - Visualiser dans une fenêtre à part ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.PerSession
L'idée est de faire un truc comme ça:
Vous allez me dire que j'ai pas trop le choix si je veux pouvoir gérer une session mais quelles sont les différences entre les 2 façons de gérer mes proxies?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 private EMapsService.ServiceClient eMapsService; private EMapsService.ServiceClient EMapsService { get { if (eMapsService == null) { eMapsService = new EMapsService.ServiceClient(); } return eMapsService; } } [Query] public IEnumerable<Underlying> GetAllUnderlyings() { return EMapsService.GetAllUnderlyings(); }
Merci
Partager