Когда подходящее время использовать библиотеку классов C # (.dll)? - PullRequest
12 голосов
/ 02 апреля 2009

Я программист, который никогда не использовал .dll файлы. Конечно, когда мне нужно стороннее программное обеспечение, такое как графическая библиотека, библиотека, помогающая мне создавать графики и т. Д., Я действительно добавляю файлы reference / ddl в свою программу и использую их в своем коде.

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

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

То, что я хочу знать:

будет ли какое-либо преимущество:

1) Записать методы в библиотеку классов -> скомпилировать / собрать ее -> добавить библиотеку в качестве ссылки на программу - что потребуется для очистки некоторых переменных?

Или было бы точно так же, если бы я где:

2) Создайте новый SanitizeClass в программе -> добавьте все методы sanitize -> вызовите методы из SanitizeClass в различных классах в программе, которым требуется очистить переменные

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

Может ли кто-нибудь просветить меня? :)

Ответы [ 7 ]

21 голосов
/ 02 апреля 2009

Ключевой вопрос: имеет ли смысл использовать несколько типов в одном приложении? Если это так, он должен быть в библиотеке классов. Если нет, вы можете все же захотеть поместить его в библиотеку классов просто для разделения (например, иметь одну сборку на уровень в n-уровневом решении), но вы можете просто поместите это в своем заявлении.

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

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

2 голосов
/ 02 апреля 2009

Дополнительные сборки добавят небольшое время загрузки и затраты памяти, но в остальном не влияют на производительность.

Безопасность будет иметь значение, только если вам нужна другая защита доступа к коду (CAS), и будет использовать CAS.

Обычно есть три причины:

  1. Это делает вещи проще. Помещение всего в одну сборку становится громоздким (это может включать организационные / групповые проблемы).

  2. Повторное использование.

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

2 голосов
/ 02 апреля 2009

Первая мысль, которая приходит на ум, - это повторное использование. Будет ли эта дезинфицирующая библиотека использоваться вне приложения, над которым вы сейчас работаете? Если да, то вам не нужно ссылаться на exe в будущем, для этого вы хотите создать файл DLL (возможно, даже строгое имя и GAC), а затем просто ссылаться на него в будущем. *

1 голос
/ 02 апреля 2009

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

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

Также рекомендуется поместить слои вашего приложения в разные библиотеки (проверьте n-уровневую архитектуру)

0 голосов
/ 20 октября 2016

Что такое класс Lib?

Мы можем создавать файлы классов во всех приложениях .Net (C # .Net, Asp.net, Asp.net MVC)

В Java это называется Package! ...

В .Net мы называем его DLL (Dynamic Link Library)

Если вы создаете классы в своем приложении, вы можете использовать эти классы только внутри этого приложения, вы не можете использовать его в других приложениях.

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

Когда вам нужно создать и использовать Class Lib?

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

Пример:

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

Пример реального времени:

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

Класс lib подобен мусорному ящику в обычном месте (колледж, железнодорожный вокзал), к которому любой может получить доступ и использовать его.

0 голосов
/ 02 апреля 2009

если вы будете повторно использовать этот код в разных приложениях - то есть: это будет какая-то общая библиотека - затем скомпилируйте ее как dll

reg performance, пожалуйста, обратите внимание, что любой код, который выполняется для внешней сборки, всегда будет немного медленнее, чем выполнение кода в той же сборке

0 голосов
/ 02 апреля 2009

Я думаю, что самый простой способ - добавить проект SanitizeLibrary в качестве проекта Library Class к вашему решению и ссылаться на этот проект в своем приложении. Если вы сочтете это полезным, вы можете извлечь библиотеку из текущего проекта и ссылаться на нее как dll в других ваших проектах.

...