2009-08-18 3 views
3

Я слышал, что WCF является новым стандартом для связи по сети и приложениям в .net. Идея, похоже, также имеет смысл, обеспечивает стандартные интерфейсы для программ для общения.WCF Коммуникация, хотя и именованные каналы с non .net App

Вот моя ситуация. У меня есть приложение .net. Я хочу общаться с рубиновым приложением, хотя трубами. На стороне .net (сервер) я хотел бы использовать WCF, в то время как рубиновая сторона (клиент) будет жевательной резинкой и клейкой лентой.

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

ответ

1

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

См. Это first или last entry on WCF message framing для ознакомления с сложностью. Это не невозможно, но стоит ли это усилий?

Рекомендован HTTP-транспорт + некоторый тип текста или кодировка разметки, например basicHttpBinding или webHttpBinding.

+0

Упаковка в рубине довольно проста, но перевод кода кадрирования с английского на код может закончиться тем, что он больше работает, чем использование устаревших труб lib. – QueueHammer

0

Зависит от ваших привязок, вы можете сделать свой WCF привязкой webHttp и сделать его спокойным (проще всего), и вы просто получаете сообщения и сообщения. Другие привязки, которые вы должны будете использовать заголовки SOAP и такие, чтобы общаться с вашим WCF, я сам этого не делал, но я уверен, что информация о том, как это сделать для приложений non .net, есть.

0

Вы хотите, чтобы ваш договор был максимально простым (с точки зрения того, какие типы вы раскрываете). Хотя я сам этого не пробовал, я знаю, что этот тип функциональности поддерживается (.Net для Java - это обычное использование) и относительно легко сделать.

Вы не указываете, какая сторона (.Net или Ruby) будет сервером, но я бы ожидал, что это будет намного проще сделать, если вы разместите службу в WCF и уничтожаете ее из ruby. Идти наоборот может быть немного больнее, потому что смешение с внутренними компонентами WCF может быть немного больно.

+0

Хорошее предложение на сервере отношений с сервером клиентов, я обновил сообщение. – QueueHammer

0

В каких «трубах» вы имеете в виду? Вы не можете использовать привязки именованных каналов с любым кодом, который не является .NET.

Возможно, вам будет лучше с одним из HTTP-привязок, например webHttpBinding или basicHttpBinding.

+2

Я специально использую именованные каналы. Я, хотя один из преимуществ WCF был протокол не зависел от транспорта. Поскольку у Ruby есть трубы lib, они не должны работать? – QueueHammer

+0

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