适用于Windows / .NET的可扩展Web解决方案的顶级要求

时间:2010-10-21 22:22:11

标签: .net web-applications architecture

我一直在构建应用程序/网络应用程序已经有一段时间了,我想我构建的大部分内容都是基于简单的原则,即尝试保持松散耦合,使用行业标准技术等等。

我尝试跟随尽可能多的关于架构的科技博客,以及网站如何扩展(Facebook等)。

目前,我正在尝试使用在Windows 2008 R2上运行的.NET / C#来衡量构建高可用性站点的要求/组件/工具。正如标题中所提到的,我只是试图获得一个顶级/ 30,000英尺的“零件”的视图。例如,我(为了论证)不担心我是否会将SQL 2008或mySQL用于数据存储区,以及mongoDB等是否会起作用。

我想是什么促使我添加这个问题是我已经编写了一些运行良好的网络应用程序,但是在一些基于社交网站的用户/操作数量附近处理不了。例如,这是非常广泛/概述的东西,到目前为止我一直在使用的结构:

  1. 使用存储过程的SQL 2008后端数据存储
  2. MS Enterprise Lib / Data块/缓存等形成“业务对象”层 如果你愿意的话。
  3. ASHX页面充当前端的处理程序
  4. JQuery / Javascript前端 - 使用XML(尽管最近有些JSON)来获取 从中间层到前端的数据
  5. 我意识到上面只是一个基本视图,但它工作得相当好...... ASHX页面提供了一种与JQuery ajax调用交互的轻量级方法,到目前为止,企业库中的数据访问块(5.0版) ,使调用DB变得简单而且通常很快。

    所以我在这之后会怎样......

    嗯,鉴于上述情况,我有点知道构建某种基于社交的网络应用程序(为了论证,让我们说一个非常迷你版的facebook)需要有一些基本结构,如:

    1. 缓存(即memcache等?)
    2. 排队机制,因此您可以将冗长的流程移交给后台任务
    3. 快速数据访问技术..存储过程是最好的方法吗?
    4. 我想我读过stackoverflow.com等使用.NET技术的地方..我猜我所追求的是一些适用于.NET世界的起点/阅读材料(我意识到会有很多* nix人们搅拌..我想说我不会对学习任何新东西感到不利,但是现在我的技能主要是.NET)。

      希望这种方式有道理,有点絮絮叨叨,但随时可以评论以获取更多信息。

      提前致谢。

      大卫。

1 个答案:

答案 0 :(得分:2)

听起来你已经做了很多关键的架构决策 - 无论如何都围绕着技术。

我想说你选择的任何平台/技术都可以使用;就像任何可以被歪曲和搞砸一样。

存储过程有利于提高速度 - 它们也是一种很好的安全措施。

我建议你正式制定你的解决方案架构 - 记录它会帮助那些追随你的人(或者经过一段时间后你自己),并且记录它的过程将有助于你的思考过程。

要包括的关键事项:

  • 建筑目标。你想在建筑上实现什么?这些可能与业务客户端提出的高级非功能性需求(NFR)很好地吻合。例如:您的目标是高度重复使用现有技术,以便业务不必多元化进入新领域。
  • 建筑决策。 “我们选择使用[技术/组件/模式]”x“,因为它得到了很好的支持”。或者“我们选择'A'超过'B',因为即使B更快,A也更安全 - 它与关键的NFR一致。

一旦你完成了这个,就应该更容易做出决定;有时你可能已经知道了答案 - 但不是那么清楚,写下来可能有所帮助。