我所负责的这个应用程序基本上是一个CRUD系统,可能大约有十几个表。
技术很可能是ASP.NET WebForms + Ajax Ctrl Toolkit + jQuery在正面,而SQL Server在背面。
这个应用程序可能永远不会被超过10-20个用户用作单租户系统;但是,在某些时候,我们可能希望将其作为一个多租户系统,并希望尽可能减少影响。
我向你们提出的问题是:我应该
将其构建为一个简单的2层Web应用程序,其中ASP.NET WebForms直接与业务对象/层通信,后者通过存储过程(可能还有一些Linq2SQL)处理SQL Server中的数据持久性? / p>
构建一个n层应用程序,其中ASP.NET WebApp与WCF服务进行通信,该服务处理通过存储过程(可能还有一些Linq2SQL)处理SQL Server中处理数据持久性的业务对象/层的操作)...
我还没有想过一些额外的选项?
提出问题的一种更简单的方法是,我应该构建一个2层应用程序,还是一个3层应用程序?我简单地倾向于2层,但也许因为长期目标是多租户,3层WCF方法可能是明智的吗?
更新
我很欣赏ASP.NET MVC的建议,我将调查这条路径;但是,任何使用MVC和WCF的链接都将有助于选择最终答案。
答案 0 :(得分:5)
由于基本上是一个CRUD系统,你可能想要使用ASP.NET MVC。它将立即创建明确的关注点。并希望使用Linq2SQL它将为您创建您的视图。 Here您将找到一个简单的CRUD应用程序的快速视频。
答案 1 :(得分:1)
我的建议是采用n层/ MVC方法,只是为了保持灵活性......你永远不知道以后会以什么方式延长系统的使用时间......如果这样的一天到来,你不应该有重新设计你的应用程序
答案 2 :(得分:1)
如果您所做的只是针对数据库编写CRUD系统,您可以使用动态数据在一周内设置一个(我建议不要了解系统的所有细节)。
使用MVC提高灵活性。
答案 3 :(得分:1)
请!!转2层(MVC与否)。
为什么要添加复杂性以防万一?它将为项目增加时间和精力,没有任何好处。
稍后,如果该应用程序非常成功(它必须真的,真的,超级成功),您将有资金和资源来重新构建它。
编辑:在评论中添加了解释:
N层是指在不同的服务器(或在同一服务器中,但每个服务器都在自己的进程中)运行应用程序的可能性:
使用2层,您可以在同一服务器(和进程)中运行所有应用程序,您可以将数据库放在单独的服务器中。
您可以轻松地采用双层方法,但需要分离关注点:
List( of T)
或IQueryable
个对象如果您以后决定更改前端,则只更改此项目,并保留数据库访问层和业务逻辑。
答案 4 :(得分:0)
在你的情况下,我会选择简单的2层。只要你分离出业务逻辑,以后通过WCF托管它就不会有太多工作(只需分别用ServiceContract和DataContract标记你的接口和数据对象)。只有在必须将业务逻辑托管在与Web层不同的物理层中时,才需要这样做。
无论哪种方式,如果你去多租户,你可能需要以多种方式改变架构... WCF将是你最不关心的问题。
我喜欢MVC和其他人一样,但我认为对于一个简单的应用程序WebForms很好。当然,如果您想将此作为学习MVC的机会,那么一个简单的应用程序可能是一个很好的开始。