2010-06-01 2 views
5

Мы находимся в стадии разработки проекта, целью которого является репликация приложения ASP classic для ASP.Net 4.0. Система должна быть полностью веб-. Существует несколько новых требований к новой системе, которые делают этот сложный проект:Перенос классического ASP-приложения на ASP.NET

  1. Система должна быть независимой от базы данных. Он должен в версии 1.0 поддерживать MS SQL Server, Oracle, MySQL, Postgres и DB2.

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

  3. Система должна позволить административному конечному пользователю создавать свои собственные таблицы в базе данных через веб-интерфейс.

  4. Система должна позволить административному конечному пользователю создавать/настраивать пользовательский интерфейс (на основе Интернета), где они могут выбирать таблицы и поля в системе (либо основные таблицы нашей системы, либо их собственные пользовательские таблицы, созданные в # 3)

  5. Система должна позволить административному конечному пользователю создавать и поддерживать отношения между этими настраиваемыми таблицами, а также между этими таблицами и основными таблицами нашей системы.

  6. Система должна позволить административному конечному пользователю создавать бизнес-правила, которые будут обеспечивать проверку, отображение/скрытие элементов пользовательского интерфейса, блокирование определенных действий на основе идентификации конкретных пользователей, определенных групп пользователей или привилегий.

По существу это система, которая имеет некоторые основные функции отслеживания билетов, но позволяет конечному пользователю расширять интерфейс, бизнес-правила и базу данных. Возможно ли это построить в среде .NET, основанной на Интернете? Если да, то каково, по вашему мнению, уровень усилий, чтобы это сделать? В настоящее время мы являемся магазином из 6 человек, с 2.5 разработчиками на полную ставку.

+1

Боюсь, я недостаточно осведомлен, чтобы ответить на ваш вопрос, но если бы у вас был лучший заголовок для вопроса, возможно, у кого-то еще может быть. Если какие-либо моды видят это и способны, пожалуйста, измените заголовок. – 0fnt

+0

Внесены изменения в нечто более значимое. –

+0

Кроме того, это должна быть Wiki сообщества. – tster

ответ

3

Вопрос в том, кто создал эти требования? Большинство опытных разработчиков в прошлом, в большинстве случаев, безуспешно использовали общую систему do-all. Это потому, что это сложно, и есть много подводных камней. Требуется ли пользователям создавать свои собственные таблицы на уровне базы данных от опытного программиста, который понимает последствия безопасности и принципы проектирования, или это от менеджера проекта, который «сделал немного программирования»? Сначала выберите свои требования к реальному миру.

Вместо

Система должна позволить административной конечному пользователю создать свои собственные таблицы в базе данных через веб-интерфейс.

Может быть, вы должны иметь требование

Система должна позволить административный конечному пользователю определить и хранить свои данные через веб-интерфейс .

Это не позволит вам сузить ваши варианты. Мозговой штурм различных реализаций, создайте прототипы и идеи концептуальных проектов и будьте готовы их выбросить.

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

Для проверки, ознакомьтесь с FluentValidation. Это очень простая в использовании и гибкая система проверки, которая хорошо работает с проверкой JQuery на стороне клиента.

Дайте себе около года, а затем, возможно, добавьте 50% для хорошей меры. Действительно, оценить такой проект очень сложно, но мы достигли аналогичного масштабного проекта с аналогичной командой за год, используя передовую гибкую методологию. Я предполагаю, что ваши разработчики компетентны. Это очень сложный проект, как вы правильно определили.

+0

Спасибо за ваш ответ. Я рассмотрел использование NHibernate или Entities Framework для абстрагирования базы данных. Тем не менее, я не думаю, что любой из этих пакетов мог бы обработать на лету добавления новых типов/таблиц. Я думаю, что абстракция db не является настоящей проблемой здесь. – bzarah

+0

NHibernate - хороший вариант. Это сэкономит вам массу времени. Подумайте о том, есть ли сущность, которая может содержать любые данные клиента, которые сохраняются в любом формате, который хочет клиент. Если это будет сделано правильно, вам не нужно беспокоиться о НИЧЕГО в базе данных. Держите свои бизнес-правила в своем бизнес-слое и как можно дальше от своей базы данных. Так или иначе. Это то, что я сделал бы. –

+1

Даниэль ничего не сказал о каких-либо ОРМ. Он говорил о разработке макета базы данных, который позволяет использовать концепцию пользовательских данных, которая хорошо понимает ORM. – tster

0

Это зависит от мастерства людей, выполняющих задание. Дайте требования разработчикам и попытайтесь получить от них оценку.

PS. пожалуйста, подберите вопрос в названии вопроса «Может ли это быть сделано» немного общего;)

0

Да, но для чисел, как 3 и 5, почему бы не использовать имеющееся программное обеспечение? Инструменты запросов Sun, Ms sql management studuio и т. Д.

-1

