Validate Data remotely : Remote Basics « Network Remote « VB.Net






Validate Data remotely

///////////////////////////////////general.vb
// Compile: vbc /target:library  general.vb
Imports System

Public Interface IEmployeeManager
    Function getEmployee(ByVal id As Integer) As Employee
    Function validate(ByVal cust As Employee) As ValidationResult
End Interface


<Serializable()> _
Public Class ValidationResult

    Public Sub New(ByVal ok As Boolean, ByVal msg As String)
        Console.WriteLine("ValidationResult: Object created")
        Me.Ok = ok
        Me.ValidationMessage = msg
    End Sub 'New

    Public Ok As Boolean
    Public ValidationMessage As String

End Class

<Serializable()> _
Public Class Employee

    Public FirstName As String
    Public LastName As String
    Public DateOfBirth As DateTime


    Public Sub New()
        Console.WriteLine("Employee.constructor: Object created")
    End Sub 'New

    Public Function getAge() As Integer
        Dim tmp As TimeSpan = DateTime.Today.Subtract(DateOfBirth)
        Return tmp.Days \ 365 ' rough estimation
    End Function
End Class



///////////////////////////////////test.vb
// Compile: vbc /t:exe /r:general.dll test.vb
Imports System
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels.Http
Imports System.Runtime.Remoting.Channels

Module Client

    Sub Main()
        Dim channel As New HttpChannel()
        ChannelServices.RegisterChannel(channel,false)

        Dim mgr As IEmployeeManager = CType(Activator.GetObject( _
            GetType(IEmployeeManager), "http://localhost:1234/EmployeeManager.soap"), _
            IEmployeeManager)

        Dim cust As New Employee()
        cust.FirstName = "James"
        cust.LastName = "Band"
        cust.DateOfBirth = New DateTime(1999, 5, 12)

        Dim res As ValidationResult = mgr.validate(cust)

        Console.WriteLine("Validation result for {0} {1}" & vbCrLf & _
            "-> {2}: {3}", cust.FirstName, cust.LastName, res.Ok.ToString(), _
            res.ValidationMessage)

    End Sub
End Module

///////////////////////////////////server.vb
// vbc /target:exe  /r:general.dll server.vb
Imports System
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels.Http
Imports System.Runtime.Remoting.Channels

Class EmployeeManager
    Inherits MarshalByRefObject
    Implements IEmployeeManager

    Public Sub New()
        Console.WriteLine("EmployeeManager: Object created")
    End Sub


    Public Function getEmployee(ByVal id As Integer) As Employee _
    Implements IEmployeeManager.getEmployee
        Dim tmp As New Employee()
        tmp.FirstName = "James"
        tmp.LastName = "Band"
        tmp.DateOfBirth = New DateTime(1989, 7, 4)

        Return tmp
    End Function


    Public Function validate(ByVal cust As Employee) As ValidationResult _
    Implements IEmployeeManager.validate

        Dim age As Integer = cust.getAge()
        Console.WriteLine("EmployeeManager.validate() for {0} aged {1}", _
            cust.FirstName, age)

        If cust.FirstName Is Nothing Or cust.FirstName.Length = 0 Then
            Return New ValidationResult(False, "Firstname missing")
        End If

        If cust.LastName Is Nothing Or cust.LastName.Length = 0 Then
            Return New ValidationResult(False, "Lastname missing")
        End If

        If age < 0 Or age > 120 Then
            Return New ValidationResult(False, "Employee must be younger than 120 years")
        End If

        Return New ValidationResult(True, "Validation succeeded")
    End Function

End Class

Module ServerStartup

    Sub Main()
        Console.WriteLine("ServerStartup.Main(): Server started")

        Dim chnl As New HttpChannel(1234)
        ChannelServices.RegisterChannel(chnl,false)

        RemotingConfiguration.RegisterWellKnownServiceType( _
            GetType(EmployeeManager), _
            "EmployeeManager.soap", _
            WellKnownObjectMode.Singleton)

        
        Console.ReadLine()

    End Sub
End Module



           
       








Related examples in the same category

1.Your first Remote client and server
2.Call remote object method to Get and set variable