Memindahkan semua logika UI ke Sisi Klien?

9

Tim kami awalnya sebagian besar terdiri dari pengembang sisi server dengan keahlian minimum dalam Javascript. Dalam ASP.NET kita biasa menulis banyak logika UI dalam kode-belakang atau yang lebih baru melalui pengontrol di MVC.

Beberapa saat yang lalu 2 pengembang sisi klien tingkat tinggi bergabung dengan tim kami. Mereka dapat melakukan apa saja di HTMl / CSS / Javascript yang bisa kita lakukan sebelumnya dengan kode sisi server dan kontrol web sisi server:

  • Tampilkan / sembunyikan kontrol
  • Lakukan validasi
  • Kontrol penyegaran AJAX

Jadi saya mulai berpikir bahwa mungkin akan lebih efisien untuk hanya membuat API tingkat tinggi di sekitar logika bisnis kami, agak seperti API Pemenuhan Amazon: http://docs.amazonwebservices.com/fws/latest/APIReference/ , sehingga klien pengembang sisi akan sepenuhnya mengambil alih UI, sementara pengembang sisi server hanya akan berkonsentrasi pada logika bisnis.

Jadi untuk sistem pemesanan Anda akan memiliki API tingkat tinggi seperti:

OrderService.asmx

CreateOrderResponse CreateOrder(CreateOrderRequest)
AddOrderItem
AddPayment
-
SubmitPayment
-
GetOrderByID
FindOrdersByCriteria
...

Akan ada akses JSON / REST ke API, sehingga akan mudah untuk mengkonsumsi dari UI sisi klien. Kita dapat menggunakan API ini untuk pengembangan UI internal dan juga untuk pihak ketiga untuk membuat aplikasi mereka sendiri.

Dengan kemajuan dalam Javascript dan ketersediaan pengembang sisi klien yang baik, apakah ini saat yang tepat untuk menyingkirkan kode-belakang / pengontrol dan hanya berkonsentrasi pada pengembangan API tingkat tinggi (ala Amazon) yang dapat dikonsumsi pengembang sisi klien?

Mag20
sumber

Jawaban:

6

Validasi di sisi klien untuk membongkar sisi sisi server dan meningkatkan daya tanggap aplikasi baik-baik saja tetapi selalu melakukan validasi sisi server. Seseorang dapat mematikan JavaScript dan ketika menggunakan REST API secara langsung, tidak diperlukan JavaScript.

Htbaa
sumber
Ya, validasi juga akan menjadi bagian dari Domain / API. Sisi klien akan menarik apa yang perlu divalidasi dari API atau kami akan mendokumentasikan apa yang diperlukan, dll ... untuk setiap metode. Jika masih ada kesalahan validasi pada kiriman dari sisi klien - kami akan memberikan pengecualian.
Mag20
4

Satu hal yang perlu diperhatikan adalah bahwa UI yang kompleks mungkin memerlukan lapisan "UI assist" tambahan untuk mendukung hal-hal seperti hierarki, hubungan master / detail dan konsep UI lainnya yang tidak benar-benar ada di lapisan bisnis. Seringkali tidak mungkin untuk mengimplementasikan beberapa kemampuan ini tanpa melakukan perjalanan bolak-balik ke lapisan bisnis, yang menurunkan kinerja. Setidaknya, saya lebih suka memiliki lapisan "UI assist" untuk memberikan akses langsung UI ke database.

TMN
sumber