【发布时间】:2009-12-21 13:34:53
【问题描述】:
我最近开始认真开展一个项目,但与朋友进行了一些设计讨论,我认为他提出了一些有趣的观点。
该项目旨在具有高度可扩展性并且易于完全独立地维护业务对象。易于扩展性迫使一些阻碍项目初始效率的设计决策。
基本设计如下。
有一个用 ASP.NET MVC 编写的“核心”,它管理 JSON API 和 HTML web 的所有交互。但是,它不会创建或管理“业务对象”,如 Posts、Contributors 等。这些都在它们自己单独的 WCF Web 服务中处理。
核心的想法是非常简单地利用单个控件,这些控件使用管理对象从 Web 服务中检索业务数据/对象。这反过来意味着核心可以是多线程的,并且可以同时调用页面上的控件。
每个 Web 服务都将管理数据库中的相关业务对象及其数据。任何特定于业务的处理也将在此处进行,例如将表中的数据映射到用于控件的有用数据结构。整个对象将被传递给核心,并且核心应该只在每个事务中检索或设置一次业务对象。如果将来需要多重影响操作,那么我需要提供该功能。
Web 服务还可以执行自己的独立缓存,并且根据请求和他们自己对特定区域(例如用户)的了解,可以返回新创建的对象或预先创建的对象。
和朋友聊完之后,我有以下问题。
我很欣赏 WCF 不如 DLL 调用或类似的东西快。但是如果整个系统都基于它们,会有多少开销呢?
创建线程可能会很昂贵。这样做会比一个接一个地调用所有控件的成本更高吗?
您是否可以通过这种设计看到任何其他固有的坑式瀑布?
【问题讨论】:
标签: c# asp.net asp.net-mvc wcf