Прежде всего, да, все, что может быть выполнено, но они не являются настоящими требованиями, так как детали реализации. Когда вы говорите, что конечное использование должно иметь возможность «создать новую таблицу», то, что вы должны сказать, «конечное использование должно иметь возможность определять новый тип объекта». Это необязательно иметь собственный стол.

В любом случае, если у вас всего 2,5 разработчика (и я полагаю, что вы один из них), и у вас недостаточно опыта, чтобы посмотреть на все требования и текущую систему и оценить осуществимость, Думаю, проект будет успешным.

+0

Согласен, что можно сказать «Сущность». Но это само по себе является детальностью реализации. Насколько я знаю, учитывая динамический характер приложения, он может вообще не иметь объектно-ориентированного решения. Возможно, мы будем метать DTO какого-то типа в среднем слое. Я просто поставил фактическое требование, которое мне было дано. Меня попросили создать таблицы в базе данных. И иметь динамический интерфейс. – bzarah

+0

Помните, что хорошие программисты не принимают предоставленные требования в качестве Евангелия. Вам нужно работать с пользователями, чтобы понять, каковы реальные требования, а не просто капля, которую выписывает средний менеджер проекта. – tster

+0

Согласовано.Я фактически нажимаю, чтобы ограничить область действия этого поля некоторыми определенными пользователем полями из существующих основных объектов. Я надеялся, что все будут комментировать, что создание системы, которая может позволить конечному пользователю создавать собственное приложение, потребует чудовищных усилий. Затем я мог бы использовать ваши комментарии для резервного копирования своей позиции. Но так как вы хлопаете моего нового босса (второй день на работе), я просто буду держать это в себе. :) Спасибо за ваши комментарии tster. Они очень ценятся. – bzarah

0

Вы предоставили 6 вопросов/требований и ниже, это только мое честное мнение.

  1. Разработка системы, которая имеет возможность использовать различные базы данных БД, безусловно, возможна и с хорошим подходом.
  2. Разрешающий доступ для чтения в один из баз данных БД для возможностей отчетности сторонними инструментами является распространенным сценарием и возможен.
  3. Позволяет системным администраторам изменять структуру БД (т. Е. Добавлять/редактировать/удалять таблицы/столбцы), это спорная практика. Зачем воссоздать колесо. В каждом из базовых баз данных, которые вы упомянули, есть инструменты администрирования, созданные для управления модификацией структур баз данных. Более того, если вы планируете развернуть это в общедоступном Интернете, тогда вы откроете возможность для катастрофы. Если это системные администраторы, почему бы просто не использовать уже созданные инструменты? Это безопаснее, проще в разработке и, в конце концов, легче поддерживать.
  4. Позволяет конечному пользователю настраивать администратор для настройки пользовательского интерфейса, изменяя названия ярлыков, скрывая поля, требующие поля. Это не проблема для основных таблиц, но как и для пользовательских таблиц, см. Мои комментарии к №3.
  5. Разрешить администратору создавать и поддерживать отношения (например, внешние ключи, первичные ключи, уникальные ключи) из Интернета так же опасны, как и боль в прикладе, как # 3. Зачем воссоздать колесо?
  6. Ваш последний вопрос/требование требует многого. Все, что я могу сказать, это начать с того, что пользователь может немного настроить пользовательский интерфейс (скрыть/показать поля, создав поле в форме). Что касается механизма правил, там есть фреймворки, которые обрабатывают правила/workfow. Возможно, некоторые исследования по одной из этих структур были бы полезны для вас. Microsoft имеет Windows Workflow Foundation

В целом, вы не первый, кто придумал эти идеи. Но общее развитие и ремонтопригодность такого приложения может быть кошмаром.

+0

Джон, спасибо за использование сторонних инструментов. Я предполагаю, что это может быть жизнеспособным вариантом. Многие клиенты не требуют ничего, кроме основной системы, в то время как другие могут использовать сторонний пакет для расширения по мере необходимости. Мой босс действительно хочет создать систему, которая может быть изменена во время выполнения, но, вероятно, более вероятно, что нам нужно просто провести расширенную консультацию во время установки приложения и попробовать и дать им 95% того, что им нужно в первый день, позволяя последним 5% уйти. – bzarah

+0

Обратите внимание, что если на этапе обнаружения вашей новой реализации вы обнаружите, что вам нужно добавить поле или добавить таблицу. Вы можете реализовать эти новые функции в качестве основных функций. Используя конфигурацию пользовательского интерфейса, скрывайте ненужные функции для клиентов, которые этого не хотят или не нуждаются. Но вы можете обнаружить, что то, что один клиент хочет другого, хочет то же самое, но просто не знает, как его описать. –

+1

Я бы посоветовал вам не пытаться дать им 95% в первый день. Дайте им 5% на 10-й день, самые важные 5%. Затем второй самый важный 5% на 20-й день и так далее. Читайте на подвижном. Предоставляйте небольшое количество функций рано и регулярно. Потому что требования меняются. –

Смежные вопросы