Posts

Showing posts with the label MVC

Our Adventures into Creating a Secure MVC Framework - Part 3 - Experimentation

Image
Now that we have defined our design requirements, we needed to determine the tools and approach that we would use to create our framework. We had created previous versions of iPhora Touch using Dojo and wanted to start from scratch on what tools we would use to create our framework. Everyone that I talked to asked me why I was using Dojo since it is big and slow.  So we started looking at different options.  Do we take one of the existing more bare bones MVC framework like Backbone and take components from them to create our framework or do we start totally from scratch using JavaScript or jQuery. There are so many frameworks out there it is amazing. You can find many examples of MVC frameworks in action at todomvc.com. It was very difficult reading up on each framework, understanding them, and experimenting with them to see if they would work for us. Since we were already familiar with Dojo, we decide to start from there.  We found a couple of articles and frameworks...

Our Adventures into Creating a Secure MVC Framework - Part 2 - Design Requirements

Image
When we created iPhora Touch version 2, it was a multiple page application that utilized Dojo 1.53 and Bootstrap 2.32.  The interface worked well on desktops but broke down when used on tablets. It was totally unusable in a phone environment.  Since it was a multiple page solution each page needed to reload Dojo as you jump from page to page. Since we wanted a secured environment, pages could not be cached. However, this slowed down the loading and response of each page.  Since we were using Dojo 1.53 at the time we did not benefit from any form of AMD. iPhora Touch V2 Community Home Page We wanted to redesign the interface to work well with mobile devices and desktops, have better performance, but at the same time to be a secured environment. Though our iPhora Touch solution is a social community-based solution, we designed it to be a closed environment by default and it is assumed that you are not allowed access to anything, which is contrary to how most soci...

Our Adventures into Creating a Secure MVC Framework - Part 1 - Introduction

Image
As I was writing this series, it cause me to rethink some approaches and redesign part of our MVC framework. Therefore, it took me a bit longer to start this series than I thought. But here goes. Introduction The concept of Model-View-Controller MVC can be implemented in two ways, using a server-side component framework that generates the Web application interface/view or as a JavaScript framework that gets data from the server and generates the Web application interface/view . In this series, we will be discussing how we created and implemented a JavaScript MVC framework. If you a Java developer and would like to implement a server-side MVC framework, Vaadin is a good server-side MVC framework to look into.  For developers in the XPages community, Ulrich Krause and Paul Withers has been blogging about Vaadin. Each approach has its advantages and which approach you use is based on your development skills, tools, and architecture of your web application. If you are a XPages ...

More Fun Creating Dojo widgets and MVC

Here is another article in my "Fun with Dojo" series. Dojo traditionally has been considered slow.  One reason is that Dojo loads alot of modules before it instantiates the page.  Dojo with AMD helps reduce the number of modules when it first loads but not the number of modules.  This is great.  However, one thing that I really dislike are Dojo Dijit widgets.  They are heavy, slow, and require a lot of modules to be loaded. We like the Bootstrap widgets because they are lightweight. So instead of using Dijits that are built into XPages we created our own lightweight Dojo Bootstrap widgets that utilized the most minimal amount of required Dijit modules and dependencies. One of the things that we had to figured out was what bare bone modules that we needed beside dijit._Widget in order to create our own widgets and include them in the loading process.  When we were using Dojo 1.53, we created a custom loader with all the re...

Why an Ideal MVC Framework Fails

One of the "Next Big Things" these days is the use an MVC framework for developing Web applications. There are a number of MVC frameworks out there including Backbone, Ember, and the rapidly growing Angular.  Ideally these MVC frameworks are great, hook things together and any changes to the model (data) and all the views are updated based on the controller code. If there is changes to the model, the data is automatically updated on the server. This is the ideal case. However, it assumes one critical thing, you have the access rights to CRUD data on the server. This is an extremely dangerous assumption. In our iPhora security model, we assume the opposite and you do not have access rights to any data on the server. We do not trust anything and any request. We assume that you are trying to hack and inject. Your authorization is checked during each request. We looked at using Angular since it is the hot ...

Transforming Domino into a Social Collaboration Platform, Part 2B - Experimentation

Transforming Domino into a Social Collaboration Platform, Part 1 - Where Do We Begin? Transforming Domino into a Social Collaboration Platform, Part 2A - Experimentation This is the second part of our experimentation portion of the series. In Part 2A, I talked about the different experiments that we did for creating web pages for our social collaboration applications and the design of the back-end database.  In part 2B, I will be talking about the application structure and business process and workflow management that you need in order to have a successful social collaboration tool.  As I mentioned before, there were four areas of technical challenges that we had to overcome. Web Interface Generation Database Infrastructure Application Structure Business Process and Workflow Management In this blog we will cover the last two. Application Structure Traditionally with Domino applications, an application consist of one or mo...