Remix.run Logo
sunir 3 days ago

The controller is meant to be handling things like keyboard events or http events. That’s the boundary to the user. The thinner the better.

I don’t know why you think this is a combative conversation where I need will to accept or reject anything. I lack understanding of how you would solve the same problem. Throwing chaffe is not communication. It creates a second problem beyond the one we are discussing.

How does the model handle authentication without having to become aware of boundary protocols? How the user authenticates is part of the input to the system. Eg http basic or oauth

I don’t know how you handle routing. Do you put that in the model as well?

mpweiher 3 days ago | parent [-]

> I don’t know why you think this is a combative conversation where I need will to accept or reject anything.

You replied to my post, contradicting me. ¯\_(ツ)_/¯

> The controller is meant to be handling things like keyboard events or http events. That’s the boundary to the user.

You keep repeating this, it keeps not being true in MVC.

> I lack understanding of how you would solve the same problem.

I described how I would solve the problem.

> How does the model handle authentication without having to become aware of boundary protocols?

It gets passed required information. Just like it gets passed other information.

> I don’t know how you handle routing.

I personally handle it by having in-process REST available in my language. So I don't have to translate from URIs to methods before I reach the model.

https://objective.st

You might have mentioned before that you are talking explicitly about web programming, where the concept drift from actual MVC to what is called MVC nowadays is even greater than in GUI programming.

MVC as described by Trygve is for GUI programming.

sunir 3 days ago | parent [-]

lol, contradictions about MVC are par for the course. It's not personal. It's just confusing. Talking about the concepts isn't the same as talking about each other as professionals. Some of the articles you linked to express this tumult over decades.

Looking at 1979, when I read this.

> A controller is the link between a user and the system.

I think of it as the boundary

> It provides the user with input by arranging for relevant views to present themselves in appropriate places on the screen.

It's the router, or view loader.

> It provides means for user output by presenting the user with menus or other means of giving commands and data. The controller receives such user output, translates it into the appropriate messages and pass these messages on .to one or more of the views.

The controller receives user input, translates it, and dispatches the input to the views. I think this has changed in the modern era.

> A controller should never supplement the views, it should for example never connect the views of nodes by drawing arrows between them.

I don't really understand this exactly, but I think it means views compose themselves.

> Conversely, a view should never know about user input, such as mouse operations and keystrokes. It should always be possible to write a method in a controller that sends messages to views which exactly reproduce any sequence of user commands.

The controller handles the raw input and translates it into actions/commands meaningful to the system.

>> How does the model handle authentication without having to become aware of boundary protocols? > It gets passed required information. Just like it gets passed other information.

Is what you consider the model all logic in the system? I would not. I would consider the model to be the data in the system world, using terms in systemese. It shouldn't know or care about OAuth or SAML or HTTP Authorization or whatever. It would care about Users and Sessions.

However, is this semantics? The use case and work flow approach is just a layer on top of the data model. The auth is another layer.

Why it matters to me is I prefer to think of systems as data flows, and the code follows the data flow. Control layers are different than the actual data.