DAO
является абстракцией постоянства данных .
Repository
является абстракцией коллекции объектов .
DAO
будет считаться ближе к базе данных, часто на основе таблицы.
Repository
будет считаться ближе к Области, имея дело только с Совокупными Корнями.
Repository
могут быть реализованы с использованием DAO
, но вы бы не сделали обратное.
Кроме того, Repository
обычно является более узким интерфейсом. Это должен быть просто набор объектов с Get(id)
, Find(ISpecification)
, Add(Entity)
.
Такой метод, как Update
, подходит для DAO
, но не для Repository
- при использовании Repository
изменения в сущностях обычно отслеживаются отдельным UnitOfWork.
Кажется распространенным видеть реализации, называемые Repository
, которые действительно больше похожи на DAO
, и, следовательно, я думаю, что есть некоторая путаница в разнице между ними.
** Изменить 01.04.10: ** Обновление: ошибка 4k теперь исправлена накопительным обновлением IE8 от 30.03.2010. blogs.msdn.com/ieinternals/archive/2010/04/01/
Команда Internet Explorer изучает эту проблему.
- = Impact = -
Пока что мы считаем, что проблема не влияет на работу конечного пользователя с веб-приложением; единственный отрицательный эффект - это ложные / искаженные запросы, отправляемые механизмом спекулятивной загрузки JavaScript. Когда сценарий действительно нужен синтаксическому анализатору, он будет правильно загружен и использован в это время.
- = Обстоятельства = -
Ложный запрос, по-видимому, возникает только в определенных временных ситуациях,
[META HTTP-EQUIV = "Content-Type" CONTENT = "text / html; charset = utf-8"]
Вместо этого в теге заголовка отправьте следующий заголовок ответа HTTP:
Content- Тип: текст / html; charset = utf-8
Обратите внимание, что указание кодировки в заголовке HTTP приводит к повышению производительности во всех браузерах, потому что синтаксическим анализаторам браузера не нужно перезапускать синтаксический анализ с самого начала при обнаружении объявления набора символов. Более того, использование заголовка HTTP помогает смягчить определенные векторы атак XSS.
http://blogs.msdn.com/ieinternals/archive/2009/07/27/Bugs-in-the-IE8-Lookahead-Downloader.aspx - текущая запись по этому вопросу.
Ошибка в формате 4K: В статье говорится: «Объявляя CHARSET страницы с помощью заголовка HTTP Content-Type вместо того, чтобы указывать его внутри страницы, вы можете устранить одну причину перезапуска парсера». Эрик Лоуренс в электронном письме: «К сожалению, другой известной причиной перезапуска парсера является использование пространств имен XML, которые, похоже, использует ваш сайт». Так что, если вы используете XHTML, может возникнуть проблема с разрешением 4K!
У нас та же проблема. Я добавляю:
Response.ContentType = "text/html"
Response.Charset = "utf-8"
к нашему классу базовой страницы. Я скоро доложу о результатах.
FWIW Вот статистика, которую я получил за 1 месяц журналов в LogParser.
12331 обращений к ScriptResource и WebResource / 183 ошибок
С разбивкой по информации агента пользователя. Кажется, поддерживает теорию только IE8 (плюс пользовательские агенты "режима совместимости").
cs-uri-stem MSIEVersion TridentVersion COUNT /WebResource.axd MSIE+8.0 Trident/4.0 100 /ScriptResource.axd MSIE+8.0 Trident/4.0 36 /WebResource.axd MSIE+7.0 Trident/4.0 44 /ScriptResource.axd MSIE+7.0 Trident/4.0 2 /ScriptResource.axd NOT IE NOT Trident 1
Единственная ошибка, не связанная с IE8, вообще не имеет строки запроса, исходящей из браузера Firefox / 3.5.3 (должно быть не связано).
] На моих страницах нет META HTTP-EQUIV = "Content-Type". Хотя у меня есть это, чтобы оттолкнуть пользователей, не использующих Javascript.
<noscript>
<meta http-equiv=Refresh content="0; URL=/ErrorPage.aspx?Error=NoJavascript">
</noscript>