2009-09-18 5 views
0

Вслед за KISS principle, я вдруг понял следующее:ПОЦЕЛУЙ: Простой # приложение C, который взаимодействует с RESTful веб-службы

  • В .NET, вы можете использовать Entity Framework модели, чтобы обернуть вокруг базы данных.
  • Эта модель может быть представлена ​​как веб-сервис через WCF.
  • Этот веб-сервис будет иметь очень стандартизованное определение.
  • Может быть создано клиентское приложение, которое может использовать любой такой веб-сервис RESTful.

Я не хочу, чтобы заново изобретать колесо, и это меня не удивило бы, если кто-то уже сделал это, так что мой вопрос прост: Кто-нибудь уже создал простой (рабочий стол, а не веб) клиентское приложение, которое может использовать службу RESTful, основанную на платформе Entity Framework, и которая позволит пользователю читать и записывать данные непосредственно на эту услугу?

В противном случае я просто должен «изобрести» это сам. :-)


Проблема в том, что уровень базы данных и служба RESTful уже завершены. Служба RESTful будет оставаться в проекте только на этапе разработки, так как мы можем использовать сборку уровня базы данных непосредственно из веб-приложений, которые строятся вокруг нее. Когда веб-приложение развернуто, службы RESTful просто остаются вне развертывания.

Но в базе данных много данных для управления более чем 50 таблицами. При разработке против локальной базы данных мы можем иметь прямой доступ к базе данных, поэтому для этого мне не нужен этот инструмент. Когда он будет развернут, веб-приложение будет единственным способом доступа к данным, поэтому я не смогу использовать этот инструмент. Но у нас также есть этап тестирования, когда база данных хранится в другой системе за пределами локального домена, и эта база данных недоступна для разработчиков. Только администраторы имеют прямой доступ к этой базе данных, что делает тесты более сложными.

Однако через службу RESTful я могу получить доступ к данным напрямую. Таким образом, когда какой-то тест идет не так, я могу восстановить данные через это соединение или просто создать копию данных для тестов в моей локальной системе. Существует множество других функций, и даже можно просто открыть URL-адрес службы таблицы прямо в Excel или XMLSpy, чтобы просмотреть содержимое. Но когда я хочу что-то написать, я должен написать специальный код, чтобы сделать именно это. Общий инструмент, который позволит мне получить доступ к данным и изменить их, будет проще. Поскольку это общая настройка вокруг служб данных ADO.NET, это тоже должно быть разумным.

Таким образом, я могу это сделать, но надеялся, что кто-то еще сделал что-то подобное. Но, похоже, такого инструмента еще нет ...

ответ

5

Вы имеете в виду ADO.Net Data Services. Он в основном создает модель базы данных сущностей и добавляет интерфейс REST к службе с использованием ASMX. Существует статья «Как стать доступной» из MSDN here о потреблении услуги с использованием .Net. Я также сделал то же самое, используя обычно класс WebClient в .Net в прошлом.

Вы также можете посмотреть на WCF REST Starter Kit, если вы хотите бросить свой собственный на основе Entity Framework. Стартовый комплект также содержит удобный новый класс WebClient, который можно использовать для связи с службами REST.

Разъяснение

Там нет прекомпилированного клиентского приложения, которое я знаю, от которого будет говорить с этим сервисом, так как они в значительной степени доступа к данным с помощью веб-служб. Существует Microsoft Smart Client Фабрика, которая, скорее всего, самая близкая вещь, с которой я работал.

Я упомянул вышеприведенные 2 варианта, поскольку у них уже есть библиотеки в .Net, которые работают с ними напрямую, либо в качестве ссылочной веб-службы, либо для более приключений, включая меня, используя библиотеку WebClient или, альтернативно, новую библиотеку HTTPClient в наборе для начинающих WCF REST.

Я использовал оба в Windows, Web, Silverlight и WCF. Последнее самое легкое, поскольку они сосредоточены в REST.

В настоящее время мы расследуем Prism, который сильно использует этот метод при использовании WCF для разработки интерфейса.

Успенская

Что касается этого вопроса, вы делаете предположение, что родовое оберточной ADO Entity Framework со службой WCF он будет универсальным. ADO.Net Data Services является наиболее близким к вам, однако структура базы данных существенно изменит способ взаимодействия с ней. Переход на более высокий уровень по «родовому» пути был бы опасным, так как эти 2 технологии, индивидуально или вместе, уже являются настолько универсальными, насколько это возможно.

+0

Клиент не должен знать ничего о структуре базы данных. Службы данных возвращают поток атома, который перечисляет все таблицы, которые могут отображаться в поле со списком. Выберите таблицу, и она вернет данные из этой таблицы, которые могут быть отображены сеткой, просто путем обдумывания элементов из пространства имен «d». Дополнительная функциональность не должна быть такой сложной, поскольку служба данных уже обобщила большую часть ее. Опасные? Да. Но как внутренний инструмент все еще практичен. (Проблемы безопасности должны решаться в службе, а не в приложении.) –

+0

Насколько ваш образец действителен и может применяться, он вряд ли имеет смысл в бизнес-среде. Реальность - вы никогда не будете показывать все поля таблицы конечному пользователю. Кроме того, это было бы очень общим. Поэтому я поддерживаю свой ответ. В вашей ** среде ** это может быть практичным, но, кроме проекта создания CodePlex, я не видел такого клиента. – BinaryMisfit

+0

В бизнес-среде, нет. Но в среде разработки, где вы хотите быстро взглянуть на данные, такой инструмент очень практичен. –

2

В дополнение к службам данных (+1), рассмотрите службы RIA. Это похоже на доменную версию служб передачи данных для клиентов Silverlight или WPF. Менее гибкий, но простой, чем Data Services.

+0

К сожалению, модель Entity уже выполнена. Сервис RESTful вокруг него также был легко добавлен и развернут. Пока что мне придется делать все, что было развернуто, и не может многое сделать для настройки архитектуры сервера. (Хорошо, только до следующего обновления.) Тестирование займет месяц, поэтому у меня есть месяц, чтобы построить собственное решение, если оно не существует. (Думаю, мне нужно два дня). –

+1

Обе службы данных и службы RIA работают с вашей существующей моделью сущностей. –

+0

+1 Я не очень много работал с РИА, хотя я должен был с ним поработать. Я к старому, чтобы идти в ногу. – BinaryMisfit