Creating a custom proxy class

TL;DR

Learn how to build a custom proxy class in .NET 3.0 for duplex communication, enabling maintainable code and easy updates when service interfaces change.

20 August 2007
Written by Martin Hinshelwood
1 minute read
Comments
Subscribe

Instead of using the proxy generation features of Visual Studio you can create a custom proxy in .NET 3.0 to handle all of your needs in a more maintainable manor and with less code. This method works best when you have access to the interfaces that created the service.

Here is an example:

Namespace TeamFoundation.Proxies

    Public Class TeamServersClient
        Inherits System.ServiceModel.DuplexClientBase(Of Services.Contracts.ITeamServers)
        Implements RDdotNet.Proxies.IClientProxy
        Implements Services.Contracts.ITeamServers

        Public Sub New(ByVal callbackInstance As System.ServiceModel.InstanceContext, ByVal binding As System.ServiceModel.Channels.Binding, ByVal remoteAddress As System.ServiceModel.EndpointAddress)
            MyBase.New(callbackInstance, binding, remoteAddress)
        End Sub

        Public Sub AddServer(ByVal TeamServerName As String, ByVal TeamServerUri As String) Implements Services.Contracts.ITeamServers.AddServer
            MyBase.Channel.AddServer(TeamServerName, TeamServerUri)
        End Sub

        Public Function GetServers() As String() Implements Services.Contracts.ITeamServers.GetServers
            Return MyBase.Channel.GetServers
        End Function

        Public Sub RemoveServer(ByVal TeamServerName As String) Implements Services.Contracts.ITeamServers.RemoveServer
            MyBase.Channel.RemoveServer(TeamServerName)
        End Sub

        Public Function ServceUrl() As System.Uri Implements Services.Contracts.ITeamServers.ServceUrl
            Return MyBase.Channel.ServceUrl()
        End Function

    End Class

End Namespace

Because your classes implements the service’s interface when that interface changes you will be notified in Visual Studio that this has happened. This is a boon during development as changes can happen often.

This particular class is a duplex proxy, so communication can go both ways. You can download the source code for this from here .

Technorati Tags: .NET  SOA

Smart Classifications

Each classification [Concepts, Categories, & Tags] was assigned using AI-powered semantic analysis and scored across relevance, depth, and alignment. Final decisions? Still human. Always traceable. Hover to see how it applies.

Comments
Subscribe

What to read next

Article Engineering Excellence

Custom WCF Proxy

Explains how to create custom WCF proxies in .NET to avoid redundant class generation and object conversion when consuming Windows …

Read article
Article

Creating WCF Service Host Programmatically

Explains how to programmatically create and configure a WCF Service Host in .NET, including base addresses, endpoints, bindings, and service …

Read article
Article Engineering Excellence

Creating a managed service factory

Explains how to build a managed service factory to access and manage local or remote services across multiple servers, supporting flexible …

Read article
Article

Team Foundation Server 2010 Event Handling with Subscribers

Explains how to create and deploy server-side event subscribers in Team Foundation Server 2010 using the ISubscriber interface to handle and …

Read article