Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Клиент-серверное межъязыковое взаимодействие 
V
    Опции темы
mr.Anderson
  Дата 28.11.2011, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Всем привет. Задался следующей задачей, которую сейчас опишу, интересует ее реализуемость в принципе, а также методика реализации (куда ковырять хотя бы).

Задача: создать клиент-серверное приложение. Мультиплатформенное. Целевые устройства - мобильники на базе iOS и Андроид. Сервер, как я понимаю, может функционировать сам по себе и может быть написан на чем угодно. К примеру, я пишу сервер на C# с использованием базы MSSQL. Каждая из указанных платформ должна будет взаимодействовать с этим сервером, посылая ему запросы и, соответственно, получая ответы.

Вопрос в следующем. Каждая из этих платформ поддерживает свой язык разработки (Андроид - Java, iOS - Objective-C). Так вот. Можно ли разрабатывать клиенты на каждой из этих платформ на их "родном" языке, и успешно взаимодействовать с сервером, написанном на C#? Если это возможно, то каким образом строится это взаимодействие, на каких технологиях? К примеру, если бы я писал сайт на ASP.NET, то взаимодействие с сервером я бы мог сделать, допустим, через протокол SOAP. И тупо кидать данные туда-обратно в виде XML. А то и вовсе подключить технологию WСF, там это возможно. А вот как быть в межъязыковом варианте? То есть, нужно построить два клиента, один - Java <-> C#, второй - Objective-C <-> C#. Это возможно? Если да, по какому принципу должно строиться общение? Как нужно посылать запросы серверу (через какой механизм), и в каком виде отдавать ответы, чтобы оба клиента могли их интерпретировать? В принципе-то, как я понимаю, получать запросы от сервера можно в том самом XML-виде, а потом парсить его. А вот посылать ему запросы каким образом, представляю плохо.

Если же такой вариант невозможен (что печально), то каким образом можно реализовать указанную задачу (два клиента на несвязанных платформах с общим сервером)?

Буду благодарен за любые подсказки, включая полезную литературу по теме.

Это сообщение отредактировал(а) mr.Anderson - 28.11.2011, 11:33


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
ksnk
Дата 28.11.2011, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 7
Всего: 386



Не вижу причины, по которой нельзя было бы на java и на c# воспользоваться XML форматом для обмена данными.

mr.Anderson, Если взять Мармелад, то можно все писать на с++.
Для всех мобильников, включая iOs, андроид, симбиан и что там еще им в голову придет... Лицензия, правда, стоит денег.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Akina
Дата 28.11.2011, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 453



Протоколы обмена придуманы именно для того, чтобы не засорять себе голову, какая ось и какой софт установлены на той стороне.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
mr.Anderson
Дата 28.11.2011, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Хорошо, то есть получается, что отсылку запросов на сервер и получение от него ответа я могу оформлять в виде XML, все верно? А уже собственно структуры XML, как ответа, так и запроса, я могу придумывать и формировать сам, и это не будет изобретением велосипеда. Я все правильно понял?

И если все так, то есть ли какие-то общепринятые принципы составления XML-структур для формирования запроса к серверу? Чтобы не изобретать что-то страшное вида
Код

<request>
    <action>MyMethodName</action>
    <param>My Param 1</param>
    <param>My Param 2</param>
</request>

Это, вроде бы, и неплохо (на мой непрофессиональный взгляд))), но вот результатом будет лесенка из if-else для сопоставления имени метода и собственно конкретного метода, что не очень весело. На этот счет есть какой-то общий принцип?

Добавлено через 12 минут и 25 секунд
Нет, вообще-то, средствами отражения можно эту штуковину быстренько сделать нормальной, но, может, все же есть что-то менее экзотическое?

Это сообщение отредактировал(а) mr.Anderson - 28.11.2011, 15:12


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
mr.Anderson
Дата 30.11.2011, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



И тишина... Ответьте на последнее сообщение, чтобы у меня сомнений уже по реализации не оставалось)


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Akina
Дата 30.11.2011, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 453



Ничего "экзотического" не вижу.
Просто создай полную спецификацию своего протокола. 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
mr.Anderson
Дата 30.11.2011, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Akina, больше интересует именно посылка запроса на сервер. Посылка будет очень простая - вызов конкретного метода на сервере с конкретным набором параметров. В общем-то, приведенная хмлка это и описывает, больше там ничего не будет. Получение такого вида хмл и перевод имени и параметров в реальные объекты через отражение - это не экзотика?

Более конкретно:
Код

<request datetime="..." ip="..." page="...">
    <action>имя_метода</action>
    <param type="тип_параметра_1">значение_параметра_1</param>
    <param type="тип_параметра_2">значение_параметра_2</param>
    ...
</request>

Вот так это будет выглядеть. В коде, соответственно, будет производиться поиск метода через отражение, преобразование и подстановка параметров соответственно указанному типу, и собственно выполнение метода. Нормальный способ?

Это сообщение отредактировал(а) mr.Anderson - 30.11.2011, 12:04


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
voral
Дата 30.11.2011, 13:18 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 16.3.2008
Где: Иваново

Репутация: нет
Всего: нет



Изучите работу с сокетами, с "сетевыми" классами. Вы можете пересылать хоть по одному байту. Можете на русском языке литературный текст. Вообще все что у годно и как угодно. Лишь бы на обеих сторонах смогли все это дело распарсить.

Что касается xml в принципе и вики достаточно http://ru.wikipedia.org/wiki/XML
есть еще, можно сказать, модный JSON http://ru.wikipedia.org/wiki/JSON
PM MAIL WWW   Вверх
mr.Anderson
Дата 30.11.2011, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Спасибо, все в целом понятно.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1237 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.