在过去的几天里,我一直在研究一个小型的Web应用程序。我决定使用ASP.NET MVC。我做出这个决定主要是因为我认为这是真正控制Web前端和呈现有效HTML页面的最佳方式。但是,我知道MVC可以更多。
即使我的应用程序非常小,我也专注于我的应用程序架构。对我来说,有几个层是很重要的,其中两个层应该可以随时切换:用户界面(Web / Desktop / Webservices)和数据访问逻辑(以支持多个数据库)。我认为在模型视图控制器模式中这是可能的。
在这种情况下,是否可以用Win32或WPF前端替换我的基于Web的前端?这是可能的还是我理解错了?我找不到办法做到这一点。
我发现这样做的唯一方法是创建MVC层,BusinessLogic层,BusinessObject层和DataAccess层。在这种情况下,所有可以由WPF应用程序重用的通用内容,例如我放入业务层,我放入MVC层的所有MVC特定Stuff,以及我的Controller所做的大部分是调用BL方法并构建ViewModel并将其返回到视图。我不确定这是否是一个正确的解释,并会感谢有关更好的做法的建议。
答案 0 :(得分:4)
是的,它采用了真正的MVC模式,至少在Martin Fowler的Patterns of Enterprise Application Architecture指定的意义上(也许是我们对规范定义最接近的事情 - 请参阅他的文章“GUI Architectures”扩展讨论)。
MVC的核心是为用户界面驱动的应用程序建立明确的关注点分离。
MVC并不意味着可以轻松地在无状态接口(如Web应用程序)和胖客户端应用程序(如WPF或WinForms)之间切换。这些平台具有不同的优点和缺点:尝试使用单个控制器来满足这两个平台将导致低于标准的最低分母实现。
答案 1 :(得分:0)
我真的不明白你的问题。如果您想要不是HTML的视图,请查看不同的ASP.NET MVC View引擎。如果你想要一些东西给你一个WinForms视图,你必须以相同的方式编写业务逻辑代码,然后在同一个解决方案中从WinForms应用程序中获取所有这些类/数据,当用户想要访问它时“页面”,他们将不得不下载WinForms应用程序并运行它。您可以尝试使其看起来像网络内容,但这不能保证。