Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Invité de passage
    Inscrit en
    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
    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é

  2. #2
    Modérateur
    Avatar de h2s84
    Homme Profil pro Holty Samba SOW
    Développeur .NET
    Inscrit en
    mars 2007
    Messages
    3 021
    Détails du profil
    Informations personnelles :
    Nom : Homme Holty Samba SOW
    Âge : 29
    Localisation : Sénégal

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

    Informations forums :
    Inscription : mars 2007
    Messages : 3 021
    Points : 5 847
    Points
    5 847

    Par défaut

    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 FAQ 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

  3. #3
    Invité de passage
    Inscrit en
    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

  4. #4
    Modérateur
    Avatar de h2s84
    Homme Profil pro Holty Samba SOW
    Développeur .NET
    Inscrit en
    mars 2007
    Messages
    3 021
    Détails du profil
    Informations personnelles :
    Nom : Homme Holty Samba SOW
    Âge : 29
    Localisation : Sénégal

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

    Informations forums :
    Inscription : mars 2007
    Messages : 3 021
    Points : 5 847
    Points
    5 847

    Par défaut

    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 FAQ 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

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •