Служба WCF на основе OData или обычная служба WCF для приложения Silverlight - PullRequest
1 голос
/ 13 ноября 2010

Я только начал оценивать, следует ли мне использовать службы данных wcf под влиянием OData или стандартное приложение-службу WCF в качестве основного источника данных для приложений Silverlight.Я хотел бы, чтобы ваши мысли о том, какой путь лучше при какой ситуации / обстоятельствах.Что легче по проводам, проще в обслуживании и т. Д.

На данный момент я собрал следующее:

  • В VS2010 нет шаблонов службы данных Wcf, о которых я знаю,и мне нужно будет сначала создать веб-проект asp.net, а затем добавить службу данных wcf, так что это повлияет на то, как я структурирую свои проекты.
  • Службы данных WCF предоставляют действительные имена таблиц поверх службы.Я пока не знаю, как их можно назвать псевдонимами, и я не уверен, что это хорошая идея, чтобы сообщить миру о структуре моей таблицы
  • В стандартном сервисе wcf мне нужно будет писать запросы linq противклассы обслуживания EF или Domain на стороне службы, тогда как в службе данных я могу перенести эту логику обработки на клиент.
  • На первый взгляд изучение классов, предоставляемых службами данных wcf, кажется более легким для чтения и понимания, чем в EF

Добавьте свои мысли по этому поводу ...

Спасибо за ваше время.

1 Ответ

5 голосов
/ 13 ноября 2010

В VS2010 нет шаблонов службы данных Wcf, о которых я знаю,

Не шаблон проекта - просто шаблон элемента (для использования внутри веб-сайта ASP.NET или веб-приложения)).Службы данных WCF очень тесно связаны с HTTP, поэтому они имеют смысл только на веб-сайте / в приложении.

Службы данных WCF предоставляют действительные имена таблиц через службу.

НЕТ! По крайней мере, не обязательно.Весь смысл EF заключается в том, что вы можете отделить фактическую физическую структуру вашей базы данных от (концептуальной) модели , которая раскрывается.Вы можете полностью переименовать сущности, вы можете отобразить несколько сущностей в одну таблицу, разделить сущность на несколько таблиц, вы можете пропустить атрибуты - все что угодно!

На первый взгляд изучение классов, предоставляемых службами данных wcf, кажется более легким для чтения и понимания, чем для EF

Я сомневаюсь в этом, потому что по умолчаниюСлужбы данных WCF будут использовать модель Linq-to-SQL или EF в качестве основы.Вы можете сделать это настолько простым или сложным, насколько захотите.

Использование «обычной» службы WCF позволяет использовать netTcpBinding для гораздо более высокой производительности (благодаря двоичной кодировке сообщений по сравнению с текстовыми сообщениями для другихпривязки), когда вы используете приложение Silverlight 4 во внутренней сети компании (не работает для интернет-сценариев) - это не то, что вы можете сделать с помощью WCF DataServices.

Основное различие, на мой взгляд, заключается в разнице между SOAP и REST:

  • SOAP (традиционный WCF) ориентирован на методы - вы думаетеи спроектируйте свою систему с точки зрения методов - вещи, которые вы можете сделать (GetCustomer, SaveOrder и т. д.)

  • REST (подход WCF DataServices) - это ресурсы , например, у вас есть свои ресурсы и наборы ресурсов (например, Customers), и вы предоставляете их миру, используя стандартные глаголы HTTP (GET, POST, PUT, DELETE) вместо отдельных определенных методов, которые вы определяете

Так что оба подхода имеют свои плюсы и минусы.Наверное, самый важный вопрос: какое приложение вы создаете и на какую аудиторию вы ориентируетесь?

Обновление :

  • для интранет / внутренних приложений, я думаю, что преимущество netTcpBinding (двоичное кодирование) оправдывает использованиеклассический сервис WCF - также для приложений, интенсивно использующих данные, я лично считаю, что метод, основанный на методах (GetCustomer, SaveCustomer), проще в использовании и понимании

  • для общедоступного приложенияиспользование HTTP и максимально возможная функциональная совместимость, вероятно, являются вашей главной задачей, поэтому в этом случае я бы предпочел службу данных WCF - простой в использовании, понятный URL для пользователя

...