Mega Code Archive

 
Categories / VB.Net / Network Remote
 

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