Verschieben der gesamten UI-Logik auf die Clientseite?

9

Unser Team bestand ursprünglich hauptsächlich aus serverseitigen Entwicklern mit minimalen Kenntnissen in Javascript. In ASP.NET haben wir viel UI-Logik in CodeBehind oder in jüngerer Zeit über Controller in MVC geschrieben.

Vor einiger Zeit haben sich 2 hochrangige clientseitige Entwickler unserem Team angeschlossen. Sie können in HTMl / CSS / Javascript so ziemlich alles tun, was wir bisher mit serverseitigem Code und serverseitigen Websteuerelementen tun konnten:

  • Steuerelemente ein- / ausblenden
  • Validierung durchführen
  • Steuern Sie die AJAX-Aktualisierung

Also begann ich zu denken, dass es vielleicht effizienter wäre, nur eine API auf hoher Ebene um unsere Geschäftslogik herum zu erstellen, ähnlich wie die Amazon Fulfillment API: http://docs.amazonwebservices.com/fws/latest/APIReference/ , damit dieser Client Seitenentwickler würden die Benutzeroberfläche vollständig übernehmen, während sich serverseitige Entwickler nur auf die Geschäftslogik konzentrieren würden.

Für das Bestellsystem hätten Sie also eine API auf hoher Ebene wie:

OrderService.asmx

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

Es würde JSON / REST-Zugriff auf die API geben, so dass es einfach wäre, von der clientseitigen Benutzeroberfläche zu konsumieren. Wir könnten diese API sowohl für die interne UI-Entwicklung als auch für Dritte verwenden, um ihre eigenen Anwendungen zu erstellen.

Ist es angesichts der Fortschritte bei Javascript und der Verfügbarkeit guter clientseitiger Entwickler ein guter Zeitpunkt, Code-Behind / Controller loszuwerden und sich nur auf die Entwicklung von APIs auf hoher Ebene (ala Amazon) zu konzentrieren, die clientseitige Entwickler nutzen können?

Mag20
quelle

Antworten:

6

Die Validierung auf der Clientseite, um die Serverseite auszulagern und die Reaktionsfähigkeit der Anwendung zu erhöhen, ist in Ordnung, führt jedoch immer eine serverseitige Validierung durch. Man kann JavaScript deaktivieren und wenn man die REST-API direkt verwendet, wird niemals JavaScript benötigt.

Htbaa
quelle
Ja, die Validierung wäre auch Teil der Domain / API. Die Clientseite würde für jede Methode abrufen, was validiert werden muss, oder wir würden dokumentieren, was für jede Methode erforderlich ist. Wenn es immer noch Validierungsfehler bei Einsendungen von der Client-Seite gibt, würden wir Ausnahmen auslösen.
Mag20
4

Beachten Sie, dass für komplexe Benutzeroberflächen möglicherweise eine zusätzliche Ebene "UI-Unterstützung" erforderlich ist, um Dinge wie Hierarchien, Master / Detail-Beziehungen und andere UI-Konzepte zu unterstützen, die in der Geschäftsschicht nicht wirklich vorhanden sind. Es ist oft nicht möglich, einige dieser Funktionen zu implementieren, ohne mehrere Roundtrips zur Business-Schicht durchzuführen, was die Leistung beeinträchtigt. Zumindest bevorzuge ich die Ebene "UI-Unterstützung", um der Benutzeroberfläche direkten Zugriff auf die Datenbank zu gewähren.

TMN
quelle