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

时间:2011-06-07 11:36:16

标签: javascript asp.net ajax architecture inversion-of-control

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

此应用程序将包含ExtJS library上的前端构建 它将使用模型“加载页面,构建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将它们与业务类组合在一起。

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

我建议使用Razor的ASP.NET MVC 3而不是很多Javascript并调用Service,你可以在Controller中对Action执行ajax调用,这样可以让你拥有更多可维护的代码并使用像Ninject这样的IoC。 EF代替NHibernate。 但这是你的决定。

答案 2 :(得分:0)

我会考虑使用像Google Closure Compiler这样的工具,特别是如果你正在处理一个非常大的项目。我没有太多使用ExtJS的经验,但是JavaScript中的大型项目 hard ,像Closure Compiler这样的东西往往会让它变得更容易。