Discount cialis I’m excited about how the rise of HTML5 (and related technologies) will change the way we think about the web, discount cialis and how they will further encourage developers to build richer applications instead of mere document-oriented sites.
Discount cialis (At Sencha, discount cialis for example, discount cialis we spend a lot of time thinking about what this really means, discount cialis and how it changes the skills, discount cialis tools and frameworks we’ll all need to be effective web practitioners)
Discount cialis But here, discount cialis I’d like to consider three particular changes that are happening, discount cialis and one particularly overlooked impact they might have.
Discount cialis Secondly, discount cialis the way in which HTML5 provides support for local and offline storage makes the autonomy of these apps a real possibility. Discount cialis Viewing, discount cialis filtering and manipulating data can still be performed in the browser, discount cialis even when completely disconnected from the server (or the entire network, discount cialis in the case of a mobile device that loses coverage).
Discount cialis But such changes mean that this stack is changing shape.
Discount cialis Historically, discount cialis the entire logic of delivering web-based services to browsers was built on the server-side. Discount cialis Databases, discount cialis security layers, discount cialis business logic, discount cialis user interface creation – all of this was within the realm of the web server, discount cialis and the browser merely took the resulting HTML and dumbly rendered it for the user.
Discount cialis Of course, discount cialis this is incredibly inefficient: the entire stack is executed (and a whole page of HTML generated) for almost every single user interaction. Discount cialis To mitigate this, discount cialis web developers turned to AJAX & AHAH to start placing more of the user interface logic in the client’s runtime environment, discount cialis and to reduce the size of the payloads involved. Discount cialis The stack started to span both the server and client sides of the picture.
Discount cialis But with client-side MVC and support for local storage techniques, discount cialis we can take this stack evolution a whole step further. Discount cialis With Sencha Touch, discount cialis for example, discount cialis an application constructs its entire user interface from scratch, discount cialis and can synthesize the entire business logic, discount cialis validation ruleset, discount cialis and storage schema that would have traditionally been encapsulated on the server side.
Discount cialis Now, discount cialis islands of independent data on each and every user’s device might make for a useful service, discount cialis but it is far more likely that most applications will continue to operate in conjunction with a server – which, discount cialis with the appropriate layer of security to protect access to it, discount cialis will provide a central storage repository.
Discount cialis Our stack has now been neatly split in two.
Discount cialis All well and good. Discount cialis But in one very particular respect, discount cialis an architecture like this is deeply ambitious. Discount cialis We have added a significant new programming challenge into the mix: and that is one of data synchronization.
Discount cialis When the browser is merely displaying read-only HTML or AHAH, discount cialis the definitive copy of the business data is one place only: the server. Discount cialis But in this new architecture, discount cialis we have the same logical data in two places – and, discount cialis assuming we’re allowing users to interact with their copy of it, discount cialis quite possibly off-line, discount cialis we have to deal with the matter of keeping the two (or N) data sets consistent.
Discount cialis At a protocol level, discount cialis this is simple enough. Discount cialis We can easily use JSON to transmit data bidirectionally over an HTTP wire, discount cialis and Ext JS and Sencha Touch’s model store classes, discount cialis for example, discount cialis take care of all the plumbing for us. Discount cialis But when we should do so, discount cialis what the payload should be – and how we reconcile any conflicts between client and server – can quickly become interesting design questions.
Discount cialis Consider a web-based corporate price list application, discount cialis build using a client-side MVC pattern, discount cialis and providing up-to-date information about a company’s products to its mobile salesforce. Discount cialis On its first instantiation on a mobile device, discount cialis say, discount cialis such an application might easily pull the entire list of product records from the server over JSON and store them locally for fast, discount cialis possibly off-line, discount cialis access.
Discount cialis So far, discount cialis so easy. Discount cialis But of course the records might frequently change on the server: the company creates new products, discount cialis discontinues old ones, discount cialis and often changes their prices. Discount cialis How should the ‘create’, discount cialis ‘delete’ and ‘update’ operations be applied to the mobile device’s version of the data? Should it regularly refresh the whole data set again? Should it request all changes since the last sync and then incrementally apply those changes to its local copy? If certain data is not updated for a certain length of time, discount cialis should the client application mark it as stale?
Discount cialis These are already thoughtful decisions for the application developer to have to make.
Discount cialis But now imagine that the company’s product managers are given more powerful rights within the same application, discount cialis and they can actually edit the product descriptions on their mobile devices. Discount cialis When connected, discount cialis these changes can be immediately sent directly back to the server. Discount cialis How can we ensure that other users’ apps can have that change broadcast to them?
Discount cialis What about when the product manager is off-line, discount cialis perhaps editing the portfolio on a plane? Should the application prohibit updates to the local data? Preferably not, discount cialis but if changes can be made, discount cialis how should the application poll to see when it is reconnected, discount cialis and send those changes back in the most efficient way?
Discount cialis Taking it to extreme, discount cialis what happens when two product managers edit the same pieces of data? What happens when each have added a new product to which their client applications have assigned the same supposedly unique ID? The system needs to reconcile those potentially conflicting changes – and very quickly this becomes a non-trivial task.
Discount cialis In the broader computing world, discount cialis these challenges are common and have been frequently, discount cialis and successfully, discount cialis addressed. Discount cialis Many proven solutions exist for synchronization in the realms of distributed file systems, discount cialis versioned source control, discount cialis disk, discount cialis database and site mirroring and so on – and even to manage our MP3 collections. Discount cialis But what is new is that this will soon becoming a challenge that web developers will need to tackle, discount cialis and it is a challenge that might be unfamiliar and daunting to many.
Discount cialis In the general case, discount cialis of course, discount cialis there is no single approach that will answer all these questions. Discount cialis Effective synchronization across a ‘split stack’ architecture will depend very much upon the sort of data that is being manipulated and what the application is setting out to achieve.
Discount cialis Frameworks will certainly provide us with all the tools we need to implement the choices we make. Discount cialis But considering these synchronization-related scenarios and use-cases will be an increasingly important part of bringing compelling applications to users in increasingly diverse contexts. Discount cialis Reconciliation will lie at the heart of how we bring complex applications to life – not just an after-thought.
Discount cialis The web is no longer one of documents or of simple uni-directional data: it is fast becoming a web of synchronization. Discount cialis And I fear it might not be as easy as we think. Discount cialis As developers, discount cialis we all need to go into this new world with our eyes wide open and be prepared for new challenges around the corner.