2012-07-03 4 views
2

У меня есть проект ASP.NET, который содержит много классов.Превосходная практика библиотеки классов ASP.NET

Я думаю о создании библиотеки классов для файлов классов, чтобы код можно было повторно использовать в других приложениях. Есть два варианта:

1) Создание библиотеки классов, содержащую все классы 2) Создание библиотеки классов только для классов, которые содержат код, который будет использоваться совместно, а затем, возможно, использовать интерфейсы

Есть ли правда преимущества варианта 2? Вариант 1 был бы полезен, потому что весь код был бы в одном месте.

+4

Если вы действительно хотите, чтобы разделить эти классы, есть вопрос * когерентность * Библиотека не должна содержать классы, которые являются специфическими для вашего проекта ASP.NET, в. другие слова; он должен содержать только классы, имеющие широкую применимость к другим проектам. У вас может быть другая библиотека классов, которая содержит классы, специфичные для вашего проекта. –

ответ

3

Я бы рекомендовал вариант № 2.

Если код будет повторно использован другими приложениями, я бы не добавил туда дополнительных классов, так как это загромождало бы библиотеку. Я бы поместил оставшиеся классы в папку App_Code вашего приложения ASP.NET, которые относятся к этому приложению.

+0

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

+0

Несомненно @ w0051977. Допустим, у вас есть ClassA и ClassB, а также Application1 и Application2. Предполагая, что ClassA - это то, что вы хотите использовать в библиотеке классов между обоими приложениями, но ClassB специфичен только для Application1. То, что я подразумевал под «загромождать библиотеку», заключалось в том, что при доступе к нему из Application2 с обоими классами в библиотеке вы бы увидели YourLibrary.ClassA и YourLibrary.ClassB - когда действительно все, что Application2 заботится о ClassA. Это может показаться немного придирчивым, но я думаю, что было бы самым чистым только поставить классы, которые вы хотите использовать в библиотеке классов. – rag9

+0

уверен, что «беспорядок» будет просто в другой папке (inetpub вместо system32), если я выбрал вариант 1? – w0051977

1

Если ваша цель заключается в повторном использовании, тогда имеет смысл объединить классы, которые будут использоваться повторно. Однако это не единственная проблема при разработке библиотеки классов. В конечном итоге вы хотите добиться высокой когезии и низкой связи не только на уровне класса/метода, но и в библиотеке классов (уровень компонента). См:

http://jasoncoffin.com/2011/03/10/cohesion-and-coupling-principles-of-orthogonal-object-orientated-programming/

Loose Coupling and OO Practices for Beginners

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