metaclass: (Default)
[personal profile] metaclass
Два дня долблюсь в WCF, чтобы понять, как сунуть в RESTful сервис всякие хитрые способы аутентификации - примерно в стиле "проверяем откуда пришел запрос, проверяем хидеры-куки-итд, и либо аутентифицируем по ним, либо инициируем digest или ntlm аутентификацию".
Вывод, который я сделал пару лет назад насчет WCF, не изменился - over-engineered индусятина, с безумной архитектурой и безумным кодом (вплоть до полной бессмыслицы).
При этом, внезапно, микрософт сделал deprecated WCF REST starter kit, в котором был перехват запросов на уровне канала, до превращения их в Message. Сейчас из подходящего остались IDispatchMessageInspector, но там толком нельзя сделать что-то вроде "проверить запрос и не пустить сообщение дальше, а вернуть 401".
И микрософт выкатила еще одно творчество на эту тему - ASP.NET Web API: http://msdn.microsoft.com/en-us/library/hh833994%28v=vs.108%29.aspx

Еще в процессе посмотрел два фреймворка для веб-сервисов и веб-приложений - https://github.com/ServiceStack/ServiceStack и https://github.com/NancyFx/Nancy . У обоих есть вариации на тему "хостинг в своем приложении", "хостинг поверх WCF", "Хостинг в IIS".
Причем, WCF хостинг на самом деле является многослойной пиздецомой поверх того же базового HttpListener который используется в "своем хостинге". В WCF поверх него накручена асинхроннная обработка запросов, фоновые потоки с чем-то вроде IO Completion Ports. Рефлектором это дело посмотрел - понять, какой из вариантов принципиально лучше и какой в этом вообще смысл, сходу не получилось.

В общем, по сравнению с jetty, сервлетами, кложурью и рубе с рельсами - это безумный жопный индусский недокументированный ад.

Date: 2013-09-23 06:08 pm (UTC)
From: [identity profile] w00dy.livejournal.com
тянет же тебя на всякое говно. Кстати, чем wcf рулит то? А то я всё никак со старых мыльных web-сервисов не спрыгну, их, благо, поддерживают все кому не лень.

Date: 2013-09-23 06:13 pm (UTC)
From: [identity profile] denisioru.livejournal.com
двачую вебсервисы, они охуенны и весьма кросс-платформенны. По крайней мере мы с несколькими ГИС и ERP подружились именно через вебсервисы и без лишнего гемороя.

Date: 2013-09-23 06:21 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Я предпочитаю RESTful сервисы соапным, они мне более понятны.

Date: 2013-09-23 06:26 pm (UTC)
From: [identity profile] w00dy.livejournal.com
а данные в каком формате гоняете? Оно ж не стандартизировано ни разу. Соап он селф дескрайбинг (о какие я умные слова знаю), плюс очень легко пишется сам сервис с какой угодно авторизацией.

Date: 2013-09-23 06:30 pm (UTC)
From: [identity profile] metaclass.livejournal.com
де-факто стандарт - json.

Date: 2013-09-24 01:18 am (UTC)
From: [identity profile] altmind.livejournal.com
вы так говорите, будто SOAP стандартизирован.

ну-ка ответьте, где в SOAP запросе передается имя вызываемого метода/имя удаленной процедуры. и если SOAP агностичен к транспорту, как это работает c SMTP транспортом.

Date: 2013-09-24 08:34 am (UTC)
From: [identity profile] sil-e-nt.livejournal.com
soapAction в хидере?

Date: 2013-09-24 09:00 am (UTC)
From: [identity profile] altmind.livejournal.com
или WS-Adressuing:Action, или action в контент-тайпе :Content-Type: application/soap+xml; charset=utf-8;action="action". Или даже вообще любой другой вариант, для сервисов времен soap 1.0, например разбор пришедшего xml.

в общем, все в лучших традциях S stands for Simple

Date: 2013-09-24 10:17 am (UTC)
From: [identity profile] bydl0coder.livejournal.com
Напишите на дотнете клиента с WS Security.

Date: 2013-09-23 07:04 pm (UTC)
From: [identity profile] hdbog.livejournal.com
OData? WCF Data Services в свое время мне показались вполне годными.

Date: 2013-09-23 06:15 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Теоретически - должен был быть красивый фреймворк с разделением зон ответственности (сервисы, хостинг, транспорт, сериализация, итд).
На практике - чудовищное говно, пригодное только для работающих из коробки примеров вида "Сервис по сложению A+B".

Там конфигурируется практически все, но что в коде, что в app.config это выглядит как чудовищный ад.

Date: 2013-09-23 06:30 pm (UTC)
From: [identity profile] w00dy.livejournal.com
в теории да, а на практике это всё нахер не нужно. Я ж говорю, соап поддерживают все, или почти все. А рестфул, или там wcf это обычно йобля в гамаке.

Date: 2013-09-23 06:51 pm (UTC)
From: [identity profile] metaclass.livejournal.com
SOAP это ебля в гамаке. Ты его wget-ом проверить можешь?:)

Date: 2013-09-23 06:56 pm (UTC)
From: [identity profile] w00dy.livejournal.com
Ребе, если честно, то ни разу не приходилось проверять .net-овские веб-сервисы вгетом. Они всегда работали и не вызывали никаких проблем. Даже когда я в windows service вкорячил xps из моно, и тогда всё работало без сучка и задоринки.

Date: 2013-09-23 07:06 pm (UTC)
From: [identity profile] eternal-leave.livejournal.com
Круто вам. А у нас основной инструмент дебага некоторых сервисов — курл.

Date: 2013-09-23 07:19 pm (UTC)
From: [identity profile] w00dy.livejournal.com
а что мешает написать приложение которое будет прогонять какой-нить тестовый шаблон?

Date: 2013-09-23 07:27 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Вот нехер делать еще приложения писать. Есть curl, есть wget, а все остальное - оверхед и извращения.

Date: 2013-09-23 08:04 pm (UTC)
From: [identity profile] w00dy.livejournal.com
Ну что значит извращение? Натравил wsdl на сервис, получил прокси. А дальше уже что хочешь то и делаешь, плюс всё это намного гибче чем с вгетами и курлами. Плюс есть тот же repl у c#, в общем не вижу проблем и извращений.

Date: 2013-09-23 07:43 pm (UTC)
From: [identity profile] eternal-leave.livejournal.com
Не, это в продакшене за семью замками, предназначено исключительно для общения с другими сервисами по http. Но благодаря тому, что оно рестфул и на входе берет json - его легко мониторить и удаленно дебажить.

Date: 2013-09-23 07:58 pm (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
я могу, но не хочу

Date: 2013-09-24 08:36 am (UTC)
From: [identity profile] sil-e-nt.livejournal.com
curl?
http://stackoverflow.com/questions/84007/curl-command-line-for-consuming-webservices

Date: 2013-09-24 08:39 am (UTC)
From: [identity profile] sil-e-nt.livejournal.com
ну и wget (тоже со стек оверфлоу):
wget --post-file=soaprequest.xml --header="Content-Type: text/xml" --header="SOAPAction: \"soapaction\"" http://server/app/myservice.asmx -O response.xml

Date: 2013-09-24 01:32 pm (UTC)
From: (Anonymous)
Я на python сооружал прокси и писал запрос/ответ в логи. Так нашли косяки на стороне .NET. А .NETчики орали мол у нас все окей... А он трейсы фактически слал в ответах. Что, то рвануло в быдлонете и всё вылилось в ответ.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 7th, 2025 09:14 am
Powered by Dreamwidth Studios