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

  • For the first time in modern history, workplace demographics now span four generations. Understanding the unique social influences that have shaped the behaviors of each is instrumental in creating productive work teams. And when managed effectively, their strengths, perspectives, and experiences can bring synergy in the workplace. Download this white paper for best practices on how to better understand and effectively manage a multi-generational workforce.

  • Gain buy-in, choose the right tools, and encourage employees to participate. Whether you need help introducing social media or making your efforts more successful, this is the guide for you. It contains 140 tips in tweet form (140 characters or less) with ideas for promoting social media, deciding which venues to use, and encouraging participation. Plus, the guide contains links to social media statistics, informative websites, and other resources.

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date