powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / SOAP коммуникация в WCF без использования прокси клиента
25 сообщений из 40, страница 1 из 2
SOAP коммуникация в WCF без использования прокси клиента
    #38094856
yesnoms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возникла потребность написать WS, который принимает и возвращает сообщения в формате SOAP. Пробовал создать подобный WS используя WCF, но остановился на этапе обращения к самому сервису. Насколько я понял, то клиент должен генерировать прокси-класс, чтобы из него уже вызывать необходимые методы, которые описаны в контракте. Проблема в том, что я пишу WS для уже готового ПО, которое нет возможности переписать. Эта программа просто умеет отправлять SOAP сообщения посредством POST запросов и парсить SOAP ответы, она ничего не знает о том же WSDL, к примеру. Наткнулся на тему, что можно написать HTTP WEB WCF используя атрибуты [WebGet] и [WebInvoke], но этот способ, как я понял дает возможность обмена обычным XML или JSON, что не подходит мне. Я, конечно, могу сделать ручную сериализацию в SOAP, но это будет не столь красиво.

В старых ASMX было все проще. Были просто методы и при обращении к странице веб сервиса сразу было описание формата SOAP и REST запросов, которые можно отправить обычным POST. При этом можно было генерировать те же прокси клиенты и юзать их в коде. Что-то подобное мне нужно на WCF в связи с тем, что старые добрые веб сервисы по словам MSDN являются устаревшей технологией.

Может посоветует кто-то как решить подобную задачу?
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38111047
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yesnoms,

ну че? сделал?
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38112816
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yesnoms,

Я правильно понял и клиент и сервис в бинарниках, изменить их возможности нет, но сервис хочется переписать?

Привет, если клиент удовлетворяет полностью SOAP, то сделать будет не сложно.

Клиенту не обязательно делать проксю, равно как и сервису все равно, откуда пришло SOAP сообщение, можешь хоть просто поцепиться к нему telnet 127.0.0.1 80 и скопипастить туда сообщение SOAP request'а.

Тебе нужно сделать следующее. Каким нибудь нетворк монитором снять трафик с клиента когда он работает со старым сервисом, понять структуру сообщений (дата контрактов)/методов (сервис контрактов) по их тексту.

Создать свой WCF сервис с wsHttpBinding'ом или еще там был для старых ASMX, какой из них пользовать поймешь из предыдущего пункта.

С помощью DataContract/DataMember, ServiceContract/OperationContract определить форматы сообщений твоего сервиса. Благо они умеют переименовывать проперти/методы, неймспейсы и т. п..
Тебе также надо будет определить всякие штуки типа InstanceContextMode. Можно также на уровне меседжа работать и т. п..

С большой вероятностью поийдется косить под старый ASMX.
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38112957
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в всф тоже можно налету сгенерировать прокси
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38112961
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так как я ток начал разбираться в wcf, хотелось бы узнать как люди это делают с малой кровью и универсально для всех видов сервисов
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38113093
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosв всф тоже можно налету сгенерировать прокси

в WCF вообще много чего можно

1) сгенерить проксю
а) оставив как есть
б) подсунув совершенно другие классы на клиенте и с помощью DataContract/DataMember, ServiceContract/OperationCon
выпрямив их так, чтобы до клиента доходило то, что он хочет. другое дело за чем это может понадобиться.

2) не генерить проксю и пользоваться ровно теми же определениями контракта, что и на сервере через Shared сборку

каждому подходу свое применение...

может быть еще что-то можно. так не вспомню.

---

Да, вы правы, если сервер предоставляет что-то вроде MexEndpoint или включено <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/> то сгенерить можно по старому сервису клиентскую проксю и его потом имплементировать аналог на сервере, и тогда старый клиент подхватит. Но этого может быть отключено в целях безопасности, а если оно не в конфиге а захардкодили, то см. подход выше. В конце дня мозг был забит потому я полез в горло через анус, упустив тот факт что сервис то старый на руках есть. Но подход выше ему пригодиться если metadata exchange отключен. :)
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38113098
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lord British,

а как генерить прокси к чужому сервису, если mex отключен?
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38113105
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пардон, опечатка

