From c082222c800ad38fc531834bb5e1783f776fa382 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Fri, 16 Dec 2022 09:04:14 +0100 Subject: [PATCH] Messaging: Add binding class --- Messaging/Messaging.vbproj | 1 + Messaging/WCF/Binding.vb | 31 +++++++++++++++++++++++++++++++ Messaging/WCF/Channel.vb | 29 ++++++----------------------- 3 files changed, 38 insertions(+), 23 deletions(-) create mode 100644 Messaging/WCF/Binding.vb diff --git a/Messaging/Messaging.vbproj b/Messaging/Messaging.vbproj index 9ce49a60..d0a2b3b2 100644 --- a/Messaging/Messaging.vbproj +++ b/Messaging/Messaging.vbproj @@ -96,6 +96,7 @@ True + diff --git a/Messaging/WCF/Binding.vb b/Messaging/WCF/Binding.vb new file mode 100644 index 00000000..7ff1cf49 --- /dev/null +++ b/Messaging/WCF/Binding.vb @@ -0,0 +1,31 @@ +Imports System.Net +Imports System.ServiceModel +Imports System.Xml + +Namespace WCF + Public Class Binding + Public Shared Function GetBinding(Optional AuthenticationMode As TcpClientCredentialType = TcpClientCredentialType.Windows) As NetTcpBinding + Return New NetTcpBinding() With { + .MaxReceivedMessageSize = Constants.ChannelSettings.MAX_RECEIVED_MESSAGE_SIZE, + .MaxBufferSize = Constants.ChannelSettings.MAX_BUFFER_SIZE, + .MaxBufferPoolSize = Constants.ChannelSettings.MAX_BUFFER_POOL_SIZE, + .TransferMode = TransferMode.Streamed, + .Security = New NetTcpSecurity() With { + .Mode = SecurityMode.Transport, + .Transport = New TcpTransportSecurity() With { + .ClientCredentialType = AuthenticationMode + } + }, + .ReaderQuotas = New XmlDictionaryReaderQuotas() With { + .MaxArrayLength = Constants.ChannelSettings.MAX_ARRAY_LENGTH, + .MaxStringContentLength = Constants.ChannelSettings.MAX_STRING_CONTENT_LENGTH + } + } + End Function + + Public Shared Function GetAddress(pHost As String, pPort As Integer, pName As String) As Uri + Return New Uri($"net.tcp://{pHost}:{pPort}/DigitalData/Services/{pName}") + End Function + End Class + +End Namespace \ No newline at end of file diff --git a/Messaging/WCF/Channel.vb b/Messaging/WCF/Channel.vb index 71a45348..5d05e590 100644 --- a/Messaging/WCF/Channel.vb +++ b/Messaging/WCF/Channel.vb @@ -11,9 +11,9 @@ Namespace WCF Public Event Reconnect As EventHandler - Public Sub New(pLogConfig As LogConfig, pServerAddress As ServerAddress) + Public Sub New(pLogConfig As LogConfig, pServerAddress As ServerAddress, Optional pName As String = "Main") MyBase.New(pLogConfig) - ChannelFactory = GetChannelFactory(pServerAddress) + ChannelFactory = GetChannelFactory(pServerAddress, pName) End Sub ''' @@ -40,30 +40,13 @@ Namespace WCF ''' The service name, will be: net.tcp://ip:port/DigitalData/Services/[name] ''' The service address, in the form of ip address and port ''' - Private Function GetChannelFactory(pAddress As ServerAddress, Optional pName As String = "Main") As ChannelFactory(Of TChannel) - Dim oBinding = GetBinding() - Dim oAddress = New EndpointAddress($"net.tcp://{pAddress.Host}:{pAddress.Port}/DigitalData/Services/{pName}") + Private Function GetChannelFactory(pAddress As ServerAddress, pName As String) As ChannelFactory(Of TChannel) + Dim oBinding = Binding.GetBinding() + Dim oAddress = New EndpointAddress(Binding.GetAddress(pAddress.Host, pAddress.Port, pName)) Dim oFactory = New ChannelFactory(Of TChannel)(oBinding, oAddress) Return oFactory End Function - Public Shared Function GetBinding(Optional AuthenticationMode As TcpClientCredentialType = TcpClientCredentialType.Windows) As NetTcpBinding - Return New NetTcpBinding() With { - .MaxReceivedMessageSize = Constants.ChannelSettings.MAX_RECEIVED_MESSAGE_SIZE, - .MaxBufferSize = Constants.ChannelSettings.MAX_BUFFER_SIZE, - .MaxBufferPoolSize = Constants.ChannelSettings.MAX_BUFFER_POOL_SIZE, - .TransferMode = TransferMode.Streamed, - .Security = New NetTcpSecurity() With { - .Mode = SecurityMode.Transport, - .Transport = New TcpTransportSecurity() With { - .ClientCredentialType = AuthenticationMode - } - }, - .ReaderQuotas = New XmlDictionaryReaderQuotas() With { - .MaxArrayLength = Constants.ChannelSettings.MAX_ARRAY_LENGTH, - .MaxStringContentLength = Constants.ChannelSettings.MAX_STRING_CONTENT_LENGTH - } - } - End Function + End Class End Namespace