我在一家公司工作,自从我到达以来,我可以完全自由地使用任何Microsoft技术,模式和工具来开发我的应用程序。
我开始使用 ASP.NET MVC3 开发所有应用程序,目前我有5个应用程序已部署并正在运行。
前几天我和我的经理会面审查了所有申请,他意识到我的代码与他的预期完全不同。他基本上意识到我不使用Web Forms 而我使用MVC 代替。他认为他只是一些组件/工具而不是完全不同的编程方法。他很好奇,他简要地研究了ASP.NET MVC是什么。
两天后,他说我需要将所有应用程序转换为 Web窗体,并从现在开始只使用Web窗体。他说, MVC 类似于旧的 asp (对于某些方面是正确的)并且需要更长的时间来开发应用程序并使人们当需要更改/维护应用程序时,困惑。
我认为这不是真的,因为在经历了陡峭的开始之后,我已经习惯了MVC的魔力,它简化了应用程序的开发,组件化和维护。
我说他 Web表单 过于耦合的UI / Logic / DAL ,过了一段时间代码变得不可读而且危及单元测试。我还展示了用 jQuery或MVCContrib 网格替换旧的 GridView (他的主要关注点之一)的可能性。
没有办法说服他。无论是工作还是个人发展,我都不想退回Web表单,因此我请您告诉我使MVC“优于”Web表单的最重要的一点。
由于
答案 0 :(得分:2)
不幸的是,经理给出一个商业说话的版本“我不明白这一点,所以我希望你以我的方式做到这一点”并不少见。这往往会扼杀进步。 (由于这个原因,我实际上已经离开了工作岗位,经理们拒绝允许他们个人没有设计的任何开发。)
但是,您还需要对这个问题持开放态度。他可能有很好的理由。支持代码是一个很大的问题,虽然我同意在MVC中编写干净和解耦的代码更容易,但同时他可能会看到一个市场,以低成本雇用养殖的开发人员更容易/更便宜支持WebForms应用程序。他的抽屉里可能有一堆简历,在WebForms和MVC之间画出了截然不同的画面。
你能做的最好的事情,就是以完全开放的心态接近这两种范式。了解WebForms灭亡的谣言被夸大了。因此,如果你真的想让他相信任何事情,那么你将不得不提出一个恰当和公正的比较。
从一个简单的利弊列表开始,比较两个范例。确保你没有跳过任何东西。如果他有WebForms的专业人士和你试图忽略的MVC的缺点,这会伤害你的情况。将该列表演变为一些示例,演示,概念证明等。使您的论证具有触觉,给予数字和有形价值,这对管理层来说意味着真实的东西,而不仅仅是“这是一个更好的发展战略”。量化它。
如果你的论点只是说“好吧,我的方式更好,因为它只是”,那么你就不会走远了。即使你有意义,你也必须成功地向他提出这一点。你必须用他的语言。
关于哪种发展策略更好,更多关于沟通和澄清您的想法,这一点真的很少。毕竟,如果你不能捍卫自己的立场,那么从他的角度来看,这不是一个好位置。
如果你完全澄清和量化所有这些,并且你对WebForms持开放态度至关重要,那么你所做的就是给他做出明智决定所需的信息。这个决定可能不会改变。他可能仍然坚持使用WebForms。但这是他的决定。你在这里做的是向他展示所有的利弊,所有的成本和好处(在重写你已经拥有的东西和持续支持以及所有这些方面的直接和长期方面)。如果他的决定被证明是错误的,至少这将是他的明智决定。你不会向他保留任何东西。
最后,他可能仍然坚持你以他理解的方式做事。有些经理就是这样。但是把这当作你职业生涯的机会来掌握提出论证的艺术。这不会是你最后一次发现自己这样做。
答案 1 :(得分:0)
创建WebForms是为了让WinForms开发人员能够轻松迁移到Web。 ASP.Net MVC的主要好处是它分离出模型(数据),视图(HTML,CSS,jQuery)和控制器(逻辑和路由)。这允许不同的人在需要时处理不同的部分(关注点分离)。它也更接近真正的Web模型,直接使用HTML进行设计,而不是通过ASP.Net用户控件进行抽象。显然,在MVC中,您拥有HTML帮助程序,可以创建自己的自定义帮助程序扩展以及使用DisplayFor和EditorFor模板。
老板的观点是,许多开发人员都会知道ASP.Net而不是MVC,因此其他人更容易理解它。但是,MVC已经出现了一段时间,许多敏锐的开发人员已经选择了这个或者可以很快完成。在我看来,这是一种非常干净和强大的方法,可以非常快速,轻松地维护Web应用程序。 ASP.Net当然也有它的优点,但你问“是什么让MVC更优秀”所以我只是提出了MVC优于ASP.Net的一些好处。这绝不是一个详尽的比较,希望其他人也会加入他们的意见。
答案 2 :(得分:0)
我会搜索显示MVC项目优势的数据或调查结果,而不是告诉他MVC有多好。 MVC是创造和创造更有效的方式。保持优质软件。我想补充的一点是,由于UI完全与业务逻辑分离,因此使用代码生成工具(如T4和MVCScaffolding)自动化代码生成要好得多。