<form onreturn="someJavascriptFunction()" action="" method="">
создание функции js, способной открыть эту страницу предварительного просмотра
В общем, вы, вероятно, должны иметь их в двух разных объектах, но для этого есть определитель. Это может иметь смысл, если ваш проект достаточно мал и ваша объектная модель недостаточно сложна, чтобы функциональность была объединена в один объект; однако, если ваша функциональность достаточно сложна, вам почти наверняка будет лучше разделить контроллер и бизнес-объекты. По крайней мере, проектируйте систему с учетом разделения контроллера и бизнес-объектов на более позднем этапе, если вы не разделите их полностью сейчас.
То, что вы делаете, является формой архитектуры «толстого контроллера». В наши дни разработка программного обеспечения имеет тенденцию к созданию тонких контроллеров.
ОО-дизайн - это все о разделении. Если вы усвоили только одну вещь об объектно-ориентированном программировании, пусть будет так.
Посмотрите « Domain-Driven Design Quickly ». Эта бесплатная электронная книга представляет собой сжатое введение в концепции, изложенные в важной книге Эрика Эванса «Домен-ориентированный дизайн»
. Изучение этих концепций должно помочь вам понять, как отделить бизнес-логику от контроллера или службы. слой.
Нет, я не добавляю бизнес-логику в контроллеры. Я добавляю промежуточный сервисный уровень, который внедряется в контроллеры. Позвольте сервису делать свою работу. Контроллеры предназначены для маршрутизации запросов и маршалинга ответов.
Размещение логики на чистом уровне обслуживания является «сервис-ориентированным», даже если вы этого не сделаете. t с помощью веб-сервисов или WSDL. Он имеет дополнительное преимущество - он все еще работает, если вы решите изменить технологии контроллера / представления.
Ответ на ваш вопрос о дизайне может быть следующим: как бы вы спроектировали свое приложение, если бы вам также пришлось предоставить для него веб-клиент.
Оба ваших пользовательского интерфейса Windows Forms и ваш веб-интерфейс будет вызывать одни и те же классы и методы. Единственная разница будет заключаться в том, как каждый из них заполняет пользовательский интерфейс и взаимодействует с другими уровнями.