powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / SOAP коммуникация в WCF без использования прокси клиента
40 сообщений из 40, показаны все 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
SOAP коммуникация в WCF без использования прокси клиента
    #38118501
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos, так без веб референсов же. Иначе http://codearticles.ru/Home/ArticleView/2047
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38118518
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

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

ну там все о WCF DataCervic c OData смотрел в МСДН
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38118547
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот смотри как задача стоит
надо по метаописанию (URI, Contract, Operation) описанию запустить метод сервиса

При этом ВИПРОС ничего не знает про этот сервис кроме заданной инфы в метаданных
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38118569
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos, а что с результатом потом делать будешь?
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38118571
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тут есть еще http://codearticles.ru/Home/ArticleView/1234
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38118595
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУВот тут есть еще http://codearticles.ru/Home/ArticleView/1234
ну счас я похожую фигню пользую, думал может есть какой нибудь фокус без CodeDom
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38118602
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУViPRos, а что с результатом потом делать будешь?
они все возвращают только bool
вызываются в контексте макротипа, если возварт true, то визуализатор обновляет данные макротипа
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38118609
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosМСУViPRos, а что с результатом потом делать будешь?
они все возвращают только bool
вызываются в контексте макротипа, если возварт true, то визуализатор обновляет данные макротипа
Если они все возвращают бул, то чем тебе мой интерфейс не понравился? И без кодедома.
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38118614
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

да потому что у тебя есть явная ссылка на Контракт в клиенте
а ВИПРОС ничего не знает о сервисе воще
так бы я просто пользваолся бы ChannelFactory
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38118622
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот все знания випрос о сервисе

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
using System.ServiceModel.Description;
using DynamicProxy;
........


string serviceWsdlUri = dr["Namespace"].ToString();
DynamicProxyFactory factory = new DynamicProxyFactory(serviceWsdlUri);
DynamicProxy Proxy = factory.CreateProxy(dr["Класс"].ToString());
bool ret = (bool)Proxy.CallMethod(dr["Метод"].ToString(), new object[] { });

if (ret) RefreshData(true);

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

все дело в том, что сервисы не всегда мои, а то нефиг было бы огород городить
тут такое дело
такого вида сервисы нужны для действий без возврата
эти сервисы работаю с БД и возвращают да-нет
если да, то это означает, что состояние макротипа в БД изменилось и надо его обновить на клиенте
...
Рейтинг: 0 / 0
SOAP коммуникация в WCF без использования прокси клиента
    #38118662
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos, ладно, убедил )
...
Рейтинг: 0 / 0
40 сообщений из 40, показаны все 2 страниц
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / SOAP коммуникация в WCF без использования прокси клиента
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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