关于Web应用程序架构的决定

Luf*_*ufi 5 javascript architecture asp.net ajax inversion-of-control

我正面临着我将要开展的Web应用程序架构的决定.我们是一个小团队,实际上我将独自工作(每个人都在做其他事情).

该应用程序将包含ExtJS库的前端构建, 它将使用模型"加载页面,构建GUI并永不刷新".
在网络"桌面"上会有很多数据窗口,地图视图(使用openlayers + GeoExt)和其他东西.
GUI应该是灵活的,并允许每个用户修改(和持久)布局以满足他/她的需要.

应该可以将应用程序划分为modules/parts/...然后让特定组中的用户仅使用特定模块.换句话说,每组用户可以在网络"桌面"上具有不同的GUI.

问题是:

  1. 首先,这种方法好吗?
    客户端会有很多AJAX调用,这可能是个问题.

  2. 如何在客户端处理代码复杂性?
    到目前为止,我已决定使用dojo.require/dojo.provide功能并将客户端代码划分为模块(用于生产它们将使用dojo构建系统放在一起)我正在考虑在客户端使用某种IoC容器,但还不确定是哪一个.
    我很可能会为自己编写一个,在JavaScript等动态语言中应该不难.

  3. 如何在服务器上处理AJAX调用?
    我应该在服务器端使用WCF吗?或者只是普通的ashx处理程序?

  4. 如何处理服务器端的代码复杂性?
    我想使用Spring.NET.可能这种方法可能有助于模块化问题.

  5. 数据访问 - 这里我很确定要使用什么:对于DAL类,我将使用nHibernate.然后我使用Spring.NET将它们与业务类组合在一起.

我真的很感激有关哪条路的建议.
我知道很多技术,但我只使用了很少的一部分.
我没有时间去探索所有这些并且做出决定.

Jer*_*rry 2

我们做这种类型的单页界面,我为我们的客户进行了相当大的规模工作。(我们的网站不是互联网网站)

  1. 这似乎对我们来说效果很好。js 越多,维护起来就越困难,因此尽可能多地进行自动化 js 测试,并尝试以 mvc 方式分解 js 逻辑。4.0 应该会让这变得更容易。
  2. 如果您试图限制您下载的代码,Ext 4.0 内置了此功能。如果您日复一日地拥有相同的用户,那么我认为最好将所有源都下载下来(压缩和缩小)并缓存它。
  3. 我们发现 asmx 工作得非常好。我并不反对 wcf,但最后我发现它似乎比它值得的麻烦更多。我知道他们最近做出了很多改进。asmx 可以正常工作(只需更改一些请求标头并在客户端管理“d.”)。
  4. 我们的服务器端数据访问层非常复杂,但 ajax 调用的接口非常简单。您还没有真正提供足够的信息来回答这部分。我会从尽可能简单的开始并经常重构。
  5. 我们也在使用 nHibernate。对我们来说效果很好。我们围绕它构建了 DDD 模型。不过,要做到这一点可能需要做很多工作(不确定经过几个月的努力后我们是否能做到这一点)。

如果我是你,我会从 extjs、你的 Web 服务技术和 nHibernte 开始。