Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > Клиент-серверное межъязыковое взаимодействие |
Автор: mr.Anderson 28.11.2011, 11:03 |
Всем привет. Задался следующей задачей, которую сейчас опишу, интересует ее реализуемость в принципе, а также методика реализации (куда ковырять хотя бы). Задача: создать клиент-серверное приложение. Мультиплатформенное. Целевые устройства - мобильники на базе iOS и Андроид. Сервер, как я понимаю, может функционировать сам по себе и может быть написан на чем угодно. К примеру, я пишу сервер на C# с использованием базы MSSQL. Каждая из указанных платформ должна будет взаимодействовать с этим сервером, посылая ему запросы и, соответственно, получая ответы. Вопрос в следующем. Каждая из этих платформ поддерживает свой язык разработки (Андроид - Java, iOS - Objective-C). Так вот. Можно ли разрабатывать клиенты на каждой из этих платформ на их "родном" языке, и успешно взаимодействовать с сервером, написанном на C#? Если это возможно, то каким образом строится это взаимодействие, на каких технологиях? К примеру, если бы я писал сайт на ASP.NET, то взаимодействие с сервером я бы мог сделать, допустим, через протокол SOAP. И тупо кидать данные туда-обратно в виде XML. А то и вовсе подключить технологию WСF, там это возможно. А вот как быть в межъязыковом варианте? То есть, нужно построить два клиента, один - Java <-> C#, второй - Objective-C <-> C#. Это возможно? Если да, по какому принципу должно строиться общение? Как нужно посылать запросы серверу (через какой механизм), и в каком виде отдавать ответы, чтобы оба клиента могли их интерпретировать? В принципе-то, как я понимаю, получать запросы от сервера можно в том самом XML-виде, а потом парсить его. А вот посылать ему запросы каким образом, представляю плохо. Если же такой вариант невозможен (что печально), то каким образом можно реализовать указанную задачу (два клиента на несвязанных платформах с общим сервером)? Буду благодарен за любые подсказки, включая полезную литературу по теме. |
Автор: ksnk 28.11.2011, 12:59 |
Не вижу причины, по которой нельзя было бы на java и на c# воспользоваться XML форматом для обмена данными. mr.Anderson, Если взять http://www.madewithmarmalade.com/, то можно все писать на с++. Для всех мобильников, включая iOs, андроид, симбиан и что там еще им в голову придет... Лицензия, правда, стоит денег. |
Автор: Akina 28.11.2011, 14:41 |
Протоколы обмена придуманы именно для того, чтобы не засорять себе голову, какая ось и какой софт установлены на той стороне. |
Автор: mr.Anderson 28.11.2011, 15:08 | ||
Хорошо, то есть получается, что отсылку запросов на сервер и получение от него ответа я могу оформлять в виде XML, все верно? А уже собственно структуры XML, как ответа, так и запроса, я могу придумывать и формировать сам, и это не будет изобретением велосипеда. Я все правильно понял? И если все так, то есть ли какие-то общепринятые принципы составления XML-структур для формирования запроса к серверу? Чтобы не изобретать что-то страшное вида
Это, вроде бы, и неплохо (на мой непрофессиональный взгляд))), но вот результатом будет лесенка из if-else для сопоставления имени метода и собственно конкретного метода, что не очень весело. На этот счет есть какой-то общий принцип? Добавлено через 12 минут и 25 секунд Нет, вообще-то, средствами отражения можно эту штуковину быстренько сделать нормальной, но, может, все же есть что-то менее экзотическое? |
Автор: mr.Anderson 30.11.2011, 09:33 |
И тишина... Ответьте на последнее сообщение, чтобы у меня сомнений уже по реализации не оставалось) |
Автор: Akina 30.11.2011, 09:37 |
Ничего "экзотического" не вижу. Просто создай полную спецификацию своего протокола. |
Автор: mr.Anderson 30.11.2011, 10:33 | ||
Akina, больше интересует именно посылка запроса на сервер. Посылка будет очень простая - вызов конкретного метода на сервере с конкретным набором параметров. В общем-то, приведенная хмлка это и описывает, больше там ничего не будет. Получение такого вида хмл и перевод имени и параметров в реальные объекты через отражение - это не экзотика? Более конкретно:
Вот так это будет выглядеть. В коде, соответственно, будет производиться поиск метода через отражение, преобразование и подстановка параметров соответственно указанному типу, и собственно выполнение метода. Нормальный способ? |
Автор: voral 30.11.2011, 13:18 |
Изучите работу с сокетами, с "сетевыми" классами. Вы можете пересылать хоть по одному байту. Можете на русском языке литературный текст. Вообще все что у годно и как угодно. Лишь бы на обеих сторонах смогли все это дело распарсить. Что касается xml в принципе и вики достаточно http://ru.wikipedia.org/wiki/XML есть еще, можно сказать, модный JSON http://ru.wikipedia.org/wiki/JSON |
Автор: mr.Anderson 30.11.2011, 13:27 |
Спасибо, все в целом понятно. |