2008-11-19 3 views
1

Я собираюсь начать проект C# с нуля, который будет состоять из нескольких модулей, так что может быть продан модулями существующего приложения PHP/ASP/MySQL/Oracle/MS SQL, которое позволяет показывать 3D-объекты и создавать 2D и 3D-файлы САПР из веб-приложения, которое пользователь может использовать для создания всего материала.Создание обширного проекта для продажи

Мой вопрос, чтобы начать с нуля, и имея точку зрения «продать», это должен быть хороший метод программирования, который я должен реализовать, шаблоны проектирования, модульное тестирование и т. Д. ... как будет Я знаю, как их применять, и есть ли хороший учебник/«показать мне путь» kind'a вещи, чтобы знать о таких вещах, как ...

  • каких классов я должен предоставить быть преодолено клиент, чтобы я мог обеспечить расширяемость в наших модулях?
  • какой «пакет» следует использовать для «продажи»? DLL, CAB, MSI?
  • Должен ли я использовать SubSonic/NHibernate, чтобы пользователь мог создать свой собственный DAL? Наша реализация прототипа будет использовать только Oracle.

Я сейчас потерялся прямо сейчас, я знаю, что делать, но не так, как я могу это сделать (имея в виду этот идеальный путь кодирования).

Любые хорошие идеи программирования с удовольствием оценили :)

ответ

3

Для быстрого использования каждого из ваших явных вопросов, я бы сказал.

Что касается интеграции, изучите инверсию принципов управления и то, как он используется для целей расширяемости. Следите за MEF, Microsoft Extensibility Framework. Что касается того, что, ваши точки интеграции будут зависеть в основном от типа приложения, которое вы пишете, и от вашей целевой аудитории. Это также зависит от того, какой контроль вы хотите предоставить третьим лицам. Например, отражатель имеет большую, почти широкую открытую структуру плагина.

DLL и CAB - это библиотеки и форматы хранения соответственно. Сами по себе они мало что делают. MSI - одна из форм установки и может содержать библиотеки DLL, которые будут составлять ваше приложение. Независимо от типа установки у вас есть, чем проще использовать, тем больше людей попробуют ваш продукт.

Сам слой данных не обязательно имеет значение. Люди, вероятно, не будут создавать свои собственные уровни данных для вашего приложения, и если они это сделают, они должны иметь возможность использовать то, что они хотят, если ваша инфраструктура расширяемости выполняет свою работу. Что еще более важно, так это то, что независимо от того, какой DAL вы решаете, вам нужно проверить, может ли он работать в разных базах данных, если это важно для вас и сколько требуется работы. Вам также необходимо убедиться, что функции, которые вы используете в DAL, работают для всех баз данных, которые вы хотите поддерживать. NHibernate имеет несколько функций, которые не работают во всех базах данных, на которых он работает.

0

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

+0

Как насчет выяснить, что потенциальные клиенты хотят первого ? – 2008-11-19 22:16:01

+0

, которые я знаю :), они хотят использовать текущий проект и имеют преимущество, чтобы расширить его и использовать наши идеи в своем проекте, особенно созданные с помощью эскизов с 2d/3d-кэдами. – balexandre 2008-11-19 22:44:22

1

Прежде всего, подумайте, КАК РАСПРОСТРАНЯТЬ, что это должно быть. Если вы просто предоставляете полную расширяемость, вы рискуете отсутствием безопасности и нестабильности. Вы можете разрешить переопределение классов, просто убедитесь, что вы только отмечаете правильные методы как «виртуальные». Тип пакета для продажи зависит от вашей целевой аудитории. Если вы настроили таргетинг на опытных пользователей, DLL должна быть «ОК». Но если вам нужна простая в использовании система, то MSI или любой другой установщик будут более мудрыми.

Что касается DAL, вы должны проанализировать преимущества и недостатки каждого и выбрать тот, который подходит.

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

2

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

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

0

Я не думаю, что вы принимаете правильный подход. Вы не должны проектировать программное обеспечение с точки зрения «продажи». Вы разрабатываете программное обеспечение для выполнения работы, требуемой вашей бизнес-моделью и ее правилами. Итак, с точки зрения «продавать», я бы сказал, что сначала беспокоюсь о том, что у вас хороший продукт, программное обеспечение (неважно, насколько оно хорошо или как плохо написано) будет вторым, и вы будете богаты, так как поскольку программное обеспечение выполняет свою работу и ваш продукт является хитом.

Слышали о том, как начался ebay? Долгое время они были очень успешными, но имели очень плохой код на C++ (и кто знает, что еще).

1

Я думаю, что я собираюсь купить этот book, он решает мои проблемы в «как разрешает» и от Brad Abrams точки зрения, довольно хорошо :)

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