我在理解MVC模式时遇到了一些麻烦.我确实理解我们正试图将GUI与业务逻辑分离,尽管我在理解方面遇到了问题.
根据我的理解,这View是用户看到的.所以它通常是窗口/窗体.的Controller是其间的View和Model.控制器将使数据在两个方向上"流动".它还会在需要时保持状态(如果我有一个包含5个步骤的向导,那么Controller确保它们以正确的顺序制作是负责任的,等等).这Model,是我的应用程序逻辑的核心所在.
这个观点是否正确?
为了尝试将其转化为更有意义的东西,我将尝试使用WinForms绘制一个简单的示例(请不要使用ASP.NET或WPF! - 对于java人群,从我的理解,Swing在类似的工作中通往WinForms的方法!),看看我是否正确,并且我会提出我在做这件事时总是会遇到的问题.
让我们假设我有一个只包含一个类的模型(只是为了让它变得更容易.我知道它会使示例看起来很笨,但这样更容易):
class MyNumbers {
private IList<int> listOfNumbers = new List<int> { 1, 3, 5, 7, 9 };
public IList<int> GetNumbers() {
return new ReadOnlyCollection<int>(listOfNumbers);
}
}
Run Code Online (Sandbox Code Playgroud)
现在是时候让我Controller:
class Controller
{
private MyNumbers myNumbers = new MyNumbers();
public IList<int> GetNumbers() {
return myNumbers.GetNumbers();
}
}
Run Code Online (Sandbox Code Playgroud)
本View应只是有一个ListBox有作为的项目中检索到的所有数字MyNumbers.
应该Controller负责创建MyNumbers吗?在这个简单的例子中,我认为它是可以接受的(无论如何MyNumbers都会完全相同,并且没有相关的状态).但是我们假设我想要用于所有不同的控制器,我的应用程序具有相同的实例MyNumbers …
我正在看Ember.js,并一直在阅读文档,试图了解如何使用它.我得到它(相当不错),除了一件事.根据我在MVC模式中的思考方式,Model是应用程序中数据的存储库.我可以看到它对Ember.js中的客户端数据有何用处.我没有得到的是如何将数据绑定回服务器,以便在客户端数据发生变化时,更改将在服务器中更新.反之亦然.我一直在我的Web应用程序中执行此操作,使Ajax/JSON调用来回到服务器,我只是没有得到如何使用Ember.js.
我最近在一个.Net WPF项目上建立了一个零售销售点系统,我第一次使用了MVP模式.我花了一点时间围绕着改变方法,但是一旦我这样做,我就认为这个概念震撼了!
我的问题是:MVC,MVP和MVVM之间有什么区别?如果有明确的区别,是否有关于何时应该使用一种模式而不是另一种模式的准则?
如果有人可以就此提供指导,或者指出解释差异的文章,我将非常感激.
我需要向非技术经理解释MVC(模型 - 视图 - 控制器)概念并遇到麻烦.问题是解释需要在"你的奶奶会得到它"的水平上 - 例如,即使在MVC Wiki页面上提供的相当直接的解释也不起作用,至少在我的评论中.
有没有人用简单的术语来提及一个好的MVC解释?
理想情况下,非技术隐喻的例子(例如类似于"装饰模式就像眼镜")也是如此 - 我失败的一个原因是我能想到的所有MVC例子都与开发相关.
我曾经看过一个模式解释列表但是我记忆中的MVC并没有.
谢谢!
3层架构和mvc有什么区别?
它们一样吗?
两者都有3层,即模型,视图和控制器
在rails中,我经常会遇到这样的情况:在视图中我会做类似的事情
<% if @some_condition_previusly_established_in_a_controller %>
<div class="one">123</div>
<% else %>
<div class="two">something else</div>
<% end %>
Run Code Online (Sandbox Code Playgroud)
它看起来有点乱.这是否是一种可接受的观看方式?
我一直在阅读很多关于如何以及为什么在应用程序中使用MVC方法的内容.我已经看到并理解了一个模型的例子,我已经看到并理解了View的例子....但我仍然在控制器上有点模糊.我真的很想看到一个完整的控制器示例.(如果可能,使用PHP,但任何语言都会有帮助)
谢谢.
PS:如果我能看到一个index.php页面的例子,它会决定使用哪个控制器以及如何使用它.
编辑:我知道控制器的工作是什么,我只是不知道如何在OOP中实现这一点.
我正在接管很多ColdFusion的东西,这些东西在我们的商店里挥之不去,他们坚持要留在ColdFusion上,并且这个领域的新项目必须在CF中完成 - 基本上这部分是不可协商的.我在CF方面不是很有经验(自2003年以来没有触及它)因此我的大部分开发工作都是在过去的4到5年中使用.Net,MVC,C#,Linq-to-SQL.
我正在寻找一个MVC框架,我可以将我的Asp.Net MVC体验与希望集成的ORM相关联(我至少暂时使用CF 8).我发现了一些像模型和胶水,Mach II和Coldbox等但我真的不知道从哪里开始,并希望从使用者那里得到一些关于它们的优点,缺点等的意见他们.
我知道我需要对CFML进行大量的刷新(几乎是重新学习),所以我不需要被告知 - 我在这里展望未来.
您能否分享一下您在CF MVC框架上的任何信息,以帮助我选择哪一个最适合我?谢谢.
model-view-controller coldfusion frameworks coldfusion-8 cfml
我们正在公司进行一些哲学辩论,讨论业务逻辑的调用应该在哪里执行CRUD操作.
我相信模型应该包含您的数据结构,并且控制器应该负责填充数据.
我的同事认为所有人口都应该在模型类中完成,并且只需要由控制器调用.这使控制器整洁干净(但在我看来,这会使模型变得混乱).
他还认为,任何返回Json对象的调用都应该在模型中进行,而不是在控制器中进行.该模型将向控制器返回一个数组,然后将其作为Json对象返回.
每个人有什么不同的利弊,是否有正确或错误的方法来做到这一点?
我对REST API有一点了解.据我所知,它用于处理HTTP服务(GET POST PUT DELETE).
当我添加一个webapi控制器时,它为我提供了一些基本方法,如:
public class Default1Controller : ApiController
{
// GET api/default1
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/default1/5
public string Get(int id)
{
return "value";
}
// POST api/default1
public void Post([FromBody]string value)
{
}
// PUT api/default1/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/default1/5
public void Delete(int id)
{
}
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是Web API和REST API之间的区别是什么?
从rest定义开始,上面的代码基于REST,那么MVC中的普通Web API是什么?我有点困惑,因为有些人说你使用REST api的web api吗?
请提供对两者的更好理解.
c# ×2
.net ×1
ajax ×1
api ×1
architecture ×1
cfml ×1
coldfusion ×1
coldfusion-8 ×1
ember.js ×1
frameworks ×1
java ×1
javascript ×1
jquery ×1
mvp ×1
mvvm ×1
php ×1
rest ×1
ruby ×1
three-tier ×1
winforms ×1
wpf ×1