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 05:59 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
И нет никакого смысла с этим связываться.

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
а данные в каком формате гоняете? Оно ж не стандартизировано ни разу. Соап он селф дескрайбинг (о какие я умные слова знаю), плюс очень легко пишется сам сервис с какой угодно авторизацией.

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2013-09-23 06:30 pm (UTC) - Expand

(no subject)

From: [identity profile] altmind.livejournal.com - Date: 2013-09-24 01:18 am (UTC) - Expand

(no subject)

From: [identity profile] sil-e-nt.livejournal.com - Date: 2013-09-24 08:34 am (UTC) - Expand

(no subject)

From: [identity profile] altmind.livejournal.com - Date: 2013-09-24 09:00 am (UTC) - Expand

(no subject)

From: [identity profile] bydl0coder.livejournal.com - Date: 2013-09-24 10:17 am (UTC) - Expand

(no subject)

From: [identity profile] w00dy.livejournal.com - Date: 2013-09-24 10:53 am (UTC) - Expand

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-ом проверить можешь?:)

(no subject)

From: [identity profile] w00dy.livejournal.com - Date: 2013-09-23 06:56 pm (UTC) - Expand

(no subject)

From: [identity profile] eternal-leave.livejournal.com - Date: 2013-09-23 07:06 pm (UTC) - Expand

(no subject)

From: [identity profile] w00dy.livejournal.com - Date: 2013-09-23 07:19 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2013-09-23 07:27 pm (UTC) - Expand

(no subject)

From: [identity profile] w00dy.livejournal.com - Date: 2013-09-23 08:04 pm (UTC) - Expand

(no subject)

