Другой вариант - CROSS APPLY
Пример
Select B.*
From Inventory A
Cross Apply (
Select *
From (
Select *,RB = sum([Quantity]) over (Partition By SKU Order by Date Desc) - Quantity
From Purchase
Where SKU=A.SKU
) B1
Where RB<=A.Quantity
) B
Microsoft имеет Блок составного приложения (CAB) для использования с приложениями WinForms. В то время как не технически реализация MVC/MVP, это действительно обеспечивает хорошее разделение между кодом UI и кодом неUI: http://msdn.microsoft.com/en-us/library/aa480450.aspx
Это также довольно популярно, чтобы просто сделать это самостоятельно, не используя платформ, пока Вы довольны соответствующими шаблонами. У Jeremy Miller есть превосходный ряд статей о некоторых лучших практиках при проявлении этого подхода:
Создайте свою собственную Часть № 1 CAB - Преамбула
Создайте свою собственную Часть № 2 CAB - Скромное Диалоговое окно
Создайте свою собственную Часть № 3 CAB - Шаблон Контроллера Наблюдения
Создайте свою собственную Часть № 4 CAB - Пассивное Представление
Создайте свою собственную Часть № 5 CAB - Модель Презентации
Создайте свою собственную Часть № 6 CAB - Представление к Коммуникации Предъявителя
Создайте свой собственный CAB - Отвечающий на некоторые вопросы
Создайте свою собственную Часть № 7 CAB - Какова Модель?
Создайте свою собственную Часть № 9 CAB - Доменная Центральная Проверка с Шаблоном Уведомления
Создайте свою собственную Часть № 10 CAB - Поблочное тестирование UI с NUnitForms
Создайте свою собственную Часть № 11 CAB - Агрегатор События
Создайте свою собственную Часть № 12 CAB - Обуздывают безудержные события с "Фиксатором"
Создайте свою собственную Часть № 13 CAB - Встроенные Контроллеры с Тире DSL
Вы попробовали MVC#? Я начал использовать его некоторое время назад, но проект оказался нереален, таким образом, я не могу ручаться за него к очень - извините!
Править: Я просто нашел эту статью, которая выглядит довольно хорошей также.
Мы используем Умную Фабрику клиентского программного обеспечения от MS. Это обеспечивает интеграцию IDE, полную поддержку MVC и после того как Вы преобладаете над понятиями позади него, очень компетентная реализация. Можно получить его от: http://msdn.microsoft.com/en-us/library/aa480482.aspx
Я всегда прокручивал свое собственное - это не действительно трудно и чем больше я нахожусь в 'управлении' моей кодовой базы, тем лучше я чувствую.
Я просто задаюсь вопросом, как платформа MVC согласовалась бы с, скажем, CastleWindsor и т.п.?
Это, вероятно, не является самым полезным из ответов, но просто задающийся вопросом, рассмотрели ли Вы уже эту возможность!
Я не любил Призму, CAB или SmartClient для того, чтобы быть слишком сложным и закончил тем, что развернул свои собственные реализации в конце.
С течением времени некоторые общие шаблоны появляются. Это, снова используются от приложения до приложения. Вот пример: DDD и Правило управляемая Проверка UI в Windows. Формы с MVC.
Я включаю свою собственную платформу: TrueView для.NET. Это основано на DDD и Явном шаблоне Объектов.
По крайней мере использование его для создания быстрых прототипов является отличным способом получить достойную обратную связь от бизнес-пользователей.
Все эти стандартные платформы не подходят для больших разработок сложного приложения, и они предполагают, что дисплеи будут статичны. Я разработал свое собственное также из-за общего требования, чтобы экранные средства управления были динамичными, даже шаблоны MVC/MVP предполагают, что дисплей будет статичен поэтому, когда поля diplayed в управлении будут зависеть, на какой роли у пользователя есть шаблоны MVC/MVP, не подходят. Я разработал инструмент, где можно создать экраны из загрузки бизнес-объектов и их свойств в базу данных затем, пользователь просто выбирает объекты и свойства объектов, которые она хочет отобразить, управление может быть составлено из любого количества контрольных групп, каждая контрольная группа может содержать любое свойство бизнес-объекта, бизнес-объекты сгенерированы от представлений моим Linq ORM. Управление поэтому только отобразит поля контрольных групп, к которым у пользователя есть доступ. Вы могли также использовать ориентируемое программирование Аспекта для обеспечения gule для шаблона MVC, но когда дисплеи должны быть динамичными на основе роли, эти издержки, вероятно, добавили бы немного к большой сложности и стоимости производительности.
Помимо TrueView, есть также Naked Objects for .NET . Это поддерживает режим клиент / сервер, и в настоящее время переносится веб-программа просмотра (на основе эквивалентной программы просмотра Java).
Что касается того, какие свойства / действия доступны для данного пользователя / роли, это делается динамически в Naked Objects. Поддерживаются три вида предварительных условий бизнес-правил: 1. Виден ли член? 2. можно ли использовать член? 3. действительно ли изменение члена (новое значение свойства или параметр действия)? Или, точнее: вы это видите? ты можешь его использовать? ты можешь сделать это? Модель программирования «Обнаженные объекты» позволяет задавать эти правила как декларативно, так и императивно.
Даже если вы в конечном итоге завершите свою модель предметной области в собственном слое пользовательского интерфейса, я рекомендую вам взглянуть на NO.
Ура
Дэн Хейвуд
автор:
Я с успехом использовал следующий проект с открытым исходным кодом для реализации паттерна MVP в ASP.NET + WinForms + C#:
Посмотрите на мою статью в блоге, где показан полный образец веб-приложения ASP.NET: