Précédent   Forum du club des développeurs et IT Pro > Dotnet > Développement Windows > Services Windows
Services Windows Forum d'entraide sur le développement de services Windows.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 02/09/2011, 16h00   #1
jeremieviel
Invité de passage
 
Inscription : juin 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 6
Points : 2
Points : 2
Par défaut WCF : hosteur et hosté

Bonjour,

Je suis train d'implémenter un service windows qui host une libriairy wcf.

L'objectif de ce service partager et de mettre à jour une collection d'objet

Chaque client peut ajouter des objets à la liste générale et ou en supprimer.

Le problème vient du faite que je ne sais pas ou stocker cette collection d'objet. Si je la mets en var globale dans la librairie WCF est elle ré-instanciée à chaque appel des clients

Alors ou mettre cet objet ?

Ci joint un exemple du code côté WCF librairie :

L'objet qui me pose problème est "Lignes"

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Public Class ServiceRDC
Public Class ServiceRDC
    Implements IServiceGeneral
 
    Public Lignes As List(Of Ligne)
 
    Private WithEvents Timer As New Timers.Timer
 
    Public Sub New()
 
        Try
 
            Timer.Interval = 60000
            '   Timer.Start()
            Lignes = Ligne.GetSaveLine()
 
        Catch ex As Exception
 
        End Try
 
 
    End Sub
 
    Public Function GetPoste(ByVal Poste As String, ByVal Ligne As String) As Poste Implements IServiceGeneral.GetPoste
 
        Try
            Dim LigneQuery = From TLigne In Lignes Where TLigne.Nom = Ligne Select TLigne.Postes
 
            For Each SelecPoste As List(Of Poste) In LigneQuery
 
                Dim StationQuery = From TStation In SelecPoste Where TStation.Nom = Poste Select TStation
 
                For Each _Poste As Poste In StationQuery
                    Return _Poste
                Next
 
            Next
        Catch ex As Exception
 
        End Try
 
        Return Nothing
 
    End Function

A chaque appel du client l'objet est ré-instancié.
En bref est-il possible d'instancier cette classe dans le "hosteur" ici un service Windows.

Merci d'avance et bon week end
Citation:
Vous aurez remarqué que j'utilise linq pour faire une requête sur ma collection d'objet. Je suis obligé faire deux boucles pour atteindre mon résultat. Si des esprits éclairés avaient une idée pour faire une seule requête Linq cela me serait d'une grande utilité
jeremieviel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 19h43   #2
h2s84
Modérateur
 
Avatar de h2s84
 
Homme Holty Samba SOW
Développeur .NET
Inscription : mars 2007
Messages : 2 738
Détails du profil
Informations personnelles :
Nom : Homme Holty Samba SOW
Âge : 28
Localisation : Sénégal

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2007
Messages : 2 738
Points : 5 157
Points : 5 157
Envoyer un message via MSN à h2s84 Envoyer un message via Skype™ à h2s84
Salut,

Tu as 2 méthodes pour ça. Toutes ces méthodes partent de la manière tu comptes exposés ton service et aussi si ta collection est déclarée en tant que membre d'instance ou membre statique.

1ère méthode :
  • Tu déclares ta collection dans ta classe Service en tant que membre d'instance
  • Tu déclares ton service en mode d'instanciation Singleton grâce à l'attribut ServiceBehavior en changeant sa propriété InstanceContextMode à InstanceContextMode.Single.
  • mettre la la propriété ConcurrencyMode à ConcurrencyMode.Single.

2ème méthode :
  • Tu déclares ta collection dans ta classe Service en tant que membre statique
  • Pour les problèmes de concurrence mettre aussi la la propriété ConcurrencyMode à ConcurrencyMode.Single.

La première méthode t'oblige à instancier ton service avant de l'héberger.
__________________
Consultant .Net chez SoftFluent
Découvrir notre produit CodeFluent Entities

Adhérer à l'association Fier d'être développeur
Les FAQs sur les technologies .Net voir ici
Les cours et tutos sur les technologies .Net voir ici
Les critiques sur les livres parlant des technologies .Net voir ici
Pensez à la balise [CODE]
Pensez au tag si votre problème est résolu
h2s84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 09h51   #3
jeremieviel
Invité de passage
 
Inscription : juin 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 6
Points : 2
Points : 2
Par défaut [Résolu]

Ca marche nickel

Merci beaucoup
jeremieviel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 10h11   #4
h2s84
Modérateur
 
Avatar de h2s84
 
Homme Holty Samba SOW
Développeur .NET
Inscription : mars 2007
Messages : 2 738
Détails du profil
Informations personnelles :
Nom : Homme Holty Samba SOW
Âge : 28
Localisation : Sénégal

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2007
Messages : 2 738
Points : 5 157
Points : 5 157
Envoyer un message via MSN à h2s84 Envoyer un message via Skype™ à h2s84
De rien ! Sinon t'as choisi laquelle des deux méthodes
__________________
Consultant .Net chez SoftFluent
Découvrir notre produit CodeFluent Entities

Adhérer à l'association Fier d'être développeur
Les FAQs sur les technologies .Net voir ici
Les cours et tutos sur les technologies .Net voir ici
Les critiques sur les livres parlant des technologies .Net voir ici
Pensez à la balise [CODE]
Pensez au tag si votre problème est résolu
h2s84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 10h37.


 
 
 
 
Partenaires

Hébergement Web