Есть ли что-то вроде веб-служб WCF / ASP.NET, которые работают так, как мне хотелось бы? - PullRequest
0 голосов
/ 18 апреля 2009

(Да, я недоволен, раздражен и спорю, хорошо, я немного выскажусь здесь наверху, но мой фактический вопрос объективен, обещаю <g>)

Прокачка

Я только что провел последние 2 недели, путешествуя по многим аспектам WCF и теперь веб-службы ASP.NET. Это было сделано через. Получить ошибку / Ошибка Google / Исправить ошибку (возможно) / Повторить цикл. После нескольких часов этого (в основном в разделе конфигурации) я несколько удивлен, что кто-то даже мешает им пользоваться. Достаточно вентиляции ...

Вопрос

Мне нужен код вызова клиентского приложения на веб-сервере через Интернет. Я хочу, чтобы код на стороне сервера выглядел примерно так

interface I
{
  string GetFoo(int i);
  SomeType GetBar(OtherType ot);
}

[HostAsService<I>]
class Foo : I
{
    ....
}

и клиентская сторона будет выглядеть примерно так

I i = new ServiceProxy<I>(new Uri("http://my.domain.com/some/path"));

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

Есть что-нибудь подобное?

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

note2: я не спрашиваю, как использовать службы WCF или ASMX (если можно заставить работать так, как я хочу / нуждаюсь, это хорошо, но мне все равно что используется на данный момент, пока это работает)

Ответы [ 3 ]

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

Вот очень простой пример службы WCF . Кажется, довольно близко к тому, что вы хотите.

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

Вы, безусловно, можете сделать все это в очень простом сценарии WCF - если хотите, вы можете выполнить все свои настройки и настройки в коде, а не в конфигурации.

Вам нужно на стороне сервера:

1) сервисный контракт IMyService, определяющий вызовы функций 2) реализация сервиса MyService, реализующая этот интерфейс 3) сервисный хост, на котором будет размещаться ваш сервис - это та часть, где вам придется определять такие вещи, как привязки (какой протокол использовать) и конечную точку (какой адрес использовать)

Вам нужно на стороне клиента:

1) доступ к интерфейсу IMyService (поместите его в свою отдельную сборку интерфейса) 2) Создать ChannelFactory 3) У фабрики каналов есть канал для связи со службой

Все это может быть сделано в коде - не нужно говорить о внешней конфигурации.

Аарон Сконнард из Pluralsight провел отличную серию 5-15 минут. экран показывает о том, как создавать ваши WCF-сервисы - как правило, показывая, как это сделать в коде, а также как это сделать с помощью config. Шоу "Endpoint.TV" на 9-м канале также было смешано с рабочими процессами, но вы также сможете найти там основные скринкасты WCF. Проверьте это!

Марк

PS: Если вы серьезно относитесь к изучению WCF (и я бы определенно рекомендовал это!), Вам следует обратиться к книге Мишель Леру Бустаманте Обучение WCF - практическое руководство - настоятельно рекомендуется.

0 голосов
/ 18 апреля 2009

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

Конечно, без какой-либо конфигурации, вы застряли с настройками по умолчанию. Я предполагаю, что вы хотите, чтобы значением по умолчанию было http или https, формат SOAP, document / literal, никаких функций WS- * и т. Д.

Меня немного беспокоит, что вы используете термин "веб-сервисы ASP.NET". Вы не пользуетесь услугами ASMX? Не.

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