Coding4ever’s Blog

Just coding… coding… and coding… because coding should be fun :)

Tutorial .NET Remoting Part 1 - Intro

| Comments

Apa itu .NET Remoting ?

.NET Remoting adalah suatu mekanisme komunikasi antar objek yang berbeda proses, baik dikomputer yang sama, beda komputer dalam 1 jaringan atau antar jaringan.

Remoting menyediakan kemampuan untuk menjalankan method pada sisi server, melewatkan parameter dan menerima nilai kembalian.

Remote object berada disisi server, mesin lain jika ingin berinteraksi dengan remote object membutuhkan referensi dari remote object tersebut.

.NET mempunyai dua solusi untuk pengembangan aplikasi klien server yaitu :

  1. .NET Remoting/WCF

  2. ASP .NET WebServices

Teknologi remoting lainnya : DCE/RPC, CORBA, DCOM, MTS/COM+, Java RMI, Java EJB, Web Service/SOAP/XML-RPC

Arsitektur

Proxy adalah objek yang bertugas untuk melakukan komnikasi dengan remote object, semua method yang dipanggil melalui objek proxy akan dijalankan di server.

Formatter adalah objek yang bertugas untuk melakukan proses serialisation dan deserialization ke format data yang sesuai sebelum data dikirimkan melalui objek transport channel.

Ada 2 jenis formatter yaitu :

  1. BinaryFormatter

  2. SoapFormatter (format data berupa XML)

Secara default TCP channel menggunakan binary formatter dan HTTP channel menggunakan SOAP formatter.

Transport Channel merupakan perangkat yang bertugas sebagai alat transportasi yang digunakan dalam proses remoting.

Ada 2 jenis channel yaitu :

  1. Channel objek yang ada di server bertugas untuk menerima request dari klien dan sudah diset untuk port tertentu.

  2. Channel objek yang ada di klien yang bertugas untuk melakukan request ke server dan menerima balasan dari server, untuk port mengikuti port yang sudah diset pada channel objek server.

Objek channel sendiri menggunakan 2 jenis protokol yaitu Protokol TCP (Transmission Control Protocol) dan Protokol HTTP (Hypertext Transfer Protocol).

Terakhir Dispatcher bertugas untuk memanggil method remote object dan mengembalikan hasilnya ke klien dengan melewati semua layer.

Remote Object

Semua objek yang bisa diserialisasi dan dilewatkan melalui domain aplikasi yang berbeda disebut dengan remote object. Setiap objek bisa menjadi remote object dengan cara :

  1. Turunan dari class MarshalByRefObject

  2. Dengan menambahkan atribut [Serializable] Marshalling

Proses pengemasan data yang sudah diserialisasi sebelum dikirim ke klien atau sebaliknya. Ada 2 jenis marshaling yaitu :

  1. Marshalling by value Objek Marshal-by-value (MBV) akan disalin dan diteruskan dari aplikasi server ke aplikasi klien. Ketika klien memanggil metode pada objek MBV, maka objek MBV itu akan di serialisasi dan ditransfer melalui jaringan ke klien. Kemudian method tersebut dapat dipanggil secara langsung pada klien dan objek sudah tidak dianggap lagi sebagai remote object

  2. Marshalling by reference Objek Marshalled by reference (MBR) diakses disisi klien menggunakan objek proxy. Klien hanya menyimpan referensi ke objek tersebut. Jadi inilah remote object yang sebenarnya

MBR dikelompokkan menjadi 2 group yaitu : 1. Server-activated objects (SAOs) 2. Client-activated objects (CAOs)

Server-activated objects (SAOs)

Adalah remote object yang masa berlakunya ditentukan oleh server. Remote object dibuat ketika aplikasi klien memanggil salah satu method remote object melalui objek proxy. SAOs dapat diaktifkan dengan 2 mode :

  1. SingleCall, objek yang dibuat berdasarkan permintaan dari klien dan otomatis masuk ke garbage collection jika sudah digunakan.

  2. Singleton, satu objek melayani semua permintaan klien dan secara default objek yg diaktifkan dg mode ini akan dihapus setelah 5 menit.

Client-activated objects (CAOs)

Berbeda dengan SAOs, Client Activated Objects (CAOs) adalah remote object yang masa berlakunya ditentukan oleh klien. CAO hanya melayani klien yang memintanya, selain itu CAO bisa digunakan secara berulang-ulang.

Pada pembahasan kali ini sy batasi hanya pada Server-activated objects dengan mode SingleCall, karena itu yg disarankan oleh om Ingo Rammer pengarang buku Advanced .NET Remoting (C# Edition).

Terakhir jika ada penjelasan sy diatas yg kurang tepat mohon koreksinya dan Insya Allah akan berlanjut pada kesempatan berikutnya dan tentunya disertai dengan contoh.

Selamat mencoba :)

Referensi :

  1. Advanced .NET Remoting (C# Edition)

  2. .NET Remoting Use-Cases and Best Practices

  3. .NET Remoting with an easy example

  4. All you need to know about .NET Remoting

  5. Remoting An Interface Based Approach

  6. Binary Serialization

  7. Serialization vs Marshaling

  8. Marshal-by-ref versus Serializable Objects

  9. .Net Remoting: the Quick and Dirty Guide

.net remoting, visual c#

Tentang Penulis

Software developer yang fokus mengembangkan aplikasi di atas platform .NET (Desktop, ASP.NET MVC, Web Service, Microservice) dan Android. Senang mempelajari teknologi baru terutama di bidang OOP, Design Pattern, ORM, Database, Continuous Integration & Deployment dan arsitektur Microservice.
Selain mengajar, saat ini penulis juga bekerja sebagai staf IT di salah satu PTS di Yogyakarta sebagai senior software developer. Di waktu luang insya Alloh akan terus berbagi pengalaman di blog ini :)

« Visual Studio Color Schemes Tutorial .NET Remoting Part 2 - Project CalculatorLib »

Comments