我正在维护一个应用程序,它目前只是一个Web服务(使用WCF构建)和数据库后端 . Web服务是分层构建的,具有linq-to-sql数据访问部分,在自己的程序集中具有核心功能,并且在其上包含WCF代码的Web服务程序集 . 核心程序集还处理所有业务逻辑规则(实际上很少) .
客户现在需要应用程序的Web界面,而不是仅通过使用Web服务的其他应用程序访问它 . 我对现代Web应用程序设计很遗憾,所以我想就Web应用程序使用的体系结构和框架提出一些建议 . Web应用程序将使用具有业务规则的相同核心程序集和作为Web服务的linq-to-sql数据访问层 .
我想到的一些概念是:
-
ASP.NET MVC(或MVC-2)
-
Webforms
-
AJAX控件 - 可能允许AJAX控件通过JSON访问现有的Web服务 .
Are there any more concepts I should look into? Which one is the best for a fresh project?
开发工具是面向.NET 3.5的Visual Studio 2008 Team Edition for Developers . 如果它提供任何好处,则可以升级到Visual Studio 2010 Premium(或者甚至是Ultimate) .
5 回答
绝对深入 ASP.NET MVC2 .
我们现在正在使用ASP.NET MVC2开发所有项目 . 它不仅具有高度可扩展性 . 它也是高度可测试的 . 从长远来看,这可以带来更好的可维护应用程序 .
WebForms与MVC2点 - (说出经验):
Scalability:
在我们公司,我们有很多使用WebForms的应用程序,然后由我们根据客户的需要进行更新和更改 .
我认为您的客户将在不久的将来要求对应用程序进行更多更改 . 打电话给其他服务,也许你必须修改最终产品的部分内容以符合他们的意愿 .
使用即将推出的Cloud Computing和Windows Azure平台,您可能需要跟上代码 .
ASP.NET MVC绝对支持能够随时扩展应用程序的概念 .
我记得我们的一位客户走在我身边,要求我为他们的应用程序扩展(他们有一个会员管理系统),该功能将包含一些链接,将当前视图导出为
csv
文件,以便他们可以办公室的东西用它(主要是连续字母) .设置该功能并不是一个很大的问题 . (花了大约2个小时,包括编写测试) - 让我们去测试:
Testability:
使用
WebForms
我们没有't really have much interest writing tests because it was a pure pain to do so. I remember writing some tests to have at least some proofs but let'删掉那个话题..(:p)我们对自定义类进行了测试,但我们无法真正测试WebForms中的所有EventHandler .
由于这个可测试的环境,我们的CodeBase更清洁,更安全 . 我只是查看一些代码,修改它,运行所有测试并且:哦,它打破了奇怪的行为! - 让我们再次解决这个问题 . 早些时候,我记得坐在我的同事调试,并试图找到这些错误几个小时 .
使用ASP.NET MVC2,我们现在进行了 lacking 测试!我们要求所有类型的人(甚至是非Web用户)提供我们可以提供给我们TestSuite的测试用例 .
是的,还有一些AJAX控件:
AJAXability:
您询问了AJAX控件并结合ASP.NET MVC我强烈建议您查看Telerik ASP.NET MVC UI Controls .
如果那不适合您,我们也会广泛使用jQuery和jQuery UI
使用ASP.NET MVC和HTML视图,这些库不仅仅是一种乐趣,它们看起来非常漂亮 .
再也没有
random-html-tag-id-value
自动生成了!但我最喜欢的是:你终于可以重新使用你的代码了 .
除了那些框架之外还有更多的东西,还有T4模板系统 . 使用
Html.EditorFor()
方法为ViewModel / DomainModel自动支架,当然有一种非常简单的方法可以使用IoC和DI范例 .假设您主要使用.NET Framework相关标签提出问题,您可能会坚持使用它 .
只是为了保持帖子完整,还有其他框架同样好(甚至更好):
Ruby on Rails
Django
CakePHP
And many many more!
如果您需要对数据进行简单的CRUD访问,那么也可以使用DynamicData .
在你的情况下,Web Service Software Factory (WSSF)可能会派上用场 .
这将允许您在使用WCF(或标准Web服务通信协议)设计服务器/客户端通信时定义 Contract (返回的XML实体(如果选择XML)等) .
WSSF
赞成ASP.NET MVC或ASP.NET MVP .MVP
架构的一个简单示例显示为 here ,另外还有 this article .至于我,我常常使用类似混合的架构,使用
MVC
和MVP
,因为两者都有不同的强点,它们组合起来填补了彼此的改进点 .我也推荐看着Silverlight .
http://www.silverlight.net/learn/
我的意见是在管理页面(站点)内的客户端站点和WebForms上使用MVC