Currently, I am at a crossroads when it comes to deciding on the architecture of the web application I will be developing. As part of a small team, I am tasked with working on this project solo while my colleagues focus on other tasks.
The front-end of this application will be built using the ExtJS library, with a model that emphasizes loading pages, constructing GUIs without refreshing. The "desktop" version of the web app will feature numerous data windows, map views (utilizing openlayers + GeoExt), and various other components. It is crucial for the GUI to be adaptable, enabling users to customize and save their layouts according to their preferences.
A key objective is to segment the application into modules or parts, allowing specific user groups access only to designated sections of the interface. This means that each group of users may interact with a distinct GUI on the web "desktop."
Here are some critical questions that need addressing:
Is this approach viable considering the high volume of AJAX calls from clients? Could this potentially pose a challenge?
How can I effectively manage code complexity on the client side? My current plan involves utilizing dojo.require / dojo.provide functionality to divide the client-side code into modular segments. For production, these modules will be integrated using the dojo build system. I am contemplating the use of an IoC container on the client side but have yet to determine a suitable implementation. Developing one should not be overly complex in JavaScript given its dynamic nature.
What is the best strategy for handling AJAX calls on the server? Should I opt for WCF on the server side or stick with a standard ashx handler?
In managing code complexity on the server side, I intend to implement Spring.NET. This approach might assist in addressing modularity concerns.
As for data access, I have decided on employing nHibernate for DAL classes. These will then be integrated with business classes using Spring.NET.
Your insights and advice regarding the most suitable path forward would be greatly appreciated. While I am familiar with various technologies, my experience is limited. Given time constraints, I cannot thoroughly explore all options before reaching a decision.