|  | 
| 
SOAP коммуникация в WCF без использования прокси клиента | |||
|---|---|---|---|
| #18+ Возникла потребность написать WS, который принимает и возвращает сообщения в формате SOAP. Пробовал создать подобный WS используя WCF, но остановился на этапе обращения к самому сервису. Насколько я понял, то клиент должен генерировать прокси-класс, чтобы из него уже вызывать необходимые методы, которые описаны в контракте. Проблема в том, что я пишу WS для уже готового ПО, которое нет возможности переписать. Эта программа просто умеет отправлять  SOAP сообщения посредством POST запросов и парсить SOAP ответы, она ничего не знает о том же WSDL, к примеру. Наткнулся на тему, что можно написать HTTP WEB WCF используя атрибуты [WebGet] и [WebInvoke], но этот способ, как я понял дает возможность обмена обычным XML или JSON, что не подходит мне. Я, конечно, могу сделать ручную сериализацию в SOAP, но это будет не столь красиво. В старых ASMX было все проще. Были просто методы и при обращении к странице веб сервиса сразу было описание формата SOAP и REST запросов, которые можно отправить обычным POST. При этом можно было генерировать те же прокси клиенты и юзать их в коде. Что-то подобное мне нужно на WCF в связи с тем, что старые добрые веб сервисы по словам MSDN являются устаревшей технологией. Может посоветует кто-то как решить подобную задачу? ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 27.12.2012, 13:49 |  | ||
| 
SOAP коммуникация в WCF без использования прокси клиента | |||
|---|---|---|---|
| #18+ yesnoms, ну че? сделал? ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 15.01.2013, 16:57 |  | ||
| 
SOAP коммуникация в WCF без использования прокси клиента | |||
|---|---|---|---|
| #18+ yesnoms, Я правильно понял и клиент и сервис в бинарниках, изменить их возможности нет, но сервис хочется переписать? Привет, если клиент удовлетворяет полностью SOAP, то сделать будет не сложно. Клиенту не обязательно делать проксю, равно как и сервису все равно, откуда пришло SOAP сообщение, можешь хоть просто поцепиться к нему telnet 127.0.0.1 80 и скопипастить туда сообщение SOAP request'а. Тебе нужно сделать следующее. Каким нибудь нетворк монитором снять трафик с клиента когда он работает со старым сервисом, понять структуру сообщений (дата контрактов)/методов (сервис контрактов) по их тексту. Создать свой WCF сервис с wsHttpBinding'ом или еще там был для старых ASMX, какой из них пользовать поймешь из предыдущего пункта. С помощью DataContract/DataMember, ServiceContract/OperationContract определить форматы сообщений твоего сервиса. Благо они умеют переименовывать проперти/методы, неймспейсы и т. п.. Тебе также надо будет определить всякие штуки типа InstanceContextMode. Можно также на уровне меседжа работать и т. п.. С большой вероятностью поийдется косить под старый ASMX. ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 16.01.2013, 18:55 |  | ||
| 
SOAP коммуникация в WCF без использования прокси клиента | |||
|---|---|---|---|
| #18+ в всф тоже можно налету сгенерировать прокси ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 16.01.2013, 20:48 |  | ||
| 
SOAP коммуникация в WCF без использования прокси клиента | |||
|---|---|---|---|
| #18+ так как я ток начал разбираться в wcf, хотелось бы узнать как люди это делают с малой кровью и универсально для всех видов сервисов ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 16.01.2013, 20:50 |  | ||
| 
SOAP коммуникация в WCF без использования прокси клиента | |||
|---|---|---|---|
| #18+ ViPRosв всф тоже можно налету сгенерировать прокси в WCF вообще много чего можно 1) сгенерить проксю а) оставив как есть б) подсунув совершенно другие классы на клиенте и с помощью DataContract/DataMember, ServiceContract/OperationCon выпрямив их так, чтобы до клиента доходило то, что он хочет. другое дело за чем это может понадобиться. 2) не генерить проксю и пользоваться ровно теми же определениями контракта, что и на сервере через Shared сборку каждому подходу свое применение... может быть еще что-то можно. так не вспомню. --- Да, вы правы, если сервер предоставляет что-то вроде MexEndpoint или включено <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/> то сгенерить можно по старому сервису клиентскую проксю и его потом имплементировать аналог на сервере, и тогда старый клиент подхватит. Но этого может быть отключено в целях безопасности, а если оно не в конфиге а захардкодили, то см. подход выше. В конце дня мозг был забит потому я полез в горло через анус, упустив тот факт что сервис то старый на руках есть. Но подход выше ему пригодиться если metadata exchange отключен. :) ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 16.01.2013, 23:34 |  | ||
| 
SOAP коммуникация в WCF без использования прокси клиента | |||
|---|---|---|---|
| #18+ Lord British, а как генерить прокси к чужому сервису, если mex отключен? ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 16.01.2013, 23:42 |  | ||
| 
SOAP коммуникация в WCF без использования прокси клиента | |||
|---|---|---|---|
| #18+ пардон, опечатка [QUOTE] б) подсунув совершенно другие классы на клиенте и с помощью DataContract/DataMember, ServiceContract/OperationCon выпрямив их так, чтобы до сервера доходило то, что он хочет. другое дело за чем это может понадобиться. [QUOTE] ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 16.01.2013, 23:44 |  | ||
| 
SOAP коммуникация в WCF без использования прокси клиента | |||
|---|---|---|---|
| #18+ ViPRosLord British, а как генерить прокси к чужому сервису, если mex отключен? Если есть доступ к голому каналу и работающая пара Сервер/клиент то можно заняться педальным реверсом руками как написано здесь 13780620 . Если mex отключен и есть только сервер и нет доступа к каналу и/или работающего клиента, то у меня нет других идей кроме как за денежку купить у разрабов wsdl и по нему сгенерить проксю с помощью кажется svcutil.exe Если и разрабы не продают то никак. ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 16.01.2013, 23:49 |  | ||
| 
SOAP коммуникация в WCF без использования прокси клиента | |||
|---|---|---|---|
| #18+ Lord British, это плохо :( ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 16.01.2013, 23:58 |  | ||
| 
SOAP коммуникация в WCF без использования прокси клиента | |||
|---|---|---|---|
| #18+ Если ничего не помогло и известно что или сервер или клиент написан под .NET. Есть вариант взять рефлектор и выколупать оттуда контракт сервиса и датаконтракты :) даже если сборка обфусцирована, по атрибутам OperationContract/ServiceContract DataMember/DataContract с любезно предоставленными именами методов/полей в виде строк. ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 17.01.2013, 00:00 |  | ||
| 
SOAP коммуникация в WCF без использования прокси клиента | |||
|---|---|---|---|
| #18+ Lord British, ладно тут книжку какую то нашел, хвалят все может там что есть ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 17.01.2013, 00:05 |  | ||
| 
SOAP коммуникация в WCF без использования прокси клиента | |||
|---|---|---|---|
| #18+ Даже в случае такого можешь восстановить контракт. Могут быть иерогливы и т. п.. Дерзай короче. Код: 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. ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 17.01.2013, 00:08 |  | ||
| 
SOAP коммуникация в WCF без использования прокси клиента | |||
|---|---|---|---|
| #18+ ViPRosLord British, ладно тут книжку какую то нашел, хвалят все может там что есть Автор как-то Лёва Жуваль у книжки? А что не ясно из сказанного. В книжке по твоей проблеме нового особо не найдешь. :) ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 17.01.2013, 00:11 |  | ||
| 
SOAP коммуникация в WCF без использования прокси клиента | |||
|---|---|---|---|
| #18+ Lord British, да все ясно ясно что МС свой бредовой типизацией замахал уже ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 17.01.2013, 00:18 |  | ||
| 
SOAP коммуникация в WCF без использования прокси клиента | |||
|---|---|---|---|
| #18+ непонятно вот что я отключаю mex просто в хосте не стал содздавать ендпойнт для мех и в сервисе убрал в апп.конфиг ендпойнт но все равно все парсится и прокси генерируется значит мех включается автоматически???? тогда все ок ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 17.01.2013, 00:31 |  | ||
| 
SOAP коммуникация в WCF без использования прокси клиента | |||
|---|---|---|---|
| #18+ ViPRos, ааа не везде отключал :( сцуки, гады позорные ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 17.01.2013, 00:47 |  | ||
| 
SOAP коммуникация в WCF без использования прокси клиента | |||
|---|---|---|---|
| #18+ ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 20.01.2013, 22:51 |  | ||
| 
SOAP коммуникация в WCF без использования прокси клиента | |||
|---|---|---|---|
| #18+ МСУ, ну зарегился, вопрос то важный а там фигня надо что бы не было ClientProxy ссылка на нее из Client ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 21.01.2013, 01:17 |  | ||
| 
SOAP коммуникация в WCF без использования прокси клиента | |||
|---|---|---|---|
| #18+ ViPRosМСУ, ну зарегился, вопрос то важный а там фигня надо что бы не было ClientProxy ссылка на нее из Client Я тебя что, заставляю регаться? Название темы почитай, подумай. ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 21.01.2013, 14:46 |  | ||
| 
SOAP коммуникация в WCF без использования прокси клиента | |||
|---|---|---|---|
| #18+ МСУ, в названии написано - БЕЗ ПРОКСИ, т.е. никаких референсов, интерфейсов и т.д. упоминаний о сервисе, знаем только точку доступа ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 21.01.2013, 15:11 |  | ||
| 
SOAP коммуникация в WCF без использования прокси клиента | |||
|---|---|---|---|
| #18+ ViPRosМСУ, в названии написано - БЕЗ ПРОКСИ, т.е. никаких референсов, интерфейсов и т.д. упоминаний о сервисе, знаем только точку доступа У меня в коде тоже никаких референсов типов соап. Ты че тупишь? ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 21.01.2013, 16:50 |  | ||
| 
SOAP коммуникация в WCF без использования прокси клиента | |||
|---|---|---|---|
| #18+ МСУ, у тебя в коде клиента описание интерфейса IService ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 21.01.2013, 17:44 |  | ||
| 
SOAP коммуникация в WCF без использования прокси клиента | |||
|---|---|---|---|
| #18+ Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 21.01.2013, 17:46 |  | ||
| 
SOAP коммуникация в WCF без использования прокси клиента | |||
|---|---|---|---|
| #18+ Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... | |||
| : 
 Нравится:
     Не нравится:
     | |||
| 21.01.2013, 17:52 |  | ||
|  | 

| start [/forum/topic.php?fid=19&msg=38113117&tid=1397120]: | 0ms | 
| get settings: | 9ms | 
| get forum list: | 11ms | 
| check forum access: | 3ms | 
| check topic access: | 3ms | 
| track hit: | 52ms | 
| get topic data: | 10ms | 
| get forum data: | 2ms | 
| get page messages: | 53ms | 
| get tp. blocked users: | 1ms | 
| others: | 252ms | 
| total: | 396ms | 

| 0 / 0 | 
