Modular multi-tenant full-ajax web application

C

carmelo

Hi everybody,
I'm planning to develop a modular multi-tenant full-ajax enterprise
web application, and I'm evaluating different technologies and
languages. The application should be highly modular, and the UI should
be dynamically generated according to the customer. For better user
experience and performance it should be full-ajax.

What is your advice?
 
R

Rajiv Gupta

Hi everybody,
I'm planning to develop a modular multi-tenant full-ajax enterprise
web application, and I'm evaluating different technologies and
languages. The application should be highly modular, and the UI should
be dynamically generated according to the customer. For better user
experience and performance it should be full-ajax.

What is your advice?

Well, initially I would hire someone who knows what they are doing. I
would leave the choice of 1/2, 3/4 or full Ajax to them.
 
A

Arved Sandstrom

Hi everybody,
I'm planning to develop a modular multi-tenant full-ajax enterprise
web application, and I'm evaluating different technologies and
languages. The application should be highly modular, and the UI should
be dynamically generated according to the customer. For better user
experience and performance it should be full-ajax.

What is your advice?

Technology and language choice is not normally dictated by you, the
technologist, so I am wondering in what situations you plan to market
this web application. Or are you operating on the "if I build it they
will come" marketing model? ;-)

As far as highly modular goes, with no sarcasm intended that is
generally what everyone purports to want, and usually fails to deliver.
I'd hazard a guess that there isn't a single technology out there -
including C-based CGI - that you couldn't make sufficiently modular with
proper design and implementation. "Modular" can include other concepts,
such as the ability to make runtime changes to the application, but I
have no idea if you meant that.

As far as dynamically generated UI goes, unless you're serving static
HTML I'm not sure how you'd _not_ get this, with any decent technology.
"According to the customer"..well, sure, if the view and view model
depend on specific customer data, which is common.

With respect to AJAX, that's ubiquitous these days. You either lob in a
JavaScript library like jQuery to use its AJAX API, or the web app
framework already has AJAX support (like most JSF implementations do),
or you combine both. In the case of the combination you'd simply want to
be careful about clashes.

I have marched through the points in this manner because I see the
non-constrained choice of language and technology as being driven
primarily by the business requirements of the application: what is it
intended to do? In real life of course the choice that comes from this
analysis is often/usually limited or superseded by the wishes of an
enterprise client, or by the reality that most of your target customers
use Platform X.

I'm not being disrespectful of what you're trying to accomplish here,
but it seems to me that one only evaluates all possible languages and
technologies when:

1) there is a single customer that has asked you to do so, and is
(somewhat) committed to moving on your recommendations; or

2) you're in the business of doing technology research; or

3) there is no actual underlying business problem, in which case the
relative advantages of one language/technology/platform over another is
irrelevant.

With respect to point #3, there are surely plenty of New Generation
webheads out there who see every application as a UI problem, and can't
write solid business logic to save their lives (Facebook anyone?), but I
am assuming that you are not one of them. Business requirements =>
technical requirements, and customers often have existing technologies,
and that rather than what is the absolute best UI technology is what
drives your real-world choices.

AHS
 
C

carmelo

Thanks for your answer Arved.

I try to explain better: my purpose is to develop a web application
with a dynamically generated UI according to the logged customer, and
the purchased/activated modules.

A good framework for server-side generated UI could be Vaadin, but for
making the application modular I think that I should use it with OSGi.
I don't know if Vaadin+OSGi could be a good solution for this type of
web app. What do you think?
 
A

Arved Sandstrom

Thanks for your answer Arved.

I try to explain better: my purpose is to develop a web application
with a dynamically generated UI according to the logged customer, and
the purchased/activated modules.

A good framework for server-side generated UI could be Vaadin, but for
making the application modular I think that I should use it with OSGi.
I don't know if Vaadin+OSGi could be a good solution for this type of
web app. What do you think?

You may well have a good reason to use OSGi, but customizing the user
experience isn't one of them. Let's say that your web app is called
SuperApp 1.0, and you've sold it to 3 customers, A, B and C, with user
bases of 100, 200 and 300 respectively. Customer A has licensed all 5
bundles, Customer B has licensed 4 of them, and Customer C has only the
2 core bundles for the SuperApp 1.0 application.

OSGi is a good fit for delivering the 3 different versions of SuperApp
1.0 to the 3 different customers. But you're not going to then use it to
shape the UI and functionality experience for all 600 users individually.

Modularity of the sort that you are looking for is typically more
fine-grained than what you'd get from OSGi bundles. Fairly standard Java
EE APIs and techniques are applicable to getting the kind of UI and
modularity you want.

Some points and/or rules of thumb and/or thoughts:

1. in your scenario you've got paying users with known identities.
They'll be logging in and will _expect_ to authenticate. It's at that
point that you can map them to roles or permissions [1] and enforce
declarative or programmatic authorizations;

2. Any decent web framework will have a view technology that supports
disabling/enabling and hiding/un-hiding UI elements based on code-behind
values etc. If a given user hasn't paid for doing something in SuperApp
1.0, this usually translates to not having paid to _see_ something (or
click on something) in a page. And this translates to roles and/or
permissions.

3. Modularize from the bottom up starting with the model/domain/business
logic layer(s), whatever specific terminology you choose. Make _those_
modules (not OSGi modules, but just small-m modules) look like services
in the SOA sense. You'll know you did a good job if, after having
finished that job, you can actually drop some WS-endpoints on top of
those services, and have some users access via web service clients
rather than through your standard web tier.

This is the best kind of modularization, and will serve you in good
stead for any scenario. Furthermore, _once_ you've done that exercise,
if you're then minded to consider OSGi, you're in much better shape to
consider what comprises each bundle;

4. It can be a gray area as to whether you customize a page and its
codebehind for different users with different authorizations, or whether
you supply a different copy of at least the page (and possibly its
codebehind) for user groups with substantially different visuals and
allowed functionality. At one extreme you'll simply have different
chunks of app for different users, actually.

Generally you'll be able to tell if you're trying to make a given page
and its codebehind do too many different things for too many different
user groups.

*********

I think you see what I am getting at here. Modularization is an
architectural, design *and* coding concept that applies to every layer
of your app, horizontally and vertically. You should be doing this all
the time in every app you ever write, in any language.

Re Vaadin: I haven't used it in the real world, so I am not competent to
recommend it. What I do know of it indicates to me that you'd be as
capable of doing what you want to, with Vaadin, as any of many other
frameworks out there.

AHS

1. I prefer permissions, and some security frameworks have good support
for them, not just roles.
 
T

Tom Anderson

I'm planning to develop a modular multi-tenant full-ajax enterprise
web application, and I'm evaluating different technologies and
languages. The application should be highly modular, and the UI should
be dynamically generated according to the customer. For better user
experience and performance it should be full-ajax.

What is your advice?

Use Visual Basic.

Version 6.

tom
 
T

Tom Anderson

Well, initially I would hire someone who knows what they are doing. I
would leave the choice of 1/2, 3/4 or full Ajax to them.

3/4 ajax sounds good to me.

I might even go as far as 4/5.

tom
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,007
Latest member
obedient dusk

Latest Threads

Top