В прошлом году я разработал сервис доступа к данным для нашего проекта с помощью Платформы Объекта (.NET3.5, конечно) и с помощью книги Julie Lerhman в качестве руководства, которому ПОСТЕПЕННО возражает разработанное состояние, отслеживающее. Мы используем WCF и также имеем Silverlight 3 клиента. Мы перемещаемся в.NET 4.0, и я хочу переключиться на использование генерации кода для устранения потраченного впустую времени разработчика, пишущий ПОСТЕПЕННО классы и классы перевода.
С исследованием я сделал, кажется, существует 3 способа состояния, отслеживающего POCOs:
1) Измененные прослеженные прокси: кажется, не полезен для нас, поскольку кажется, что это не работает по сериализации WCF.
2) Снимок базирующимся: Снимок взят, когда ПОСТЕПЕННО график объекта получен, возвращенный график от клиента по сравнению с тем снимком, и различия сравнены... кажется хорошим мне.
3) Самоотслеживание Объектов: Генератор кода генерирует логику для того, чтобы сделать сам отслеживающий в ПОСТЕПЕННО объекты. Это кажется близко к тому, что мы делаем теперь кроме него, все сгенерирован для нас.
Я пытаюсь разработать то, что преимущества и недостатки между всеми этими методами. Я предполагаю, что 1 и 2 "соединены" и что им нужен ObjectContext, что POCOs были первоначально запрошены от остаться instanciated, но не были в состоянии подтвердить это. Я также не вижу оснований, почему любой действительно обеспокоился бы опцией 1, учитывая, что опция 3, кажется, делает то же и больше...
Снимок кажется самым простым мне, но если это требует, чтобы ObjectContext оставался открытым в течение долгого времени, я не так уверен...
Я - только младший программист так любой совет здесь, особенно относительно Silverlight 3 (я полагаю, что работа опций 2 и 3 с Silverlight 3, но 2 может иметь проблемы), очень ценится.
Выберите вариант 3. Самостоятельно отслеживающие сущности, поскольку именно для этого они были разработаны.
«Сущности с самопроверкой оптимизированы для сценариев сериализации»
Этот пост дает хорошую демонстрацию.
Две другие опции применимы только тогда, когда изменения производятся, когда вокруг есть контекст объекта. Ваш единственный вариант - STE. С помощью STE сущности будут отслеживать свои собственные изменения. Когда измененный граф объекта отправляется на сервер, вы можете просто воспроизвести эти изменения, как показано ниже. db.Dustomers.ApplyChanges (заказчик); db.SaveChnages ();
С помощью STE вы можете создавать свои объекты в проекте библиотеки классов и делиться ими между клиентом WCF, клиентом silverlight, asp.net и wpf. Таким образом, это дает вам возможность повторно использовать объекты для различных клиентов.