Продолжить библиотеку Microsoft Enterprise?

Этот синтаксис от Выбора Visual Basic ... Оператор выбора :

Dim number As Integer = 8
Select Case number
    Case 1 To 5
        Debug.WriteLine("Between 1 and 5, inclusive")
        ' The following is the only Case clause that evaluates to True.
    Case 6, 7, 8
        Debug.WriteLine("Between 6 and 8, inclusive")
    Case Is < 1
        Debug.WriteLine("Equal to 9 or 10")
    Case Else
        Debug.WriteLine("Not between 1 and 10, inclusive")
End Select

Вы не можете использовать этот синтаксис в C#. Вместо этого необходимо использовать синтаксис от первого примера.

24
задан Josh 19 February 2010 в 13:27
поделиться

10 ответов

ВСЕ уровни доступа к данным имеют свою верхнюю и нижнюю стороны. Как подрядчик я работаю с большим количеством проектов. В каждом проекте, который я начал лично, я использовал блоки доступа к данным корпоративной библиотеки, вызывая S'procs. Это довольно быстро встать и уйти, но более того: я очень хорошо с ним знаком. Обратной стороной, конечно же, является объем кода, который вам нужно написать.

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

Честно говоря, вам следует расшириться и попробовать что-то новое. Который'

8
ответ дан 28 November 2019 в 23:37
поделиться

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

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

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

7
ответ дан 28 November 2019 в 23:37
поделиться

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

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

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

3
ответ дан 28 November 2019 в 23:37
поделиться

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

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

6
ответ дан 28 November 2019 в 23:37
поделиться

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

EL PRO

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

EL CON

  • Медленный вывод на рынок или отсутствие поддержки для многообещающих такие практики, как ORM, DI / IoC или AOP
  • Тяжелые с более высокими соответствующими накладными расходами, чем другие инфраструктуры, такие как Log4Net, в домене регистрации.
  • Трудно настроить, если вы выйдете за пределы модели поставщика. Работа с изменениями исходного кода, подписью и проблемами развертывания / управления версиями GAC может быть гораздо более серьезной проблемой со сложной сетью библиотек DLL EL, чем с более легкой структурой.
  • Некоторые из вещей, которые являются критическими для крупных предприятий такие потребности, как пакетная структура, не добрались до EL и все еще являются частным кодом в Avanade ACA framework.
4
ответ дан 28 November 2019 в 23:37
поделиться

Лично я думаю, что Enterprise Library страдает раздутием программного обеспечения . Я бы не стал считать его основополагающим «просто потому». У меня должна быть очень веская причина, чтобы использовать его в проекте. Я использовал некоторые из ранее выпущенных Application Blocks - когда они предлагались как таковые - но я скептически относился к переходу на полную Enterprise Library сейчас только потому, что мы использовали одну часть из многих. Там'

4
ответ дан 28 November 2019 в 23:37
поделиться

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

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

3
ответ дан 28 November 2019 в 23:37
поделиться

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

2
ответ дан 28 November 2019 в 23:37
поделиться

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

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

2
ответ дан 28 November 2019 в 23:37
поделиться

Почему бы не расширить и не оценить SubSonic на меньшем проекте? Роб Коннери сейчас работает на MS и проделал хорошую работу, создав «швейцарский армейский нож» ORMS. Этот проект, безусловно, хорошо известен, так что вам, возможно, удастся представить его клиентам и коллегам.

В SubSonic входит:

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

    const double expected = 55.5922;

     // перегрузка # 1
    двойной результат = новый
     Выберите (Aggregate.Avg ("UnitPrice"))
     .Из (Product.Schema)
     .ExecuteScalar <двойной> ();
    Assert.AreEqual (ожидается, результат);
    

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

2
ответ дан 28 November 2019 в 23:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: