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

Рекомендации по использованию Oracle и .NET

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

4b9b3361

Ответ 1

Некоторые практики, которые мы используем на основе нашего производственного опыта:

  • Проверять соединения при извлечении их из пула соединений.
  • Напишите свой код обслуживания, чтобы не предполагать, что соединения действительны - неспособность сделать это может вызвать довольно много горя, особенно в производственных средах.
  • По возможности явным образом закрываю и удаляю соединения после их использования (using(conn){} блокирует работу хорошо)
  • В службе вы должны использовать соединения в кратчайшие сроки - особенно если вы хотите создать масштабируемое решение.
  • Рассмотрите возможность использования явных сообщений о запросах, соответствующих типичной длительности запроса. Последнее, что вы хотите, это иметь один тип запросов, который зависает, чтобы потенциально заблокировать всю вашу систему.
  • По возможности используйте переменные связывания, чтобы избежать жестких разборов в базе данных (это может быть кошмар производительности, если вы не начинаете с этой практики). Использование переменных привязки также защищает вас от основных атак SQL-инъекций.
  • Удостоверьтесь, что у вас есть адекватная диагностическая поддержка, встроенная в вашу систему, - подумайте над созданием обертки вокруг вызовов Oracle ADO, чтобы вы могли использовать инструмент, регистрировать и находить все из них.
  • Рассмотрим возможность использования хранимых процедур или представлений, когда это возможно, чтобы передать семантику запроса и знание модели данных в базу данных. Это позволяет упростить настройку и настройку запросов.
  • В качестве альтернативы рассмотрите возможность использования хорошей библиотеки ORM (EF, Hibernate и т.д.) для инкапсуляции доступа к данным - особенно если вы выполняете операции чтения и записи.
  • Расширяясь выше - не переполняйте свой код десятками индивидуально написанных фрагментов SQL. Это быстро становится кошмаром в ремонтопригодности.
  • Если вы привержены Oracle как базе данных, не бойтесь использовать функции, специфичные для Oracle. Библиотека ODP обеспечивает доступ ко многим функциям, таким как возврат указателей на таблицы, пакетные операции и т.д.
  • Oracle обрабатывает пустые строки ("") и NULL как эквивалентные -.NET нет. Нормализовать обработку строк в соответствии с требованиями Oracle.
  • Рассмотрите возможность использования NVARCHAR2 вместо VARCHAR2, если вы будете хранить строку Unicode.NET непосредственно в своей базе данных. В противном случае преобразуйте все строки unicode в соответствие с базовым подмножеством ASCII. Несоблюдение этого требования может привести к разным проблемам, связанным с запутанностью и сбоем данных.

Ответ 2

Еще несколько советов:

  • Избегайте использования поставщика Microsoft Oracle, потому что он выходит из поддержки (http://blogs.msdn.com/adonet/archive/2009/06/15/system-data-oracleclient-update.aspx)
  • Если вы используете Oracle, используйте специальные функции oracle и свяжите сборку Oracle.DataAccess с вашим кодом.
  • Если вы не уверены и хотите быть гибкими, используйте классы System.Data.Common и загрузите поставщика оракула через

Ответ 3

Поставщики Oracle отлично работают в приложении ASP.NET, но имейте в виду:

  • Соответствие правильной версии клиента oracle 32-разрядной или 64-разрядной версии с пулом приложений
  • 32-разрядный клиент для 32-битного пула приложений, 64-разрядный клиент для 64-битного пула приложений.
  • Разрешения. Предоставьте права пользователя пула приложений в каталоге клиента oracle (c:\oracle\product\10.2.0\client_1).

Это не имеет ничего общего с ASP.NET, но важно отметить, что Oracle хранит пустую строку и null как null, поэтому, если вам нужно знать, что что-то пустое и не пустое, вам нужно добавьте дополнительный столбец для отслеживания этого...