Choosing the right framework for a web application

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:

  1. Is this approach viable considering the high volume of AJAX calls from clients? Could this potentially pose a challenge?

  2. 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.

  3. 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?

  4. In managing code complexity on the server side, I intend to implement Spring.NET. This approach might assist in addressing modularity concerns.

  5. 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.

Answer №1

In my current workplace, we specialize in developing single-page interfaces on a large scale for our clients. (Please note that our site is not publicly accessible).

  1. Our approach has been successful so far. Managing an increasing amount of JavaScript can be challenging, so we prioritize having automated tests and organizing our JavaScript code in an MVC structure. Version 4.0 is expected to streamline this process.
  2. If you aim to minimize the amount of code being loaded, Ext 4.0 offers built-in functionalities. For consistent users, it might be beneficial to load all source code (compressed and minified) while caching it for quicker access.
  3. We have had positive experiences with ASMX technology. While WCF is also effective, at a glance, it appeared more complex than practical. ASMX, with a few adjustments to request headers and handling "d." on the client side, has proven reliable for us.
  4. Although our server-side data access layer is intricate, the interface for AJAX calls remains straightforward. Given the limited information provided, I recommend starting with a simple approach and iterating as needed.
  5. NHibernate is another tool we utilize, complemented by a Domain-Driven Design model. Despite months of fine-tuning, perfecting this setup requires considerable effort and ongoing evaluation.

If you're embarking on a similar project, consider initiating with ExtJS, your chosen web service technology, and NHibernate for a solid foundation.

Answer №2

In my opinion, opting for ASP.NET MVC 3 with Razor over heavy reliance on Javascript and service calls is a more efficient approach. By making ajax calls to an Action in a Controller, you can achieve maintainable code and leverage an IoC container like Ninject. Additionally, I recommend using EF instead of NHibernate for your ORM needs.

Answer №3

If you're working on a sizable project, I recommend considering the utilization of a tool such as Google Closure Compiler. While I may not be well-versed in ExtJS, tackling substantial JavaScript projects can be challenging, and tools like Closure Compiler are designed to streamline the process.

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Unexpected token encountered when testing Ajax call with JSON response

Currently, I have a Vue application with the following code snippet... var vm = new Vue({ el: '#Workbooks', components: { 'workbook-list': workbooklist }, data: { workbooks: [], message: '', loading: true, ...

Utilizing the Command Line/Window feature within Visual Studio Code

As a newcomer to Visual Studio Code, I'm currently using the latest Version: 1.29.1. When I used Matlab, I had access to a script window for writing code, a Command Window for testing code snippets and viewing variable values, as well as a workspace ...

I am unable to employ the useMutation or useQuery features in Apollo Client 3.0

import { useMutation } from '@apollo/client';; function LockedBlog() { const [lockedBlog] = useMutation(LOCKED_BLOG); }; class EditBlog extends Component { state = { ...initialState }; index.js import React from "react"; im ...

What is the standard way to write the server-side code for HTTP request and response handling?

I stumbled upon these resources: How to send HTTP request GET/POST in Java and How to SEND HTTP request in JAVA While I understand the client-side aspect, how can this implementation be done on the server side? The goal is to utilize the link on the clie ...

Continue iterating using (forEach, map,...) until the object (children) has no more elements

I need to disable the active status for all elements within my object structure. Here is an example of my object: const obj = { name: 'obj1' , ative: true , children: [ { name: 'obj2' , ative: true , children: ...

ParcelJs is having trouble resolving the service_worker path when building the web extension manifest v3

Currently, I am in the process of developing a cross-browser extension. One obstacle I have encountered is that Firefox does not yet support service workers, which are essential for Chrome. As a result, I conducted some tests in Chrome only to discover tha ...

"The jQuery colorpicker function is not functioning properly when applied to newly added elements

I've got these amazing gadgets with a cool sliding box feature inside. Initially, there are two widgets visible on the page, but you have the option to add or delete a widget as needed. Within the sliding box, there is a color picker tool. Interestin ...

Is it better to include the Google Analytics code in the master page or on every individual page of an asp.net

Looking for a way to track every page on my website effectively. Should I insert the Analytics tracking code in each aspx page inherited from the master page, or is it sufficient to place it only in the master page to track all inherited pages? ...

Utilizing AngularJS: Triggering a controller function from a directive

I am currently working on a project with a model named 'user', which includes a controller called 'login' and a directive called 'userMenu'. My goal is to have the userMenu directive utilize the 'login' controller th ...

Checking for the accuracy of the provided full name

There is a specific task at hand: The field labeled “First Name Last Name” must only contain 2 words, with each word being between 3 and 30 characters in length. Additionally, there should be only one space between the first and last name. The issue t ...

JavaScript function unable to access static file for image

I need assistance with dynamically displaying an image (a checkmark or "X") based on a variable. When I insert the image using a script directly in the HTML file, it functions correctly. However, when attempting to set the image from within the createEasyD ...

Exploring Android Webview capabilities using HTML 5 geolocation

Utilizing a webview to load a web application, I am using the HTML 5 geolocation API within the page to detect the user's location. While this feature works seamlessly in all browsers and even in an iOS application, I am facing issues getting it to fu ...

The E.js Template encountered an error with an unexpected token "else"

I am in the process of creating a website quickly using e.js & Express. However, I am encountering some problems when trying to use an if-else statement within e.js tags. The if statement works fine, but as soon as I add an else statement, things start t ...

What is the best way to invoke a function only once in typescript?

Struggling to implement TypeScript in React Native for fetching an API on screen load? I've been facing a tough time with it, especially when trying to call the function only once without using timeouts. Here's my current approach, but it's ...

What is the significance of the partial response writer not being connected to the PPRResponseWriter?

As I work on developing an application with JSF, primefaces, and Tomcat7, an issue arises when an ajax event is triggered, resulting in the following warning: 17-ott-2012 9.26.04 org.apache.myfaces.trinidadinternal.context.PartialViewContextImpl getPartia ...

Encountered a PrismaClientValidationError in NextJS 13 when making a request

I am currently working on a school project using NextJS 13 and attempting to establish a connection to a MYSQL database using Prisma with PlanetScale. However, when trying to register a user, I encounter the following error: Request error PrismaClientValid ...

Launching a Nuxt.js Cloud Function

Is there a possibility to deploy a cloud function that allows for server-side rendering with Nuxt on Firebase? The issue lies in the fact that the Node version used on Firebase is 6.11.1 while the minimum required Node version for Nuxt versions 1 and above ...

Should we consider packaging the npm dependencies code along with our code as a best practice?

What is the best way to handle npm dependencies in our code bundle? If it's preferable to include the npm dependency code in our bundle, does it make sense to add it as a separate module or package? If not, how can I prevent bundling my dependencie ...

Enable checkboxes to be pre-selected upon page loading automatically

Although I've found a lot of code snippets for a "select all" option, what I really need is more direct. I want the WpForms checkboxes to be pre-checked by default when the page loads, instead of requiring users to press a button. My goal is to have a ...

Utilizing the native cursor feature in Adobe AIR JavaScript using MouseCursorData

I have been exploring the content of this article: which details how to create a native cursor in AIR without resorting to using a sprite to mimic the functionality. However, my project is based on HTML/JavaScript rather than ActionScript. Here is the c ...