Привет! Изучаю службы WCF, море информации в короткие сроки и накопилось множество вопросов, которые надо уложить в голове. Использую EF 6 (Database First), MS Sql, Wpf Client.
Как я понял из статей WCF служба и WCF Data Services разные вещи.
Первая предоставляет набор методов (при котором таблицы (сущности) БД скрыты от сторонних глаз), которые может использовать разработчик ПО для получения данных из БД. Вот, например, есть у меня в службе WCF EF модель по существующей БД. Но в EDM не описаны контракты данных. Получается мне необходимо все используемые сущности БД заново заводить в службе и описывать их контрактами (класс в базе (модели EF) tbl_Customer -> новый [DataContract]Customer)? Например, есть метод в котором linq запрос получает список объектов из БД с типом tbl_Customer (получаю List>). Мне надо будет в том же методе потом перегнать List<> в List<>? И так каждый раз? Ведь при передачи клиенту типа tbl_Customer, он не поймет что это за тип, т.к. он не описан контрактом и для него не прошла сериализация? Проблема с дублированием сущностей и лишний код по перегонке типов. Есть ли хорошие решения? Клиент должен использовать тип Customer описанный в WSDL. Плюс дополнительно надо описывать контракт и операции службы для работы с форматом JSON, XML.
Вторая служба предоставляет доступ не к методам, а к сущностям БД. Т.е. в клиенте ссылаемся на службу, которая отдает список открытых сущностей. В своем .net клиенте мы можем работать с обычным типом tbl_Customer и linq. Помимо linq в своем .net приложении мы можем писать http-запросы, верно? Но при данном подходе http-запросы подходят скажем больше для Java, Qt приложений, которые ничего не знают о типе tbl_Customer, посылают http GET-запросы, получают ответ в виде JSON, XML, и на основе парсинга получают свой тип. Службу для работы в JSON, XML формате особо настраивать не надо. Все зависит от того в каком виде пришел запрос от клиента?
Расскажите, еще вроде у DevExpress есть свое приложение OData Service. Насколько популярная и хорошая штука?
Еще вопрос: есть клиенты, которые в базе запрашивают одинаковые данные и производят с ними одинаковые действия (допустим 30% кода клиентов выполняет один и тот же функционал). По сути нам нужна служба с набором методов, которые могут запрашивать разные клиенты. Т.е. чтобы не клонировать код по клиентам мы его выносим в службу? Еще для этого можно использовать WCF с контрактами?
А еще расскажите про свой опыт использования WCF+БД? Как оно? Если не использовать EF (EF не тормозит?) для доступа к БД, а SqlCommand норм?
Поправьте меня, если я не прав. Спасибо!
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Мне необходимо собрать некую программу для управления светом и тд
Создаю игру в Unity3D, есть модуль на Objective-C, который возвращает bool
Возможно, это глупый вопросЧитая книгу Рихтера CLR via C#, в главе 14 наткнулся на неуправляемую память
В коде страницы сайта вижу следующий скрипт, который выводит ролик: