ОТДЫХ от asp.net 2.0 - PullRequest
       10

ОТДЫХ от asp.net 2.0

13 голосов
/ 27 марта 2009

Я только что создал сайт asp.net 2.0. Теперь мне нужно добавить веб-сервис REST, чтобы я мог общаться с другим веб-приложением. Ранее я работал с проектом веб-службы 2 SOAP, но у меня нет опыта работы с REST. Я думаю, только пару недель будет работать нормально. после поиска в Google я обнаружил, что это не так просто.

Вот что я нашел:

НЕТ ОТДЫХА из коробки asp.net.

WCF REST Starter Kit Предварительный просмотр кода 2 на базе .net 3.5 и все еще в бета-версии

Пример ASP.NET

Веб-службы REST в ASP.NET 2.0 (C #)

Exyus

Обработка методов POST и PUT с помощью колыбельной

Служба данных ADO.NET

...

Теперь мой вопрос,

a) Является ли решение REST для .net 2.0? Если да, то какое решение лучше?

б) если мне нужно, насколько сложно перенести мой asp.net с 2.0 на 3.5? это так просто, как просто скомпилировать, или я должен изменить код много?

c) Стартовый комплект WCF REST достаточно хорош для использования в производстве?

d) Нужно ли сначала изучать WCF, а затем стартовый комплект REST WCF? с чего лучше начать?

Я ценю любую помощь здесь.

Спасибо Уэс

Ответы [ 7 ]

9 голосов
/ 27 марта 2009

Если вы ищете проект, который шаблонизирует службу REST, вы правы, говоря, что нет готового решения. Тем не менее, веб-сервисы RESTful возможны с использованием WCF. Ключевой частью является использование нескольких атрибутов при определении ваших сервисных функций, которые позволяют .NET Framework знать, что функция не ожидает SOAP. Основным атрибутом для использования является атрибут WebInvoke .

Вот пример из developer.com :

[OperationContract]
[WebInvoke(Method = "PUT", UriTemplate = "/admin/post/{id}")]
void UpdatePost(string id, Post post);

Приведенный выше код будет фактически определен в интерфейсе для вашего веб-сервиса. Интерфейс создается автоматически при создании проекта веб-службы WCF. Фактический код функции будет помещен в класс, используемый для реализации веб-службы.

Ознакомьтесь с статьей на developer.com для полного урока. Поначалу это может показаться ошеломляющим, если вы новичок в WCF, но после того, как вы окунетесь в это, я уверен, что вы начнете понимать все быстро. Вот ссылка для артила: http://www.developer.com/net/article.php/10916_3695436_1

Чтобы ответить на все ваши вопросы,

a) В .NET 2.0 вы сможете создавать службы RESTful, используя WSE2.0 , но если у вас есть возможность использовать .NET 3.5, я настоятельно рекомендую перейти на маршрут WCF, так как это намного проще и разработано с учетом REST.

б) Конвертировать ваш проект совсем не сложно. Это просто вопрос настройки новой версии фреймворка в настройках вашего проекта. Преобразование веб-службы из службы WSE2.0 в службу WCF будет немного сложнее. Самый простой способ сделать это - скопировать код из каждой из различных функций веб-службы в класс, где вы реализуете новую версию функции. Copy-Paste Shinanigans:)

в) Я не уверен, что это за стартовый комплект, на который вы ссылаетесь. Веб-сервисы RESTful должны полностью поддерживаться в WCF, который был полностью выпущен с 3.5

d) Было бы полезно понять WCF, по крайней мере, немного перед началом, но не обязательно понимать его полностью, чтобы начать. Я бы рекомендовал хотя бы раз прочитать статью MSDN о WCF и начать работать. Я уверен, что вы столкнетесь с другими вопросами, когда начнете, но вы можете искать эти части, когда сталкиваетесь с ними.

В любом случае, я надеюсь, что эта информация поможет. Удачи тебе.

Редактировать

