Подтвердить что ты не робот

Продолжить работу с корпоративной библиотекой Microsoft?

Я использовал Microsoft Enterprise Library, поскольку до того, как он был помечен как таковой для абстрагированного доступа к данным, вместо написания моего собственного DAL, Первоначально я просто импортировал один файл (sqlhelper.cs) в свои проекты, но затем более поздние версии требовали, чтобы я ссылался на всю dll, если только я не хотел много работать над удалением необходимых функций.

Я предполагаю, что новая версия Enterprise Library будет выпущена через несколько месяцев после выхода .NET 4.0. Использование моей библиотеки в нашей компании, скорее всего, отличается от традиционного использования, мы разрабатываем и разрабатываем веб-приложения и приложения для Windows для ряда клиентов. Мы либо передаем готовые проекты внутренним разработчикам для поддержки, либо, если это меньший клиент, мы будем поддерживать приложения.

Из-за характера бизнеса мне посчастливилось "начать с нуля" довольно много времени при разработке нового приложения, в отличие от привязки к обновлению одной и той же базы кода. Следующий проект, вероятно, задаст тот же вопрос о себе, следует ли снова использовать Microsoft Enterprise Library? Мы используем только блоки доступа к данным, и это действительно экономит время при разработке. В то же время я задаюсь вопросом, сколько накладных расходов и сложности я добавляю в проект, используя объекты.

Заранее благодарю вас за ваши предложения.

Обновление:

В обсуждении здесь действительно есть вопрос, который я пересматриваю - это может быть меньше об облегченных абстракциях для доступа к Хранимым Procs, но более крупный архитектурный вопрос о том, почему они все еще привязаны к модели N-Tier.

Для меня, если дело доходит до того, какая база данных используется в приложении. В классическом мире 3-Tier/N-Tier база данных представляет собой независимое хранилище информации о компании. Различные приложения (Web, Desktop и т.д.) Используют общий доступ и доступ к общей платформе хранения. В этом случае хранимые процедуры имеют смысл, поскольку они действуют как уровень абстракции между различными приложениями и таблицами.

Для других проектов база данных является эксклюзивным постоянным хранилищем большего приложения. Пользовательский интерфейс или другие типы доступа (включая веб-службы, удаленные и т.д.) Необходимы для прохождения BLL приложения. Это сценарий, который мы чаще разрабатываем из-за характера нашего бизнеса.

Учитывая этот вывод, я собираюсь создать два прототипа, используя SubSonic и другие LINQ. Хотя Im обеспокоен накладными расходами и потерей точности в LINQ, значительное сокращение кода, необходимого для доступа к данным, и согласование с типом проектов, которые мы разрабатываем, заслуживают внимания.

4b9b3361

Ответ 1

У всех слоев доступа к данным есть свои стороны вверх и вниз. Будучи подрядчиком, я сталкиваюсь с широким спектром проектов. В каждом проекте, который я лично начал, я использовал блоки доступа к данным для корпоративных библиотек, вызывающие S'procs. Это довольно быстро, чтобы встать и уйти, но более того: я очень знаком с этим. Недостатком, конечно же, является количество кода, который вы должны написать.

Несколько недавних проектов, к которым я привязан, используют LINQ/PLINQO. Конечно, поддержка редактора велика, и он создает большую часть кода для вас, я не впечатлен его живучестью для изменений в базе данных inflight, и я не впечатлен обручами, которые вам нужно перепрыгнуть, чтобы получить достойную производительность.

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

Ответ 2

Корпоративная библиотека не так уж плоха, но блок данных не так уж и хорош. Поэтому сохраните большую часть того, что вы получаете с корпоративной библиотекой. Также обратите внимание: сейчас большая часть Enterprise Library переписывается, включая блок доступа к данным.
http://www.pnpguidance.net/Post/EnterpriseLibrary50UnityConfiguration.aspx

