胖 ASP.NET MVC 控制器

发布于 2024-08-24 11:35:49 字数 311 浏览 9 评论 0原文

我一直在阅读有关“胖控制器”的内容,但大多数文章都侧重于将服务/存储库层逻辑从控制器中拉出。然而,我遇到了不同的情况,想知道是否有人有任何改进的想法。

我有一个操作太多的控制器,我想知道如何将其分解为许多操作较少的控制器。所有这些操作都负责插入/更新/删除都属于同一聚合的对象。因此,我并不热衷于为属于该聚合的每个类拥有一个单独的控制器...

为了向您提供更多详细信息,该控制器在选项卡式页面中使用。每个选项卡代表要编辑的数据的一部分,并且此处使用的所有域模型对象都属于同一聚合。

有什么建议吗?

干杯, 莫什

I have been reading about "Fat Controllers" but most of the articles out there focus on pulling the service/repository layer logic out of the controller. However, I have run into a different situation and am wondering if anyone has any ideas for improvement.

I have a controller with too many actions and am wondering how I can break this down into many controllers with fewer actions. All these actions are responsible for inserting/updating/removing objects that all belong to the same aggregate. So I'm not quiet keen in having a seperate controller for each class that belongs to this aggregate...

To give you more details, this controller is used in a tabbed page. Each tab represents a portion of the data for editing and all the domain model objects used here belong to the same aggregate.

Any advice?

Cheers,
Mosh

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

踏月而来 2024-08-31 11:35:49

对于所有选项卡,您可以使用一个操作,该操作具有选项卡参数,指示您需要返回哪些数据。

控制器的工作是将这个string选项卡转换为enum类型变量。然后选项卡将被发送到存储库,存储库的工作是返回数据以响应选项卡值。

控制器应该通过服务来完成其工作:输入验证器和映射器。

映射器服务的工作是将用户输入(通常是字符串)映射到实际类型值(int、System.DateTime、枚举类型等)。

验证器的工作是检查输入是否有效。

遵循这个原则应该可以让你的控制器变得非常小。

For all your tabs you can use one action, that have an tab parameter, that indicate what data you need to return.

The controller job is to cast this string tab into enum type variable. Then the tab will be send to the repository, and the repository job is to return data in response to the tab value.

The controller should do its job through to services: Input Validator and Mapper.

The mapper service job is to map the user input (typically strings) into actual typed value (int, System.DateTime, enum types, etc).

The validator job is to check that the input is valid.

Following this principles should keep your controllers really tiny.

转身以后 2024-08-31 11:35:49

如果您想要简单易用的东西,我建议您根据选项卡将控制器分成部分类。当然,它仍然是一个胖控制器,只是各种选项卡功能之间存在一些明显的分离。

If you wanted something simple and easy I'd suggest just splitting up the controller into partial classes based on the tabs. Of course, it's still a fat controller there's just some obvious separation between the various tab functionalities.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文