Nyoti Rukadikar Ответов: 2

Может ли контроллер быть синглтоном?


Ребята,

Я внедряю шаблон MVC для своего веб-сайта. Я думаю о реализации контроллера как одноэлементного шаблона. У кого-нибудь есть какие-нибудь мысли о том, насколько хорошо/плохо иметь контроллер в качестве одноэлементного класса?

Я думаю, что контроллер в любом случае не должен отвечать за поддержание пользовательских данных. Он должен выступать только в качестве посредника между бизнес-слоем и ведущим. Это должно быть единственное место для доступа/обновления данных сеанса, и при необходимости он должен выполнять проверку.

Все ваши мысли о преимуществах и недостатках наличия его в качестве синглтона ценятся.

Спасибо
Ньоти

2 Ответов

Рейтинг:
0

TheyCallMeMrJames

Хотя я уверен, что вы могли бы обойти любое из этих ограничений, если бы у вас было достаточно времени, я не вижу никакой пользы в этом подходе.

На какой платформе вы находитесь? На каком языке? Какая версия? Изучали ли вы другие реализации фреймворка MVC?

Контроллеры (в шаблоне) не несут прямой ответственности за поддержание пользовательских данных. Создание синглтона не поможет этому, и вы не можете запретить пользователю устанавливать прямое соединение с базой данных.

По природе протокола HTTP без состояния контроллеры будут создаваться и уничтожаться бесконечно. Что бы вы ни делали, убедитесь, что он может масштабироваться.

Мой 0.05$.


Рейтинг:
0

Nyoti Rukadikar

Спасибо за ваш ответ. Я работаю над этим ASP.NET C# 2.0.

Контроллер отвечает за создание объекта бизнес-уровня и вызов соответствующих методов. Как вы правильно заметили, он не несет ответственности за сохранение пользовательских данных.

Теперь, если 10000 пользователей получают доступ к моему сайту, то вместо того, чтобы создавать 10000 объектов контроллера и стажировать 10000 объектов бизнес-уровня, я подумал, что будет лучше, если я создам один экземпляр контроллера (конечно, содержащий объект бизнес-уровня в качестве публичной собственности) и поделюсь им с другими пользователями.

Я немного изучил Spring MVC, ASP.NET MVC.