IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Communication Foundation .NET Discussion :

[VB.NET] Comment transférer une liste d'objet typé en NetTCPBinding?


Sujet :

Windows Communication Foundation .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Dnx
    Dnx est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 290
    Par défaut [VB.NET] Comment transférer une liste d'objet typé en NetTCPBinding?
    Bonjour,

    je débute en WCF, j'ai crée un serveur (channelFactory) qui communique avec mon client.

    il crée bien le channel mais lorsque j'appelle une méthode de mon serveur en lui passant une liste d'objet typé, soit il freeze... soit il arrive dans la méthode avec une liste VIDE!

    Comprends pas...

    J'espère vraiment une aide ici...

    Merci d'avance,

    Bien à vous.

    Liste d'objet ci dessous :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
     
     
    Imports System.Runtime.Serialization
     
    Namespace [Object]
     
        '<DataContract(Name:="OradAction", [Namespace]:="http://bit.radiovision.be")> _
        <Serializable()> _
        <DataContract()> _
        <KnownType(GetType(OradParam))> _
        Public Class OradAction
     
            Private _scene As String
            Private _animation As String
            Private _trigger As Int32
            Private _params As List(Of OradParam)
     
            '<DataMember(Name:="Scene")> _
            <DataMember()> _
            Public Property Scene() As String
                Get
                    Return Me._scene
                End Get
                Set(ByVal value As String)
                    Me._scene = value
                End Set
            End Property
     
            '<DataMember(Name:="Animation")> _
            <DataMember()> _
            Public Property Animation() As String
                Get
                    Return Me._animation
                End Get
                Set(ByVal value As String)
                    Me._animation = value
                End Set
            End Property
     
            '<DataMember(Name:="Parameters")> _
            <DataMember()> _
            Public Property Parameters() As List(Of OradParam)
                Get
                    Return Me._params
                End Get
                Set(ByVal value As List(Of OradParam))
                    Me._params = value
                End Set
            End Property
     
            '<DataMember(Name:="Trigger")> _
            <DataMember()> _
            Public Property Trigger() As Int32
                Get
                    Return Me._trigger
                End Get
                Set(ByVal value As Int32)
                    Me._trigger = value
                End Set
            End Property
     
            Public Sub New(ByVal Scene As String, ByVal Animation As String, ByVal Trigger As Int32, ByVal Parameters As List(Of OradParam))
                Me._scene = Scene
                Me._animation = Animation
                Me._params = Parameters
                Me._trigger = Trigger
            End Sub
        End Class
     
    End Namespace
     
     
    Imports System.Runtime.Serialization
     
    Namespace [Object]
     
        '<DataContract(Name:="OradParam", [Namespace]:="http://bit.radiovision.be")> _
        <Serializable()> _
        <DataContract()> _
        Public Class OradParam
     
            Private _name As String
            Private _value As String
            Private _type As Type
     
            '<DataMember(Name:="Name")> _
            <DataMember()> _
            Public Property Name() As String
                Get
                    Return Me._name
                End Get
                Set(ByVal value As String)
                    Me._name = value
                End Set
            End Property
     
            '<DataMember(Name:="Value")> _
            <DataMember()> _
            Public Property Value() As String
                Get
                    Return Me._value
                End Get
                Set(ByVal value As String)
                    Me._value = value
                End Set
            End Property
     
            '<DataMember(Name:="ParamType")> _
            <DataMember()> _
            Public Property ParamType() As Type
                Get
                    Return Me._type
                End Get
                Set(ByVal value As Type)
                    Me._type = value
                End Set
            End Property
     
            Public Sub New(ByVal Name As String, ByVal Value As String, ByVal ParamType As String)
                Me._name = Name
                Me._type = System.Type.GetType(ParamType, True, False)
                Me._value = Value
            End Sub
     
        End Class
     
    End Namespace
    Contrat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        <ServiceContract(Namespace:="http://bit.radiovision.be/Contract/Orad.wcf")> _
        Public Interface IOrad
     
            <OperationContract()> _
            Sub DoProcess(ByVal aQList As List(Of OradAction))
     
            <OperationContract()> _
            Sub EventReceived(ByVal aDDOEventArgs As RVKernel.Object.DDOEventArgs)
     
        End Interface
    Le serveur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <CallbackBehavior(ConcurrencyMode:=ConcurrencyMode.Reentrant, UseSynchronizationContext:=False)> _
    Public Class MainForm
        Implements IOrad
        Implements IDataCallbackContext
     
    ...
    le client :

    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
     
    Public Shared Function ConnectOradController() As IOrad
     
                Dim _dataContext As New RadioVisionDataContext
                Dim bind As New NetTcpBinding(SecurityMode.None, True)
                Dim epBuilder As New System.Text.StringBuilder
                Dim ep As EndpointAddress
                Dim _config As ISingleResult(Of bit_sp_GetOradControllerConfigResult) = _dataContext.bit_sp_GetOradControllerConfig
                Dim _configEnum As IEnumerable(Of bit_sp_GetOradControllerConfigResult) = _config.ToList
                Dim _iOrad As IOrad = Nothing
                epBuilder.Append("net.tcp://").Append(_configEnum(0).PARAM_1).Append(":").Append(_configEnum(0).PARAM_2).Append("/").Append(_configEnum(0).PARAM_3)
     
                ep = New EndpointAddress(epBuilder.ToString)
     
                Try
                    _iOrad = ChannelFactory(Of IOrad).CreateChannel(bind, ep)
                Catch ex As Exception
                    Return Nothing
                End Try
     
                Return _iOrad
     
            End Function

  2. #2
    Dnx
    Dnx est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 290
    Par défaut
    J'ai trouvé...
    c'est à cause de la collection "List(Of ItemType)"

    il est de type complexe... et donc il fallait créer une classe (marquée Datacontract) qui implémente IList(of X)

    et d'y ajouter une property marqué avec un attribut "Datamember"

    Voila et cela fonctionne...

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/01/2009, 18h17
  2. Réponses: 3
    Dernier message: 16/09/2008, 15h28
  3. [VB.net] Comment gérer une liste de threads ?
    Par pdgnr dans le forum Windows Forms
    Réponses: 3
    Dernier message: 13/12/2006, 12h42
  4. [Vb.net] Comment faire une liste à partir d'une string
    Par NicoNGRI dans le forum ASP.NET
    Réponses: 1
    Dernier message: 25/10/2006, 14h15
  5. Réponses: 5
    Dernier message: 11/05/2006, 19h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo