在构建全新系统时应采取什么方法/设计路径?

时间:2010-01-12 18:39:09

标签: c# asp.net sql-server database

我所负责的这个应用程序基本上是一个CRUD系统,可能大约有十几个表。

技术很可能是ASP.NET WebForms + Ajax Ctrl Toolkit + jQuery在正面,而SQL Server在背面。

这个应用程序可能永远不会被超过10-20个用户用作单租户系统;但是,在某些时候,我们可能希望将其作为一个多租户系统,并希望尽可能减少影响。

我向你们提出的问题是:我应该

  1. 将其构建为一个简单的2层Web应用程序,其中ASP.NET WebForms直接与业务对象/层通信,后者通过存储过程(可能还有一些Linq2SQL)处理SQL Server中的数据持久性? / p>

  2. 构建一个n层应用程序,其中ASP.NET WebApp与WCF服务进行通信,该服务处理通过存储过程(可能还有一些Linq2SQL)处理SQL Server中处理数据持久性的业务对象/层的操作)...

  3. 我还没有想过一些额外的选项?

  4. 提出问题的一种更简单的方法是,我应该构建一个2层应用程序,还是一个3层应用程序?我简单地倾向于2层,但也许因为长期目标是多租户,3层WCF方法可能是明智的吗?

    更新

    我很欣赏ASP.NET MVC的建议,我将调查这条路径;但是,任何使用MVC和WCF的链接都将有助于选择最终答案。

5 个答案:

答案 0 :(得分:5)

由于基本上是一个CRUD系统,你可能想要使用ASP.NET MVC。它将立即创建明确的关注点。并希望使用Linq2SQL它将为您创建您的视图。 Here您将找到一个简单的CRUD应用程序的快速视频。

答案 1 :(得分:1)

我的建议是采用n层/ MVC方法,只是为了保持灵活性......你永远不知道以后会以什么方式延长系统的使用时间......如果这样的一天到来,你不应该有重新设计你的应用程序

答案 2 :(得分:1)

如果您所做的只是针对数据库编写CRUD系统,您可以使用动态数据在一周内设置一个(我建议不要了解系统的所有细节)。

使用MVC提高灵活性。

答案 3 :(得分:1)

请!!转2层(MVC与否)。

为什么要添加复杂性以防万一?它将为项目增加时间和精力,没有任何好处。

稍后,如果该应用程序非常成功(它必须真的,真的,超级成功),您将有资金和资源来重新构建它。

编辑:在评论中添加了解释:
N层是指在不同的服务器(或在同一服务器中,但每个服务器都在自己的进程中)运行应用程序的可能性:

  • 运行IIS的一个(或多个)Web服务器
  • 运行WCF的一台(或多台)服务器
  • 数据库服务器

使用2层,您可以在同一服务器(和进程)中运行所有应用程序,您可以将数据库放在单独的服务器中。

您可以轻松地采用双层方法,但需要分离关注点:

  • 一个具有DB访问权限的程序集(VS项目)(如果使用Linq2SQL,它通常会有DataContext)
  • 一个具有业务逻辑的程序集。这些与数据库访问对话并返回List( of T)IQueryable个对象
  • 与业务逻辑对话的前端(可能是任何东西)。

如果您以后决定更改前端,则只更改此项目,并保留数据库访问层和业务逻辑。

答案 4 :(得分:0)

在你的情况下,我会选择简单的2层。只要你分离出业务逻辑,以后通过WCF托管它就不会有太多工作(只需分别用ServiceContract和DataContract标记你的接口和数据对象)。只有在必须将业务逻辑托管在与Web层不同的物理层中时,才需要这样做。

无论哪种方式,如果你去多租户,你可能需要以多种方式改变架构... WCF将是你最不关心的问题。

我喜欢MVC和其他人一样,但我认为对于一个简单的应用程序WebForms很好。当然,如果您想将此作为学习MVC的机会,那么一个简单的应用程序可能是一个很好的开始。