我有一个项目,我最近开始认真工作,但与朋友进行了一些设计讨论,我想他提出了一些有趣的观点。Web应用程序设计
该项目旨在具有高度可扩展性,并易于完全独立地维护业务对象。易于扩展性迫使一些妨碍项目初始效率的设计决策。
基本设计如下。
在ASP.NET MVC中有一个“核心”,它管理着所有的交互JSON API和HTML网页。然而,它不创建或管理像发布,贡献者等“业务对象”。这些都是在他们自己单独的WCF Web服务中处理的。
核心的想法是非常简单的,利用单独的控件使用管理对象从Web服务检索业务数据/对象。这又意味着核心可以是多线程的并且可以同时调用页面上的控件。
每个Web服务都将管理数据库中的相关业务对象及其数据。任何业务特定的处理也将在此处,例如将表中的数据映射到用于控件的有用数据结构。整个对象将被传递到核心,核心应该只是每个事务检索或设置一个业务对象。如果将来需要多重影响的操作,那么我将需要提供该功能。
此外,Web服务可以执行自己的独立缓存,并根据请求以及他们自己对其特定区域的知识(例如用户)可以返回新创建的对象或预先创建的对象。
与朋友谈话后,我有以下问题。
我明白,WCF不如DLL调用或类似的东西快。但是,整个系统是以多少开销为基础的?
创建线程可能很昂贵。比起只是一个接一个地调用所有的控件,花费更多吗?
在这个设计中你可以看到有其他的内在坑吗?
我改变了我的问题,以反映事实应该为数据执行单个调用服务,然后使用它。如果它需要改变它,那么它可能在一个新的交易中,例如更改用户的配置文件将是一个事务,并且显示将是另一个事务。 – tgandrews 2009-12-21 16:37:34