Modular multi-tenant full-ajax web application

Discussion in 'Java' started by carmelo, Dec 19, 2011.

  1. carmelo

    carmelo Guest

    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?
     
    carmelo, Dec 19, 2011
    #1
    1. Advertising

  2. carmelo

    Rajiv Gupta Guest

    On 2011-12-19 19:28:50 +1100, carmelo said:

    > 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.
     
    Rajiv Gupta, Dec 19, 2011
    #2
    1. Advertising

  3. On 11-12-19 04:28 AM, carmelo wrote:
    > 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
     
    Arved Sandstrom, Dec 19, 2011
    #3
  4. carmelo

    carmelo Guest

    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?
     
    carmelo, Dec 19, 2011
    #4
  5. On 11-12-19 12:35 PM, carmelo wrote:
    > 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.
     
    Arved Sandstrom, Dec 19, 2011
    #5
  6. carmelo

    Tom Anderson Guest

    On Mon, 19 Dec 2011, carmelo wrote:

    > 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

    --
    That's no moon!
     
    Tom Anderson, Dec 19, 2011
    #6
  7. carmelo

    Tom Anderson Guest

    On Mon, 19 Dec 2011, Rajiv Gupta wrote:

    > On 2011-12-19 19:28:50 +1100, carmelo said:
    >
    >> 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.


    3/4 ajax sounds good to me.

    I might even go as far as 4/5.

    tom

    --
    That's no moon!
     
    Tom Anderson, Dec 19, 2011
    #7
  8. carmelo

    Rajiv Gupta Guest

    On 2011-12-20 09:46:43 +1100, Tom Anderson said:

    > On Mon, 19 Dec 2011, carmelo wrote:
    >
    >> 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


    But does version 6 do full Ajax?
     
    Rajiv Gupta, Dec 20, 2011
    #8
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. =?Utf-8?B?UmFjaGVs?=

    Provider Model : modular application design issue

    =?Utf-8?B?UmFjaGVs?=, Feb 9, 2006, in forum: ASP .Net
    Replies:
    1
    Views:
    392
    Karl Seguin [MVP]
    Feb 9, 2006
  2. Jorge Godoy
    Replies:
    1
    Views:
    313
    Jorge Godoy
    Sep 9, 2003
  3. Wildemar Wildenburger
    Replies:
    22
    Views:
    1,911
    Ben Finney
    May 20, 2007
  4. Canice
    Replies:
    2
    Views:
    599
    Canice
    Aug 2, 2007
  5. Piotr Nowak
    Replies:
    1
    Views:
    430
    bruce barker
    Oct 15, 2007
Loading...

Share This Page