[QUOTE]
б) подсунув совершенно другие классы на клиенте и с помощью DataContract/DataMember, ServiceContract/OperationCon
выпрямив их так, чтобы до сервера доходило то, что он хочет. другое дело за чем это может понадобиться.

[QUOTE]
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38113111
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosLord British,

а как генерить прокси к чужому сервису, если mex отключен?

Если есть доступ к голому каналу и работающая пара Сервер/клиент то можно заняться педальным реверсом руками как написано здесь 13780620 .

Если mex отключен и есть только сервер и нет доступа к каналу и/или работающего клиента, то у меня нет других идей кроме как за денежку купить у разрабов wsdl и по нему сгенерить проксю с помощью кажется svcutil.exe

Если и разрабы не продают то никак.
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38113117
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lord British,

это плохо :(
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38113120
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если ничего не помогло и известно что или сервер или клиент написан под .NET. Есть вариант взять рефлектор и выколупать оттуда контракт сервиса и датаконтракты :) даже если сборка обфусцирована, по атрибутам OperationContract/ServiceContract DataMember/DataContract с любезно предоставленными именами методов/полей в виде строк.
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38113125
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lord British,

ладно тут книжку какую то нашел, хвалят все может там что есть
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38113127
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даже в случае такого можешь восстановить контракт. Могут быть иерогливы и т. п.. Дерзай короче.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
[ServiceContract(Name="MySuperService"] public interface v234t2v34t2c4c24 { [OperationContract(Name="GetData")] string v4t2v3ct42cvwdcfd(int c4234d4rd); [OperationContract(Name="GetDataUsingDataContract")] by45y3vb535by3vb5 wergwerg234cvv435tv(by45y3vb535by3vb5 5ка342в); } [DataContract(Name="MySuperDataContract")] public class by45y3vb535by3vb5 { [DataMember(Name="TestProp1")] public bool f24f24vb4vb2 { get; set; } [DataMember(Name="TestProp2")] public string ct34t234t234t2 { get; set; } }

...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38113133
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosLord British,

ладно тут книжку какую то нашел, хвалят все может там что есть

Автор как-то Лёва Жуваль у книжки?

А что не ясно из сказанного. В книжке по твоей проблеме нового особо не найдешь. :)
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38113135
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lord British,

да все ясно
ясно что МС свой бредовой типизацией замахал уже
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38113146
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
непонятно вот что
я отключаю mex
просто в хосте не стал содздавать ендпойнт для мех и в сервисе убрал в апп.конфиг ендпойнт
но все равно все парсится и прокси генерируется
значит мех включается автоматически????
тогда все ок
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38113159
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

ааа не везде отключал :(
сцуки, гады позорные
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38117131
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38117246
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

ну зарегился, вопрос то важный
а там фигня
надо что бы не было ClientProxy ссылка на нее из Client
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38118093
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosМСУ,

ну зарегился, вопрос то важный
а там фигня
надо что бы не было ClientProxy ссылка на нее из Client
Я тебя что, заставляю регаться? Название темы почитай, подумай.
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38118138
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

в названии написано - БЕЗ ПРОКСИ, т.е. никаких референсов, интерфейсов и т.д. упоминаний о сервисе, знаем только точку доступа
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38118374
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosМСУ,

в названии написано - БЕЗ ПРОКСИ, т.е. никаких референсов, интерфейсов и т.д. упоминаний о сервисе, знаем только точку доступа

У меня в коде тоже никаких референсов типов соап. Ты че тупишь?
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38118485
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

у тебя в коде клиента описание интерфейса IService
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38118489
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
namespace Client
{
    using System;
    [color=red]using ClientProxy; НЕЛЬЗЯ!!![/color]
    class Program
    {
        static void Main(string[] args)
        {
            Proxy proxy = new Proxy();

            Console.WriteLine(proxy.DoSomething());
            Console.ReadLine();
        }
    }
}
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38118496
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
namespace ClientProxy
{
    using System.ServiceModel;
 [SIZE=4] [color=red]  using Contracts;[/color][/SIZE]    public class Proxy : ClientBase<IService>, IService
    {
        public string DoSomething()
        {
            return this.Channel.DoSomething();
        }
    }
}
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / SOAP коммуникация в WCF без использования прокси клиента
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]