From: [identity profile] eternal-leave.livejournal.com - Date: 2013-09-23 07:43 pm (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_slw/ - Date: 2013-09-23 07:58 pm (UTC) - Expand

(no subject)

From: [identity profile] sil-e-nt.livejournal.com - Date: 2013-09-24 08:36 am (UTC) - Expand

(no subject)

From: [identity profile] sil-e-nt.livejournal.com - Date: 2013-09-24 08:39 am (UTC) - Expand

(no subject)

From: (Anonymous) - Date: 2013-09-24 01:32 pm (UTC) - Expand

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

Date: 2013-09-23 06:12 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Оно работает. Но там ебли столько, что вряд ли оно того стоит, конкретно в плане RESTful сервисов.

Date: 2013-09-23 06:12 pm (UTC)
From: [identity profile] denisioru.livejournal.com
WCF слегка ентерпрайзный ёбнутый. Любое вмешательство (кастомная аутентификация, хидеры, сжатие, ...) - это целые поля конопли классов-врапперов, которым надо писать руками. Если смотреть сверху и на поверпоинтовые презентации - охуенно, как только подходишь поближе - начинаешь ощущать запах говна от экрана. Не люблю WCF.

Date: 2013-09-23 06:19 pm (UTC)
From: [identity profile] avnik.livejournal.com
Чего люди не придумают, чтобы на питоне не писать.

Date: 2013-09-23 08:15 pm (UTC)
From: [identity profile] fortness90.myopenid.com (from livejournal.com)
Питон - мерзость.

Date: 2013-09-23 08:27 pm (UTC)
From: [identity profile] avnik.livejournal.com
Айсед, перелогиньтесь

Date: 2013-09-23 10:13 pm (UTC)
From: [identity profile] fortness90.myopenid.com (from livejournal.com)
От вашего фиглярства питон не утратит филогенетического родства с der Grüne Schlangen.
Только скопление алкогольных паров могло породить это богомерзкое поделие с черепашьей скоростью,гнусными отступами и противной рассудку динамической типизацией !

(no subject)

From: [identity profile] nivanych.livejournal.com - Date: 2013-09-24 08:08 am (UTC) - Expand

(no subject)

From: [identity profile] anonim-legion.livejournal.com - Date: 2013-09-24 03:29 pm (UTC) - Expand

(no subject)

From: [identity profile] fortness90.myopenid.com - Date: 2013-09-24 04:13 pm (UTC) - Expand

(no subject)

From: [identity profile] nivanych.livejournal.com - Date: 2013-09-25 01:46 am (UTC) - Expand

Date: 2013-09-23 06:28 pm (UTC)
From: [identity profile] enternet.livejournal.com
А оно тебе надо? IHttpHandler/IHttpAsyncHandler вполне достаточно для программирования под IIS не имея никакой нужды в кастомной реализации IO Completion Ports. Ну и аутентификацию лучше на него же переложить. А Web API, кстати, вполне нечего так на фоне остальных.

Date: 2013-09-23 06:32 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Мне нужно отдельное приложение-сервис, слушающее совместно с IIS на 80 порту.
WCF и HttpListener сам по себе умеют это. И второй практически предоставляет те же фичи что IHttpHandler.

Date: 2013-09-23 06:33 pm (UTC)
From: [identity profile] w00dy.livejournal.com
что мешает написать web-приложение/сайт и пусть оно крутится под iis-ом?

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

(no subject)

From: [identity profile] w00dy.livejournal.com - Date: 2013-09-23 07:02 pm (UTC) - Expand

(no subject)

From: [identity profile] bydl0coder.livejournal.com - Date: 2013-09-24 10:19 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2013-09-24 10:32 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2013-09-23 06:55 pm (UTC) - Expand

(no subject)

From: [identity profile] w00dy.livejournal.com - Date: 2013-09-23 06:58 pm (UTC) - Expand

Date: 2013-09-23 07:31 pm (UTC)
From: [identity profile] enternet.livejournal.com
IHttpHandler - это по прямое взаимодействие с IIS, в отличие от остальных. Это по сути единственный способ для написания нагруженных приложений - безо всякой шелухи.

(no subject)

From: [identity profile] http://users.livejournal.com/_slw/ - Date: 2013-09-23 07:59 pm (UTC) - Expand

(no subject)

From: [identity profile] enternet.livejournal.com - Date: 2013-09-23 08:04 pm (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_slw/ - Date: 2013-09-23 08:29 pm (UTC) - Expand

(no subject)

From: [identity profile] w00dy.livejournal.com - Date: 2013-09-23 08:38 pm (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_slw/ - Date: 2013-09-23 09:00 pm (UTC) - Expand

(no subject)

From: [identity profile] enternet.livejournal.com - Date: 2013-09-24 07:51 am (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_slw/ - Date: 2013-09-24 08:34 am (UTC) - Expand

(no subject)

From: [identity profile] enternet.livejournal.com - Date: 2013-09-24 08:38 am (UTC) - Expand

(no subject)

From: (Anonymous) - Date: 2013-09-24 01:37 pm (UTC) - Expand

(no subject)

From: [identity profile] enternet.livejournal.com - Date: 2013-09-24 03:49 pm (UTC) - Expand

(no subject)

From: [identity profile] stdray.livejournal.com - Date: 2013-09-24 08:52 am (UTC) - Expand

(no subject)

From: [identity profile] enternet.livejournal.com - Date: 2013-09-24 10:21 am (UTC) - Expand

(no subject)

From: [identity profile] stdray.livejournal.com - Date: 2013-09-24 12:18 pm (UTC) - Expand

(no subject)

From: [identity profile] enternet.livejournal.com - Date: 2013-09-24 01:29 pm (UTC) - Expand

(no subject)

From: [identity profile] enternet.livejournal.com - Date: 2013-09-24 01:30 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2013-09-24 03:25 pm (UTC) - Expand

Date: 2013-09-23 07:00 pm (UTC)
From: [identity profile] mindshock.livejournal.com
дох.нет)

Date: 2013-09-23 07:20 pm (UTC)
From: [identity profile] w00dy.livejournal.com
тогда уже сдох.нет

Date: 2013-09-24 07:02 am (UTC)
From: [identity profile] vp.livejournal.com
У меня на тему WCF сложилось впечателение, что оно вообще никак не документировано. Подход, предполагающий какую-то самостоятельную обработку авторизаций и т.п. - это должно делаться, но конфигурация должна быть в коде, осмысленная, читабельная. А не эти грозди связки кода через этот несчастный app.config. А вот примеров как это сделать рантайм я так и не нашел. Точнее нашел, но все простейшее. И все.

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

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. 6th, 2025 10:44 am
Powered by Dreamwidth Studios