gpt4 book ai didi

c# - ASP.Net MVC Controller 注入(inject)

转载 作者:太空狗 更新时间:2023-10-30 00:27:11 25 4
gpt4 key购买 nike

我正在寻找有关设计新 ASP.NET Mvc 项目的好方法的建议。它中等大小,结构相对简单。我最初使用 Spring.Net 将我的服务对象连接到正确的构造函数中,但现在管理人员告诉我 Spring.Net 或任何其他 IOC 容器不能在我们的环境中使用。

我在想出一个没有 DI 的好方法来设置它时遇到了一些麻烦。我希望能够以一种允许 Controller 和服务之间的少量耦合的方式将服务实现分配给 Controller ,并尽可能地限制 Controller 对单个服务实现的依赖性。我想我的问题归结为我不确定我应该在 MVC 模型中手动连接我的应用程序的什么地方。

有什么建议吗?

最佳答案

由于您使用的是 ASP.NET MVC 3,因此您可以编写 custom dependency resolver .当然,您仍然会在设计 Controller 时在其构造函数中采用接口(interface),以削弱各层之间的耦合。然后在自定义依赖解析器中,为了满足强加给你的荒谬要求,你将不得不手动说当你有一个 ISomeService 时你返回一个 SomeServiceImpl< 的实例。您知道,对象容器和 DI 框架已经为您完成了这些事情。所以你基本上必须重新发明一些轮子。顺便说一句,Ayende 在博客上写了你如何能 build a custom IoC container in 15 lines of code但当然这不是你应该做这样的事情的理由。

提出此类要求的人应该面临审判,并被判永远不必接触应用程序设计。强加这样的要求说明在设计应用程序时完全缺乏关于良好实践的知识。应该在这些人给公司带来进一步损害之前告知他们。

所以简单地解释一下那些重新发明轮子有两个错误的人:

  • 你会浪费很多时间在别人已经做过的事情上
  • 您会犯错误,因为您不会考虑其他人在设计可重用 DI 框架时考虑的所有边缘情况。

在一天结束时,您将按计划交付您的应用程序(因为您会浪费时间编写管道代码),更糟糕的是,您将交付一个包含潜在错误的应用程序。

结论:昂贵且有缺陷的产品。你的管理层一定真的疯了:-)

结论2:使用现有的DI框架。管理层甚至不会注意到,因为他们似乎不了解通过强加此类要求的应用程序的技术方面。

关于c# - ASP.Net MVC Controller 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7653152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com