Sedikit tentang sepeda

Setelah kami menetap dengan teman sekelas pada tahun 2014 untuk menghentikan startup. Istilah, hasil dan fokus produk tidak penting untuk teks ini. Yang penting adalah bahwa klien adalah aplikasi Java seluler untuk Android, dan server adalah layanan yang ditulis dalam C # yang terhubung dengan penyimpanan data. Selanjutnya - cerita peringatan untuk orang tua berambut abu-abu (dari program) untuk hiburan, untuk pemuda tanpa jenggot - untuk membangun.



Untuk memastikan bahwa saya, sebagai pengembang sisi server, memiliki segalanya dalam kendali, versi pertama server ditulis menggunakan kelas System.Net.Sockets.Socket, seperti yang dijelaskan artikel dari Microsoft. Karena soket berfungsi (pada prinsipnya, seperti semua teknologi lain yang terdaftar lebih jauh dari Microsoft, kecuali WCF) pada metode Mulai / Akhir, pembungkus kecil telah ditulis yang menyediakan kemampuan untuk bekerja dengan model berbasis peristiwa. Ini adalah langkah pertama, klien dan server bekerja dengan baik.



Karena segera kami membutuhkan SSL, kami harus pindah ke level yang lebih tinggi dari model OSI dan menulis ulang sisi server menggunakan kelas System.Net.Sockets.TcpListener, tempat SSL disekrup. Ini adalah langkah dua dan dua setengah, klien dan server bekerja dengan baik, klien bahkan tidak perlu ditulis ulang - intersepsi paket menunjukkan bahwa semuanya baik-baik saja, tidak ada yang berubah.



Kemudian saya menginginkan HTTPS lengkap dengan semua lonceng dan peluitnya, yang servernya ditulis ulang lagi - sekarang menggunakan kelas System.Net.HttpListener. Ini adalah langkah tiga dan tiga setengah, dan sekali lagi semuanya bekerja dengan baik, dan sekali lagi klien tidak perlu dilakukan ulang. Demi keadilan, perlu dicatat bahwa selain klien seluler khusus, ada juga klien C # pengujian dan sejumlah pengujian - tetapi harus ditulis ulang dengan biaya tertentu.



Langkah keempat datang ketika kami mulai menskalakan sistem kami ke segala arah, dan pembungkus kami sendiri menjadi penghambat proyek. Kemudian saya membaca tentang WCF dan pada suatu malam (yah, hampir) saya menulis ulang seluruh interaksi. Di sisi klien (dan dalam paket yang dikirim), semuanya tetap sama, tetapi kode sisi server telah dikurangi dari setengah lusin kelas serius menjadi beberapa baris.



Kisah ini memiliki dua moral.



  1. (Jelas) Menciptakan sepeda itu buruk. Jika saya segera membuka Google dan tidak takut menggunakan teknologi baru untuk diri saya sendiri, saya akan dapat mengurangi pengembangan server sekitar sepertiga.
  2. (dan ini adalah hal utama) Tugas menerapkan mekanisme yang sama menggunakan alat yang berbeda adalah cara belajar terbaik, memungkinkan Anda mencapai pemahaman yang mendalam tentang topik tersebut. Ketika Anda melakukan sesuatu beberapa kali, Anda akan mengingatnya. Namun bila di saat yang sama Anda mempersulit (mengganti) alat yang digunakan setiap saat, maka skill diasah jauh lebih baik.



All Articles