TDDD27 Advanced Web Programming
Server-side framework: Your web application should be built using a large-scale server-side framework or set of techniques facilitating larger systems. Examples of server side frameworks include Django, Node.js based frameworks like Express.js (we don't use Node.js pure), Ruby on Rails, TurboGears, Codegniter, ASP.Net MVC, and Java frameworks like Play or Lift. There are many more and you will save a lot of time searching for a suitable framework.
Your server should have a service design - and you need to think in terms of supporting multiple clients doing different things. You, only need to implement one client, but the design of your server code should clearly handle this. For some frameworks this may require you to use it with dicipline, for others it comes naturally. Thinking REST takes you part of the way but really the service-oriented design is in the design. (Also, this is not solved by using a responsive design front-end though responsive front-ends is almost the norm today).
Using multiple micro-frameworks and services in a distributed way is really interesting and using systems like Meteor - that consider the back-end a service - is also very relevant and we will discuss that for the interested student in the project proposals.
Remember: Don't use designers like in visual Studio or use UI-component generated on the server. You send data to the client and build the UI on the client using your frameworks and your structural frameworks to do this in an efficient way.
In 2014 we will not allow GWT/GAE-projects since this hides and automates the very core technologies of the web.
Data and user management
Data management:(A) Traditional ER database like MySQL - use an ORM (object-relational mapping) such as LINQ/Entitiy Framework in .Net C# or Active Records, available in most frameworks. (B) NoSQL storage - use that which works.
Account management: Use what provided or use an external systems such as oAuth, Open Id or Open Social, to login and authenticate users. What you cannot do, unless specifically granted that permission, is to build your own system.
As always, if you know what you're doing and want to try new and totally outside the box (but large-scale web) tool-chain that is appreciated, even applauded, even if you end up failing dramatically. The key word however is large-scale development, in both ends of the web.
Micro frameworks like Flask in Python or SlimPHP are also very interesting in the course but should be combined with other tools to create a fuller set of tools. The most interesting parts of the web happening now is data synchronization and data binding, fully abstracting the use of callbacks from AJAX requests leading to code separation and bugs.
Page responsible: Erik Berglund
Last updated: 2012-03-01