Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <blockquote> <p>If I look around there are very few RESTful GUI webapplications. Is this because of historical reasons or is a RESTful design unproductive in common scenarios?</p> </blockquote> <p>My answer is subjective, but in my opinion, two major hurdles hinder RESTful development:</p> <ol> <li>Change - it very different from the way sites are traditionally designed</li> <li>Challenge - designing a pure RESTful server API and a corresponding rich, robust client UI isn't easy</li> </ol> <blockquote> <p>Complex GUIs will require a JavaScript application on the client in many cases.</p> </blockquote> <p>In my opinion, a complex, a rich client-side experience is going to require some in-depth JavaScript, regardless of the server-side implementation.</p> <blockquote> <p>You have to stay on the same page and reload only parts,</p> </blockquote> <p>This is a very different design from the traditional request/response full-page-to-full-page design. Each design has its own trade offs. REST designs work particularly well with AJAX calls, but the client-side code requires careful design to be maintainable and robust.</p> <p>A RESTful server with a thick-client:</p> <ul> <li>scales well: session information for every user isn't stored in scarce server memory</li> <li>less request/response data over the wire: not sending every page in full, not sending session IDs or <code>ViewState</code>s</li> <li>clean reusable URLs: provide a clean, decoupled server API that can support multiple UIs</li> <li>pure: strict adherence to the HTTP specification (GETs cause no side effects, etc.)</li> <li>client experience: richer, more responsive with asynchronous transactions</li> </ul> <p>However, as you mentioned thick-clients have drawbacks:</p> <ul> <li>more vulnerable to XSS attacks, RESTful URLs really need careful security</li> <li>complex JavaScript can be challenging to develop, maintain, and debug (using OO JavaScript can help mediate this)</li> <li>there is a need to indicate to the user that asynchronous requests are processing in the background</li> <li>more client-side failure-handling logic is required</li> <li>frameworks and IDE tools have been traditionally weaker for client-side development, compared to server-side (this is slowly getting better)</li> </ul>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload