Разработка библиотеки классов / общей библиотеки внутри компании? - PullRequest
1 голос
/ 15 марта 2011

Существуют ли какие-либо руководящие принципы / передовые практики по разработке библиотеки классов (настраиваемая внутренняя «корпоративная библиотека») или проекта или решения с общим исходным кодом или несколькими проектами, возможно, в рамках небольшой или средней компании, занимающейся веб-разработкой (~ 50 сотрудников)?

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

Ответы [ 2 ]

1 голос
/ 15 марта 2011

Похоже, у вас есть сборка большого размера, в которой есть все общие функции (поправьте меня, если я ошибаюсь).

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

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

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

С положительной стороны:

  • Добавление ссылки на одну сборку легко сделать
  • Развертывание может быть проще, поскольку развернуть можно только одну сборку (сложнее испортить?)
  • Потенциальные улучшения производительности

С отрицательной стороны:

  • Если 90% ваших пользователей используют только 5% реальной функциональности, тогда может не стоить загружать всю сборку
  • Одна сборка может затруднить соблюдение архитектурных / проектных стандартов,Например, если уровень пользовательского интерфейса не должен напрямую взаимодействовать с уровнем данных, вероятно, не имеет смысла предоставлять доступ к общим функциям доступа к данным.Одна сборка может упростить обнаружение такой «ошибки».«Почему вы ссылаетесь на сборку доступа к данным из пользовательского интерфейса?»

Как я уже упоминал ранее, я думаю, что более важной, чем фактическая упаковка сборки, является логическая группировка функций в этой сборке.В вашей сборке Enterprise.dll я ожидаю увидеть несколько пространств имен, которые организовали функциональность.например, Enterprise.Logging, Enterprise.Caching, Enterprise.Validation, Enterprise.DataAccess, Enterprise.Security и т. д.

0 голосов
/ 15 марта 2011

Рекомендации / Лучшие практики по разработке библиотек классов: http://msdn.microsoft.com/en-us/library/ms229042.aspx

Вы можете уточнить?Что именно вы имеете в виду, когда говорите «... это просто большая куча ранее созданных функций».?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...