|
|
|
Как проще всего написать сервер(ный компонент)?
|
|||
|---|---|---|---|
|
#18+
Привет. Мне нужно сделать что-то вроде сервера. Должна висеть программа, которая при поступлении по сети вопроса дает на него ответ. Одним из условий должно быть, чтобы клиент к моему серверу мог быть написан на чем угодно, не только на джаве, и чтобы не пришлось выдумывать новый протокол. Другое условие - простота. То есть чтобы я мог реализовать два-три метода, а все остальное (работу с сокетами, передача данных, безопасность, возможно, очереди, протоколы и т.п.) взял бы на себя какой-нибудь контейнер. Я до этого писал только на чистой java (без EJB), кроме того, делал сервлеты. Недавно начал изучать XML. Куда мне нужно смотреть, чтобы проще всего реализовать такую штуку, какие слова искать? Пока нашел следующее: 1) Message driven enterprise javabeans. 2) JAXM (странно, что на него нет ссылки со страницы http://java.sun.com/xml/index.jsp - может, JAXM отменили?) 3) JAX-RPC 4) SOAP Пока ничего в этих буквах не понимаю, но кажется, что либо третье, либо четвертое - это то, что мне надо. Подскажите три простых следующих шага плз! Например, "Пиши сервлет как обычно, реализуй интерфейс такой-то, в web.xml напиши то-то и будет тебе щастье". Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2005, 00:51:17 |
|
||
|
Как проще всего написать сервер(ный компонент)?
|
|||
|---|---|---|---|
|
#18+
А чем не устраивают сервлеты? Они подходят под ваши требования, кроме них подойдут пожалуй только WebServices и Corba ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2005, 02:01:45 |
|
||
|
Как проще всего написать сервер(ный компонент)?
|
|||
|---|---|---|---|
|
#18+
funikovyuriА чем не устраивают сервлеты? Они подходят под ваши требования, кроме них подойдут пожалуй только WebServices и Corba Я использую сервлет-контейнер, HTTP GET/POST запросы с параметрами, ответы сервера в XML формате. На стороне сервера для формирования ответов используются XMLBeans (ну и, рзумеется. база данных). Клиенты есть на Java, MS VC++, VB, .NET. Все клиенты (каждый по-своему) умеют посылать HTTP GET/POST и парсить XML сервера. В итоге получается XML RPC. Я собирался использовать SOAP (который успешно использовал раньше), но обнаружил, что это будет громоздко и совершенно не нужно. Если хотите, гляньте в описания моих недавно сделанных API по этой схеме. Эти API открытые и используются разработчиками клиентских приложений к моим серверам: ftp://cascade.virtual.vps-host.net/ObjectPublisher_API_Developers_Kit/OnDemandPublishing_API/API_Guide_ver0.doc ftp://cascade.virtual.vps-host.net/ObjectPublisher_API_Developers_Kit/SecurityManagement_API/API_Guide_ver0.doc ftp://cascade.virtual.vps-host.net/ObjectPublisher_API_Developers_Kit/VariableContentPackagePublishing_API/PkgPubControl_Guide_ver0.doc Там же есть XML Schemas для каждого API. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2005, 11:22:12 |
|
||
|
Как проще всего написать сервер(ный компонент)?
|
|||
|---|---|---|---|
|
#18+
М.Голованов[quot funikovyuri]Если хотите, гляньте в описания моих недавно сделанных API по этой схеме. Эти API открытые и используются разработчиками клиентских приложений к моим серверам: Пардон, последняя ссылка указывает на описание примера клиентского приложения (Windows COM). Правильно будет ftp://cascade.virtual.vps-host.net/ObjectPublisher_API_Developers_Kit/VariableContentPackagePublishing_API/API_Guide_ver0.doc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2005, 11:25:17 |
|
||
|
Как проще всего написать сервер(ный компонент)?
|
|||
|---|---|---|---|
|
#18+
М.ГоловановВ итоге получается XML RPC. Я собирался использовать SOAP (который успешно использовал раньше), но обнаружил, что это будет громоздко и совершенно не нужно. Если хотите, гляньте в описания моих недавно сделанных API по этой схеме. Эти API открытые и используются разработчиками клиентских приложений к моим серверам: ... Спасибо большое! Посмотрю. Но, насколько я понял, все-таки приходится придумывать свой API? Я просто пока никак не могу въехать в тему. Надо сделать для каждой платформы библиотеку, которая умела бы вызывать этот сервлет? А клиентская часть на C# или Delphi пользовалась бы этой библиотекой (COM-объектом)? Или есть стандратный, уже реализованный везде, механизм вызова подобных сервлетов (то есть, например, стандартный способ формирования строки GET)? Не он ли и называется SOAP? То есть в принципе SOAP - это то что мне нужно, но оно громоздко? Я почему переспрашиваю, потому что не уверен, что все понимаю. funikovyuri, а как надо писать подобный сервлет? Легко ли будет программисту клиента написать вызов этого сервлета? Шоб без сокетов и т.п. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2005, 15:25:33 |
|
||
|
Как проще всего написать сервер(ный компонент)?
|
|||
|---|---|---|---|
|
#18+
Я собирался использовать SOAP (который успешно использовал раньше), но обнаружил, что это будет громоздко и совершенно не нужно. эт вы его готовить не умеете. создание и публикация в контейнере простого сервиса (классический "калькулятор") с использованием средств IDE - 5 минут, подключение внешнего сервиса - 1 минута. о возможности прозрачного для клиента переезда на ejb я даже не говорю. вообще я считаю игнорирование современных стандартов смертным грехом архитектора системы. топикстартеру - воспользуйся гайдом по AXIS. внимательно сделай все, что там предложено, разбери примеры. при этом желательно помнить, что WSDL руками не пишется и разработку желательно автоматизировать с пом. ant. http://ws.apache.org/axis/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2005, 15:39:05 |
|
||
|
Как проще всего написать сервер(ный компонент)?
|
|||
|---|---|---|---|
|
#18+
ежемухаНо, насколько я понял, все-таки приходится придумывать свой API? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2005, 22:04:16 |
|
||
|
Как проще всего написать сервер(ный компонент)?
|
|||
|---|---|---|---|
|
#18+
ежемухаНо, насколько я понял, все-таки приходится придумывать свой API? Что значит придумывать - определять свои вызовы и их параметры, а таже структуру ответов сервера? ... естественно. Мои API - это только для моих серверов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2005, 22:07:49 |
|
||
|
Как проще всего написать сервер(ный компонент)?
|
|||
|---|---|---|---|
|
#18+
ASP.NET WebServices - проще не бывает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2005, 22:12:38 |
|
||
|
Как проще всего написать сервер(ный компонент)?
|
|||
|---|---|---|---|
|
#18+
котысоздание и публикация в контейнере простого сервиса (классический "калькулятор") с использованием средств IDE - 5 минут, подключение внешнего сервиса - 1 минута. о возможности прозрачного для клиента переезда на ejb я даже не говорю. вообще я считаю игнорирование современных стандартов смертным грехом архитектора системы. Автору этой реплики: поздравляю. Нос вы мне не утерли, но кнопки нажимать научились. Всем заинтересованным: я этот подход, сказать честно, придумал не сам. Я года два до этого имел счастие работать SOAP, но в конце концов обнаружил, что наиболее используемыми оказываются Веб-сервисы, построенные именно по такой схеме. Например, 99% разработчиков клиентских приложений для Amazon.com (Amazon ECS API) используют именно эту схему (у них она называется REST requests), другую (SOAP requests) не использует практически никто. То же самое для eBay API. Поработав с Amazon (это был проект перед текущим), я окончательно понял, что SOAP для целей, для которых создаются такие API, избыточен и чреват тем, что разработка клиентских приложений упрется в неквалифицированность разработчиков и тем самым в невостребованность API. Причем последнее обстоятельство оказалось решающим. И теперь у нас все хорошо. Индусам легче соорудить простой HTTP вызов, чем прикручивать к своим приложениям SOAP клиенты, в кторых они ни уха ни рыла... а распарсить XML ответ сервера они так или иначе способны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2005, 22:24:02 |
|
||
|
Как проще всего написать сервер(ный компонент)?
|
|||
|---|---|---|---|
|
#18+
[quot ежемухаНадо сделать для каждой платформы библиотеку, которая умела бы вызывать этот сервлет? А клиентская часть на C# или Delphi пользовалась бы этой библиотекой (COM-объектом)?[/quot] Вы там рядом с описаниями API и XML схемами можете найти и клиентские COM компоненты, и пример .NET клиента. Клиентская библиотека в Вашем смысле есть и для Java (но он там не выложен, поскольку им пользуется только один клиент, сподобившийся писать клиентское приложение на Swing). Если у Вас клиенты ограничены Windows, вам, конечно, сам Бог велел написать COM компонент, который бы делал вызовы к серверу и обрабатывал XML ответы сервера. Используя MSXML. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2005, 22:32:56 |
|
||
|
Как проще всего написать сервер(ный компонент)?
|
|||
|---|---|---|---|
|
#18+
я этот подход, сказать честно, придумал не сам. Я года два до этого имел счастие работать SOAP, но в конце концов обнаружил, что наиболее используемыми оказываются Веб-сервисы, построенные именно по такой схеме. Например, 99% разработчиков клиентских приложений для Amazon.com (Amazon ECS API) используют именно эту схему (у них она называется REST requests), другую (SOAP requests) не использует практически никто. То же самое для eBay API. ага из-за того, что у 90 процентов разрабеотчиков разжижение мозга, нам надо сидеть в каменном веке и использовать кустарные протоколы. кстати, большинству юзеров проще всего слать инфо сендмейлом, а не открывать хттп соединение. что SOAP для целей, для которых создаются такие API, избыточен и чреват тем, что разработка клиентских приложений упрется в неквалифицированность разработчиков и тем самым в невостребованность API. вы все же потрудитесь объяснить, чем соап _избыточен? интересно, правда насчет квалифицированности - эт вы зря, тут все упирается в написание документации, что для явы и вижуалстудио, например, сводится к _пошаговым_ инструкциям. это я про индусов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2005, 01:39:55 |
|
||
|
Как проще всего написать сервер(ный компонент)?
|
|||
|---|---|---|---|
|
#18+
котывы все же потрудитесь объяснить, чем соап _избыточен? интересно, правда Это разговор в пользу бедных и не относится к теме. Товарищ спросил, как можно сделать и чтобы клиент к серверу мог быть написан на чем угодно. Я ответил и даже перечислил соображения, по которым мы выбрали такой подход. Если у вас есть свой - изложите, покажите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2005, 09:36:17 |
|
||
|
Как проще всего написать сервер(ный компонент)?
|
|||
|---|---|---|---|
|
#18+
кстате по поводу амазона - его SOAP api не используется разработчиками только по причине наличия в нем старых багов, которые, похоже, никто не собиратся фиксить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2005, 10:49:26 |
|
||
|
Как проще всего написать сервер(ный компонент)?
|
|||
|---|---|---|---|
|
#18+
Я так же не понял, чем не угодили WebServices... Например мы сейчас переводим часть наших сервисов, реализованных в виде сервлетов и smtp-handler'ов на WebServices и пока очень довольны (проект еще в разработке поэтому буду краток)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2005, 11:02:39 |
|
||
|
Как проще всего написать сервер(ный компонент)?
|
|||
|---|---|---|---|
|
#18+
А на Дельфи можно будет написать клиент к SOAP - серверу? То есть я понимаю, что можно все. Но я понял из фака по axis, что на java или .NET это делать легко и приятно, хотелось бы, чтобы это было также и при написании простой .dll или .so. Мне не нужно писать клиент, мне нужно, чтобы программист, ничего нестандартного не изучая, мог написать клиент. Сервер простой: ему дается несколько цифр, а он в ответ отдает другие несколько цифр, пользуясь данными из своей базейки. Однако я понимаю М.Голованова и его индусскую проблему. Но моя-то проблема в том, что я не смогу так красиво, на английском языке описать свой API, если создам его. Тем более не хотелось бы делать самому специальные клиентские библиотеки для всех платформ, с которых будет вызов моего сервера А вот описать поля запроса и поля ответа - делов на одну страницу. С указанием "дальше см. доку по SOAP". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2005, 11:37:05 |
|
||
|
Как проще всего написать сервер(ный компонент)?
|
|||
|---|---|---|---|
|
#18+
ежемухаА на Дельфи можно будет написать клиент к SOAP - серверу? То есть я понимаю, что можно все. Но я понял из фака по axis, что на java или .NET это делать легко и приятно, хотелось бы, чтобы это было также и при написании простой .dll или .so. Однако я понимаю М.Голованова и его индусскую проблему. Но моя-то проблема в том, что я не смогу так красиво, на английском языке описать свой API, если создам его. Тем более не хотелось бы делать самому специальные клиентские библиотеки для всех платформ, с которых будет вызов моего сервера А вот описать поля запроса и поля ответа - делов на одну страницу. С указанием "дальше см. доку по SOAP". 1. Клиент для SOAP может быть написан на чем угодно. Я лично успешно писал таковые на PHP, MS VC++ (не говоря о Java и .NET). 2. У меня (да и у вас) не "индусская" проблема. У меня опыт, который показывает, что почти любой програмист в состоянии запрограммировать HTTP запрос и разбор XML ответа, но далеко не любой в состоянии разобраться с SOAP. Это только кажется, что легко. Нужно ведь, чтобы РАБОТАЛО. Кроме того, я не писал и не собираюсь писать клиентские библиотеки для всех платформ. В 90% случаев все легко просекают сами, а в 10% приходится разжевывать (те примеры, которые у меня есть, результат такого разжевывания). 3. Так и у меня описаны поля запроса и ответа. И все. PS. Если у ваc все так просто, то можно вообще не морочиться с XML. Ваши вызовы могут иметь форму простого HTTP GET запроса типа Код: plaintext а ответы сервера - форму текстового файла с парами "наименование/значение" типа Код: plaintext 1. 2. разобрать текст по строкам, а затем отделить наименование от значения уж точно любой программист сможет. Вот пример вызова / ответа "тарого" Web-сервиса у моего клиента: http://my.objectpublish.com/catalogs/servlet/CatalogServlet?action=getJobAccounting&JOBID=OPS_BatchImport_63907 Результат - пары "наименование/значение", разделенные "палочкой" (|). И ничего... все довольны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2005, 12:37:23 |
|
||
|
Как проще всего написать сервер(ный компонент)?
|
|||
|---|---|---|---|
|
#18+
Короче, в чистом осадке мой совет получается такой. 1. Запросы - HTTP GET с указанием типа операции (имени функции) и (необязательно) списка параметров вызова (наименований и значений). 2. Сервлет разбирает запрос, его параметры и вызывает соответствующую функцию. 3. Функция формирует ответ в виде текстового файла (content-type="text/plain; charset=utf-8") или XML файла (content-type="text/xml; charset=utf-8"). 4. Сервлет переправляет это файл (ответ сервера) в выходной поток (пример текстового ответа): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2005, 12:57:19 |
|
||
|
Как проще всего написать сервер(ный компонент)?
|
|||
|---|---|---|---|
|
#18+
Спасибо большое. Я уже тоже склоняюсь к тому чтобы не городить огород и выдавать строку с разделителями или, например, csv с заголовком. А почему все это начал - потому что однажды пользовался чужим DCOMом, выполняющим аналогичную функцию. В программе на vbscript я просто делал объект и вызывал его методы. Поскольку я пишу на java, я подумал, как бы сделать, чтобы было так же просто. Разумеется, тот DCOM был достаточно дубов: он выдавал строку, даже не с разделителями, а с полями в определенных позициях. Но сам вызов был очень прост. Поэтому я и обеспокоился, чтобы использование моего ПО было не сложнее. Вот меня и терзает вопрос, как сделать, чтобы можно было вызывать мой сервлет из jscripta, из Delphi, даже из VBA или еще откуда угодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2005, 13:05:26 |
|
||
|
Как проще всего написать сервер(ный компонент)?
|
|||
|---|---|---|---|
|
#18+
Pitbull terrierкстате по поводу амазона - его SOAP api не используется разработчиками только по причине наличия в нем старых багов, которые, похоже, никто не собиратся фиксить Что первее - курица или яйцо?... не используют, потому что не фиксят, или не фиксят, потому что не используют?... В REST проблем тоже хватает (вы посмотрите на описание API - объем и функциональность впечатляют), но это проблемы не API как такового (и его использования), а реализации (функций их серверов которые исполняют запросы), он РАБОТАЕТ и им ПОЛЬЗУЮТСЯ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2005, 13:08:49 |
|
||
|
Как проще всего написать сервер(ный компонент)?
|
|||
|---|---|---|---|
|
#18+
М.Голованов Что первее - курица или яйцо?... не используют, потому что не фиксят, или не фиксят, потому что не используют?... В REST проблем тоже хватает (вы посмотрите на описание API - объем и функциональность впечатляют), но это проблемы не API как такового (и его использования), а реализации (функций их серверов которые исполняют запросы), он РАБОТАЕТ и им ПОЛЬЗУЮТСЯ. я бы мог предположить, что не фиксят, потому что ленивые раздолбаи - но не стану из уважения к незнакомым людям судя по неотвеченным реквестам в форуме поддержки - им бы пользовались, если бы он работал. мне например было бы удобнее юзать стабы и не писать своих парсеров для их страниц, учитывая хитрые особенности вроде постраничного вывода и копаясь в доках в поисках экзотических пропертей. но! когда из-за косяков в wsdl даже заглушки не генеряццо - ясен пень что есть повод призадуматься, стоит ли использовать сервис в котором выползают такие проблемы еще до того, как вы начали его использовать так что на в данном случае критерий выбора не удобство использования, а простой здравый смысл; soap не при чем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2005, 13:24:00 |
|
||
|
Как проще всего написать сервер(ный компонент)?
|
|||
|---|---|---|---|
|
#18+
ежемухаА на Дельфи можно будет написать клиент к SOAP - серверу? там есть мастер для этого ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2005, 18:36:10 |
|
||
|
Как проще всего написать сервер(ный компонент)?
|
|||
|---|---|---|---|
|
#18+
to М.Голованов Опубликованая Вами информация оказалась очень полезной и для меня. Но у меня есть потребноить и клиентом пересылать XML файлы серверу, не подскажете как это лучше реализовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2007, 18:22:38 |
|
||
|
Как проще всего написать сервер(ный компонент)?
|
|||
|---|---|---|---|
|
#18+
KBoristo М.Голованов Опубликованая Вами информация оказалась очень полезной и для меня. Но у меня есть потребноить и клиентом пересылать XML файлы серверу, не подскажете как это лучше реализовать? У меня обычно сервер принимает от клиента запросы в двух вариантах: * HTTP GET - запрос с параметрами типа http://www.server.net/processor.do?Operation=GetProductByLink&SessionID=7640160&ProductLinkRowID=3482&ProductRowID=10208&_= * HTTP POST - запрос с XML документом в теле запроса. В этом случае Operation является одним из элементов документа (имя функции, которую нужно выполнить над пересылаемыми данными). Например, если сервер получает документ Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. то ему (серверу) понятно, что а) ему надо выполнить функцию SaveProduct, б) данные для выполнения этой функции содержатся в элементе SaveProductRequest (обязательном в документе для запросов на SaveProduct. Дальше все просто. Короче, если клиент хочет получить данные, он посылает HTTP GET. Если клиент хочет отправить данные, он посылает HTTP POST с XML документом в теле запроса. Разумеется, можно было бы всегда использовать только HTTP POST (подобно тому, как это делает SOAP), то есть и первый запрос, приведенный выше, послать как XML документ вида Код: plaintext 1. 2. 3. 4. 5. но поскольку клиенты обычно часто читают данные и редко отправляют, то HTTP GET экономит время (так как разборка GET запроса мног проще парсинга XML документа). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2007, 00:57:16 |
|
||
|
Как проще всего написать сервер(ный компонент)?
|
|||
|---|---|---|---|
|
#18+
to М.Голованов Вот спасибо! Теперь знаю как писать свое приложение, Вы мне очень помогли! З.Ы. Правильно ли я понимаю, что оба эти метода могут в ответе получать XML? И еще, какое ограничение накладывается на размер XML в методе HTTP POST? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2007, 12:05:49 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33375585&tid=2146405]: |
0ms |
get settings: |
19ms |
get forum list: |
24ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
45ms |
get topic data: |
18ms |
get forum data: |
4ms |
get page messages: |
103ms |
get tp. blocked users: |
3ms |
| others: | 308ms |
| total: | 538ms |

| 0 / 0 |