Но для доступа к данным вы должны взглянуть на Entity Framework, Linq To SQL (он не мертв) или NHibernate (проверьте SummerOfNHibernate.com).

Вне EntLib вы также можете взглянуть на Prism.

Ответ 3

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

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

Ответ 4

Лично я думаю, что корпоративная библиотека страдает раздутие программного обеспечения. Я бы не выбрал его как основу для "просто потому, что". Мне понадобится очень веская причина использовать его в проекте. Я использовал некоторые из ранее выпущенных Application Blocks - когда они были предложены как таковые, но я скептически относился к переходу в полную корпоративную библиотеку сейчас только потому, что мы использовали один кусок многих. Там ценность при сохранении сложности до минимума в проекте, а часть сложности проекта - дополнительные компоненты и библиотеки, на которые ссылаются.

Ответ 5

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

EL PROs

  • Microsoft в пространстве имен. Неудивительно, что для многих крупных организаций это соображение №1. В стороне многие удивляются, когда они читают EULA и понимают фактический уровень поддержки Microsoft для EL.
  • Проверено на многих крупных предприятиях по всему миру. Это не означает, что это лучшее решение, просто его стабильность и незначительное влияние на производительность.
  • [Доступ к данным] Возможно, это лучшее решение, если вы хотите придерживаться старой школы, созданной вручную или сгенерированной SQL/хранимой процедуры.

EL CONs

  • Медленная рыночная или несуществующая поддержка для перспективных практик, таких как ORM, DI/IoC или AOP
  • Тяжелый вес с более высокими соответствующими накладными расходами, чем другие платформы, такие как Log4Net в домене регистрации.
  • Трудно настроить, если вы выходите за пределы модели поставщика. Обработка изменений исходного кода, подписи и GAC-развертываний/версий может быть гораздо больше медведя со сложной сетью DL DL, чем с более легким фреймворком.
  • Некоторые из вещей, которые требуют крупные предприятия, например, пакетная инфраструктура, не попали в EL и все еще являются проприетарным кодом в инфраструктуре ACA Avanade.

Ответ 6

У меня нет ничего против EntLib. Фактически я использую его сам в основном для регистрации и обработки исключений на нескольких проектах.

Как вы, однако, заметили, что часть доступа к данным в библиотеке дает вам очень мало. Даже если затраты на его использование в ваших проектах невелики (поскольку у вас уже есть некоторый опыт работы с ним), все еще есть лучшие "продукты" доступа к данным (Linq2Sql, EF, SubSonic, NHibernate, LLBLGen...), которые в длинный пробег сэкономит вам много времени.

Нижняя строка: если она не дает вам каких-либо важных преимуществ, не включайте ее в проект только потому, что вы привыкли к ней. Проведите выходные на одной из новых технологий/продуктов, и я уверен, что это принесет большую пользу, чем придерживаться DAAB.

Ответ 7

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

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

Ответ 8

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

Ответ 9

Вот очень проницательная статья о Linq-to-SQL: Сжатие данных доступа к данным (DAL).

Я начал работать с Microsoft Application Access Block несколько лет назад. Когда Линк был представлен, я заставил себя изучить его. С тех пор я включил его во все мои проекты.

Ответ 10

Почему бы не разветкиться и оценить SubSonic в меньшем проекте? Сегодня Роб Коннери работает для MS и отлично справился с созданием "швейцарско-армейского ножа" ORMS. Проект, безусловно, является продуктом, поэтому вам может быть лучше повезти его клиентам, а также коллегам.

В SubSonic включен:

  • Свободный интерфейс
  • Поддержка MS SQL, Oracle, MySql
  • Совокупные запросы:

    const double expected = 55.5922;

    // overload #1
    double result = new
        Select(Aggregate.Avg("UnitPrice"))
        .From(Product.Schema)
        .ExecuteScalar<double>();
    Assert.AreEqual(expected, result);
    

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