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?
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.
sumber