Некоторые улучшения были сделаны в мире REST. Как отметил в комментариях Даррел Миллер, WCF фактически не был построен с учетом REST. Я неправильно говорил ранее. Фактически, фреймворк построен с учетом SOAP, а атрибут WebInvoke заполняет этот пробел. Несмотря на то, что существует много споров по этой теме (Web API против WCF REST), ASP.NET Web API является новой опцией для создания служб REST в .NET. Я настоятельно рекомендую всем, кто читает этот пост и может использовать .NET 4.5 в своем проекте, рассмотреть его как вариант.

4 голосов
/ 24 апреля 2009

Если вы хотите создать фреймворк с учетом REST, вам стоит взглянуть на OpenRasta ...

http://openrasta.org/

2 голосов
/ 27 марта 2009

Вы можете посмотреть на использование ASP.NET MVC в качестве платформы веб-сервисов RESTful. WCF - это, вероятно, путь в долгосрочной перспективе, но MVC должен легко справиться с этим. Ваши действия просто должны быть настроены на возврат JSON или XML, в зависимости от того, как вы хотите его сериализовать. MVC предлагает JsonResult и полностью настраиваемый ContentResult - то есть вы сериализуете свой ответ на строковое свойство результата и устанавливаете его тип и кодировку.

ПРИМЕЧАНИЕ : MVC требует 3.5 SP1, поэтому решение 2.0 не будет. Если вам требуется 2.0, вам нужно искать в другом месте.

1 голос
/ 01 апреля 2009

Использовать WCF REST.

Вы можете использовать его сегодня. Библиотека WCF REST готова к работе, может использоваться в производстве.

Начальный комплект WCF (см. http://msdn.microsoft.com/en-us/netframework/cc950529.aspx) - это нечто другое. Он предоставляет дополнительные возможности; он включает в себя набор шаблонов проектов VS, документы, примеры и несколько инструментов для создания приложений REST (клиента или сервера) с WCF. Одним из интересных инструментов является надстройка команды «Вставить XML как тип» в Visual Studio.

С другой стороны, при создании REST-клиента в общем случае я бы рекомендовал воспользоваться сборкой HttpClient в стартовом наборе (Microsoft.Http.dll). Это маленький, простой и полезный. Зависимость низкого риска и высокой стоимости даже при текущем состоянии «предварительного просмотра» стартового комплекта.

Если вы использовали только один REST-сервис, вам не нужна общая сборка Microsoft.Http.dll; вы можете делать все то, что он делает, в некотором коде, который использует WebRequest. Но если вам нужен более универсальный гибкий класс для манипулирования REST-запросами на стороне клиента, то возьмите этот Microsoft.Http.dll.

0 голосов
/ 28 марта 2009

ОТДЫХ, или ОТДЫХ Добавление этого к System.Web в web.config включит http get и поставит .. aka REST-Like ... но не полный отдых.

<System.Web>
  <webServices>
            <protocols>
                <add name="HttpSoap"/>
                <add name="HttpPost"/>
                <add name="HttpGet"/>
            </protocols>
        </webServices>
</System.Web>
0 голосов
/ 27 марта 2009

Взгляните на этот CodeProject в качестве отправной точки. Это кажется несколько ... хакерским. Модернизация до WCF будет чище.

0 голосов
/ 27 марта 2009

Я не уверен насчет решения REST для 2.0. Так что я думаю, что WCF будет таким же способом, как и вам. MSDN имеет длинное введение в него .

Моя личная философия заключается в том, что если технология все еще находится на стадии бета-тестирования, я бы предпочел не использовать ее для чего-то, что потенциально будет производственным приложением, поэтому я бы начал с WCF, поскольку она была представлена ​​в версии 3.0 фреймворка. 1005 *

3.0 и 3.5 на самом деле являются обновлением для библиотек, но CLR по-прежнему 2.0, поэтому если библиотеки, которые вы используете, не устарели или не изменены в новых платформах, все должно быть в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...