Data Transfer Object Pattern Goes VB.NET

Data Transfer Object Pattern Goes VB.NET

Here is a simple example for the Data Transfer Pattern (DTO) Pattern in VB.NET. The task for using this pattern is the following:

The client must not know the details about the structure of business objects on the server side. However, the client must be able to work with all data from the business objects.

We write an example for a business report. The report contains two business objects:

  • ContractObject
  • BusinessPartnerObject

Our solution has a service-oriented architecture and the client gets only ONE object from the service with all datas from both business objects. We call this a Data Transfer Object (DTO).

The DTO looks like this:

Public Class ReportDTO

   Private m_contractname As String    = ""
   Private m_contractdate As Date      = Nothing
   Private m_businesspartner As String = ""

   Public Property ContractName() As String

Get
   Return Me.m_contractname
   End Get

   Set(ByVal value As String)
   Me.m_contractname = Value
   End Set
   End Property

   Public Property ContractDate() As Date

Get
   Return Me.m_contractdate
   End Get

   Set(ByVal value As Date)
   Me.m_contractdate = Value
   End Set
   End Property

   Public Property BusinessPartner() As String

Get
   Return Me.m_businesspartner
   End Get

   Set(ByVal value As String)
   Me.m_businesspartner = Value
   End Set
   End Property
   End Class

And the business objects are here:

Public Class ContractBDO

   Private m_contractname As String = ""
   Private m_contractdate As Date   = Nothing

   Public Property ContractName() As String

Get
   Return Me.m_contractname
   End Get

   Set(ByVal value As String)
   Me.m_contractname = Value
   End Set
   End Property

   Public Property ContractDate() As Date

Get
   Return Me.m_contractdate
   End Get

   Set(ByVal value As Date)
   Me.m_contractdate = Value
   End Set
   End Property


End Class



Public Class BusinessPartnerBDO
   Private m_businesspartner As String = ""

   Public Property BusinessPartner() As String

Get
   Return Me.m_businesspartner
   End Get

   Set(ByVal value As String)
   Me.m_businesspartner = Value
   End Set
   End Property

   End Class

The client is now able to fill the DTO with necessary data and send it back to the service. The service has an assembler that is able to transport the date from the DTO to the expected business object and the reverse.

And, here is our assembler:

Public Class ReportAssembler

   Public Shared Function MakeContractObject(ByVal dto As ReportDTO) _
          As ContractBDO


   Dim obj As New ContractBDO
   obj.contractname = dto.contractname
   obj.contractdate = dto.contractdate
   Return obj

   End Function

   Public Shared Function MakeBusinessPartnerObject(ByVal dto _
          As ReportDTO) As BusinessPartnerBDO

   Dim obj As New BusinessPartnerBDO
   obj.businesspartner = dto.businesspartner
   Return obj

   'Reverse Methods go here

   End Class

The service call from the client side looks like this:

Public Class ReportService

   'Example for writing the objects from the DTO
   Public Sub WriteObjects(ByVal dto As ReportDTO)

   Dim trans As Transaction    'Example only

   Dim objContract As ContractBDO = _
       ReportAssembler.MakeContractObject(dto)
   Dim objBusinessPartner As BusinessPartnerBDO = _
       ReportAssembler.MakeBusinessPartnerObject(dto)

   trans.AddWriteObject(objContract)
   trans.AddWriteObject(objBusinessPartner)

   trans.Execute()

   End Sub

   End Class

The advantage is that the client gets only one object and only the service task has to fill the two database relations. The client is always stupid and knows nothing about the data structure in the background.



Comments

  • There are no comments yet. Be the first to comment!

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Java developers know that testing code changes can be a huge pain, and waiting for an application to redeploy after a code fix can take an eternity. Wouldn't it be great if you could see your code changes immediately, fine-tune, debug, explore and deploy code without waiting for ages? In this white paper, find out how that's possible with a Java plugin that drastically changes the way you develop, test and run Java applications. Discover the advantages of this plugin, and the changes you can expect to see …

  • Agile development principles have gone from something used only by cutting-edge teams to a mainstream approach used by teams large and small. If you're not using agile methods already though, or if you've only been exposed to agile on small projects here and there, you may wonder if agile can ever work in your environment. Read this eBook to learn the fundamentals of agile and how to increase the productivity of your software teams while enabling them to produce higher-quality solutions that better fulfill …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds