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.Configura tionFile, True)
Main()
End Sub
<SecurityPermission(SecurityAction.Demand, Flags:=SecurityPermissionFlag.RemotingConfiguratio n)> _
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(ob j))
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.Configura tionFile, 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 espero, un saludo.