Visual Basic.NET - .net remoting

 
Vista:

.net remoting

Publicado por Esefer (1 intervención) el 26/05/2010 10:22:53
Hola a tod@s. Me estoy iniciando en el mundo del .net remoting y ya me han surgido los primeros problemas. Estoy haciendo una aplicación cliente-servidor que comparten un objeto remoto. El canal por el que se conectan es TCP a través de un archivo xml de configuración. La forma de conexión es de tipo singleton.
Al iniciarse, el servidor modifica el objeto remoto(que tiene 2 atributos,un int32 y un String) cambiando el int32. Entonces el cliente lee o debería(porque de momento no lo hace, :( )del objeto y según que número sea pues hará unas cosas u otras. No sé si el problema está al tratar el objeto con el server o con con el cliente, pues éste no lee el dato que le mando en el servidor.

Este es el código del cliente

Imports System.Runtime.Remoting
Imports System.IO
Imports System.Security.Permissions

Public Class frmCliente

Dim contador As Integer = 0

Dim calc As New SimpleLibrary.Calculator

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

RemoteThreadButton.Enabled = False
'Al cargar el form se configura la conexion
RemotingConfiguration.Configure( _
AppDomain.CurrentDomain.SetupInformation.ConfigurationFile, True)

Main()

End Sub

Private Sub ConfigureButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ConfigureButton.Click
RemotingConfiguration.Configure( _
AppDomain.CurrentDomain.SetupInformation.ConfigurationFile, True)
Main()
End Sub

<SecurityPermission(SecurityAction.Demand, Flags:=SecurityPermissionFlag.RemotingConfiguration)> _
Public Shared Sub Main()

Dim obj As SimpleLibrary.Calculator = New SimpleLibrary.Calculator()

RemotingServices.SetObjectUriForMarshal(obj, "tcp://localhost:49341/Calculator.rem")
RemotingServices.Marshal(obj)

Console.WriteLine(RemotingServices.GetObjectUri(obj))
frmCliente.cmbBillete.Text = obj.Billete

End Sub

la libreria que se trata como objeto remoto

Imports System.Runtime.Remoting.ObjRef

<Serializable()> _
Public Class Calculator
Inherits MarshalByRefObject

Private codBillete As Int32
Private cadena As String

Public Property Billete() As Int32
Get
Billete = codBillete
End Get
Set(ByVal Value As Int32)
codBillete = Value
End Set
End Property

Public Property codCadena() As String
Get
codCadena = cadena
End Get
Set(ByVal Value As String)
cadena = Value
End Set
End Property

End Class

El server....................................................................

Imports System.Security.Permissions
Imports System.Runtime.Remoting
Imports System.IO
Imports System.Runtime.Serialization

Public Class frmServer

Dim contador As Integer = 0

Private Sub ComboBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.TextChanged
cmdStart.Enabled = True
End Sub

Private Sub cmdStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdStart.Click

Module1.Main()
ComboBox1.Enabled = False
Dim calc As New SimpleLibrary.Calculator
calc.Billete = ComboBox1.Text
Console.WriteLine(CStr(calc.Billete))
Console.ReadLine()

End Sub

End Class

El modulo del Server

Imports System.Runtime.Remoting

Module Module1

Sub Main()
'RemotingConfiguration.Configure( _
' AppDomain.CurrentDomain.SetupInformation.ConfigurationFile, True)

RemotingConfiguration.RegisterWellKnownServiceType( _
GetType(SimpleLibrary.Calculator), _
"Calculator.rem", _
WellKnownObjectMode.Singleton)

Console.Write("Press <enter> to exit")
Console.Read()

End Sub

End Module

Los ficheros de conexión XML están correctos, pero si hace falta los envio.
Gracias por la colaboración. os pespero, un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder