На чем сделать сервис?

Все, что вы хотели знать о программизме, но боялись спросить.
MarkM
Пользователь
Сообщения: 113
Зарегистрирован: 24 сен 2003, 21:52

Сообщение MarkM »

Marmot писал(а):[А если по взрослому делать, то конечно надо через SSL sockets с client authentication.
На Java это 1 день работы,если знаешь как делать, imho.
Я уже начал на сокетах. Пока на простых. Потом засуну все в ССЛ нафик.
С сервлетами сильно гимора много. На сокетах примитивные клиент и сервер занимают по странице текста...
Аватара пользователя
Marmot
Графоман
Сообщения: 39348
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение Marmot »

MarkM писал(а): На сокетах примитивные клиент и сервер занимают по странице текста...
Это ты верно заметил :lol: , вопрос в том как хорошо будет работать такая примитивная пара...
MarkM писал(а): С сервлетами сильно гимора много.
А вот тут ты не прав, совершенно неправ... :twisted:
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

Копил по копеечке.
Мои 5-копеек.
MarkM:
На сокетах примитивные клиент и сервер занимают по странице текста...

Это ты верно заметил , вопрос в том как хорошо будет работать такая примитивная пара...
1) Немного более чем примитивные - занимают немногим большее место. Если делать для окошен с использованием "асинхронных расширений", ориентированных на обработку винюковых сообщений - ещё меньше и комфортнее. А если не погнушаться классами vcl, indy или мфц - то, может и ещё меньше (имеется в виду код программера, а не то, что генерят визарды). Впрочим, сим богатством редко кто пользуется.
2) А Mark вроде как и не говорил, что требуется могутная масштабируемость. Поэтому возможно, что "одна страница кода" - это то, что нужно.

:?:
Интересна разработка удобоваримого прикладного протокола - что передавать? Речь у Marka идет о "таблице". Это, как я понимаю, результат некого запроса. Как построить удобный, но что более важно, эффективный прикладной протокол, чтобы можно было легко парсить на клиенте результаты запроса. Может действительно в документ XML обёртывать? Вроде и бинари можно вставить "внутрь" тегов. Какие вообще идеи, Mark?

ПС.
1) Почему не сделать на сокетах, а клиентов "пометстить в наложенную" сетку. Тогда "дополнительные" вопросы просто отпадают. Специализированную прогу для этого - купить. По моему её сейчас делают, кому не лень. Там всё должно быть профессионально, да и с себя вроде как ответственность снимешь. Основные и накладные расходы на ПО (возможно чуток и на железо) -на клиентские конторы переложишь.
2) Marmot, не ругайся на меня - я всё равно в этом ничего не понимаю. Ответить не смогу. Это почти мои фантазии.
Аватара пользователя
Marmot
Графоман
Сообщения: 39348
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение Marmot »

vg писал(а):2) Marmot, не ругайся на меня - я всё равно в этом ничего не понимаю. Ответить не смогу. Это почти мои фантазии.
2All
Да чего уж там... грустно мне это всё читать, если честно, и обидно...
Мир полон посредственностей :cry: :cry: :twisted:
Аватара пользователя
ajkj3em
Маньяк
Сообщения: 2063
Зарегистрирован: 12 ноя 2006, 06:53

Сообщение ajkj3em »

Marmot писал(а):
vg писал(а):2) Marmot, не ругайся на меня - я всё равно в этом ничего не понимаю. Ответить не смогу. Это почти мои фантазии.
2All
Да чего уж там... грустно мне это всё читать, если честно, и обидно...
Мир полон посредственностей :cry: :cry: :twisted:
да, блин, сервлеты никто не уважает. прям бяда, повод всплакнуть :)

btw, ты в курсе, что под твоим именем какая-то контора сноубордисткие портки
выпускает ? в бирке написано, что они мол take a great pride in delivering quality
Marmot products to типа всем подряд. весь mountain coop ими завален ..
Аватара пользователя
Marmot
Графоман
Сообщения: 39348
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение Marmot »

drain bamage писал(а):
Marmot писал(а):
vg писал(а):2) Marmot, не ругайся на меня - я всё равно в этом ничего не понимаю. Ответить не смогу. Это почти мои фантазии.
2All
Да чего уж там... грустно мне это всё читать, если честно, и обидно...
Мир полон посредственностей :cry: :cry: :twisted:
да, блин, сервлеты никто не уважает. прям бяда, повод всплакнуть :)

btw, ты в курсе, что под твоим именем какая-то контора сноубордисткие портки
выпускает ? в бирке написано, что они мол take a great pride in delivering quality
Marmot products to типа всем подряд. весь mountain coop ими завален ..
Вот же падлы... украли brand, сволочи...
Но мне не это обидно, а то что servlets никто не уважает...
Завязывать надо мне с этим метанием бисера. :lol:
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

Marmot, ну .... ты .... эта.... про кого..... про посредственось...?
:twisted: :lol:
Ты как, сокеты-то программировал? Чи ни? (асм и С рулит, а не VB, Делфи или JAVA).

Да, и про "бисер" ... ну ...эта.... Чё мы свиньи? Да?
:lol: :lol: :lol:

ПС. Ладно. Прощаю. Ты б про приладной протокол шоли проглоголил бы. А то, знаешь в сокеты (даже RAW) то каждый тыкать может.
MarkM
Пользователь
Сообщения: 113
Зарегистрирован: 24 сен 2003, 21:52

Сообщение MarkM »

Marmot писал(а): Но мне не это обидно, а то что servlets никто не уважает...
Завязывать надо мне с этим метанием бисера. :lol:
[trn]
Ugu, v servletah ja kak svin'ja v apel'sinah. :)
Pochemu ja otkazalsja ot servletov:
1. Celostnost' Sessii realizovana na urovne protokola verhnego urovnja, prilozhenija. Nado prikladyvat' special'nye usilija chtoby ee podderzhivat'.
2. Ja malo znakom s programmirovaniem Servletov.
3. Ideja soketov dlja menja prozrachna, t.k. sootvetstvuet horosho mne izvestnoj modeli procedurnogo i OO programmirovanija.
4. Vozmozhnost' peredavat' ljubye objekty: textst, XML, java serializovannye objekty prjamo cherez soket.
5. Naveska SSL poverh napisannogo koda na plwjn soketak ne tak uzh i trudna.
6. Ja tak i ponjal v chem preimushestva servletov. Osobogo bisera, k sozheleniju ne uvidel, krome kak prosto prizyvov delat' na Servletah.
Esli by ty kak to bolee obosnovanno raz'jasnil, s privedeniem primerov, zhelatel'no, chem Servlety luchshe Soketov?
[/trn]
Аватара пользователя
Marmot
Графоман
Сообщения: 39348
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение Marmot »

2MarkM
>1. Целостность Сессии реализована на уровне протокола верхнего уровня, приложения. Надо прикладывать специальные усилия чтобы ее поддерживать.
Какие усилия, это часть Servlets API ???!!!
Надо только сказать: хочу Session...

>2. Я мало знаком с программированием Сервлетов.
Перевод: лениво прочитать 3 страницы документации :-)

>3. Идея сокетов для меня прозрачна, т.к. соответствует хорошо мне известной модели процедурного и ОО программирования.
Где это ты в sockets OO увидел???

>4. Возможность передавать любые обйекты: теxтст, XМЛ, ява сериализованные обйекты прямо через сокет.
Ты хочешь сказать что в servlets это селать нельзя или труднее?

>5. Навеска ССЛ поверх написанного кода на плэйн сокетак не так уж и трудна.
В случае servlets надо только сконфигурить контейнер, менять код вообще не надо

>6. Я так и понял в чем преимушества сервлетов. Особого бисера, к сожелению не увидел, кроме как просто призывов делать на Сервлетах.
Если бы ты как то более обоснованно разьяснил, с приведением примеров, желательно, чем Сервлеты лучше Сокетов?

Если ты делаешь через sockets, то ты ВСЁ должен делать и тестировать сам: thread pooling, certificates, proxy etc...
В случае servlets это уже всё написали и протестировали для тебя десятки людей!!!
Вот тебе примерчик твоего servletа написанный за 3 минуты:

Код: Выделить всё

public class MarkMServlet extends HttpServlet {


	protected void doPost(HttpServletRequest pRequest, HttpServletResponse pResponse) throws ServletException, IOException {
		HttpSession session;
		String clientString = pRequest.getParameter("client_string");
		if ("Hello. I'm klient 'Scott'".equals(clientString)) {
			session = pRequest.getSession();  //create Session
			session.setAttribute("client", "Scott");
			pResponse.getOutputStream().print("Hi. take 5.");
			return;
		}
		if ("Give me data".equals(clientString)) {
			session = pRequest.getSession(false); 
			//check session
			if (session == null) {
				pResponse.getOutputStream().print("fuck off");
				return;
			}
			// OK
			String client = (String) session.getAttribute("client");
			session.invalidate(); //session is no more! 
			pResponse.getOutputStream().print("data: 1 2 'blabla' 3 45 345 'blablabla' 64...");

			return;
		}
		pResponse.getOutputStream().print("fuck off");
	}
}
MarkM
Пользователь
Сообщения: 113
Зарегистрирован: 24 сен 2003, 21:52

Сообщение MarkM »

Marmot писал(а):2MarkM
>1. Целостность Сессии реализована на уровне протокола верхнего уровня, приложения. Надо прикладывать специальные усилия чтобы ее поддерживать.
Какие усилия, это часть Servlets API ???!!!
Надо только сказать: хочу Session...
[trn]A tam vrode kuki kakie-to nado. Esli ja budu iz orakla zapuskat' java storproceduru, to ja ne znaju, kak tam s kukami.[/trn]
Marmot писал(а): >2. Я мало знаком с программированием Сервлетов.
Перевод: лениво прочитать 3 страницы документации :-)
[trn]Dyk chitat'-to chital. Opyta programmirovanija net.[/trn]
Marmot писал(а): >3. Идея сокетов для меня прозрачна, т.к. соответствует хорошо мне известной модели процедурного и ОО программирования.
Где это ты в sockets OO увидел???
[trn]Nu v Jave objekty, [/trn]Socket, SSLSocket...
Marmot писал(а): Если ты делаешь через sockets, то ты ВСЁ должен делать и тестировать сам: thread pooling, certificates, proxy etc...
В случае servlets это уже всё написали и протестировали для тебя десятки людей!!!
Вот тебе примерчик твоего servletа написанный за 3 минуты:
[trn]Spasibo. Dejstvitel'no dovol'no prosto.
A eta MarkMServlet vypolnjaetsja v otdel'nom trede dlja kazhdogo HTTP zaprosa? Ja k tomu, chto peremennye klassa oni statik/obshie dlja vseh tredov ili pri kazhdom zapuske svoi?[/trn]
Аватара пользователя
Marmot
Графоман
Сообщения: 39348
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение Marmot »

MarkM писал(а):[trn]A tam vrode kuki kakie-to nado. Esli ja budu iz orakla zapuskat' java storproceduru, to ja ne znaju, kak tam s kukami.[/trn]
А нука напиши поподробнее как это ты собрася делать?
Oracle будет звать servlet?Как?
И нафига тебе там Java, когда есть UTL_HTTP package :-)
MarkM писал(а): A eta MarkMServlet vypolnjaetsja v otdel'nom trede dlja kazhdogo HTTP zaprosa? Ja k tomu, chto peremennye klassa oni statik/obshie dlja vseh tredov ili pri kazhdom zapuske svoi?[/trn]
Один instance на все threads, так что если что надо, то храни это дело в session, это не сложно: get/setAttribute...
MarkM
Пользователь
Сообщения: 113
Зарегистрирован: 24 сен 2003, 21:52

Сообщение MarkM »

Marmot писал(а):
MarkM писал(а):[trn]A tam vrode kuki kakie-to nado. Esli ja budu iz orakla zapuskat' java storproceduru, to ja ne znaju, kak tam s kukami.[/trn]
А нука напиши поподробнее как это ты собрася делать?
Oracle будет звать servlet?Как?
И нафига тебе там Java, когда есть UTL_HTTP package :-)
[trn]
V oracle budet lezhat' SP napisannaja na Jave. Ona dolzhna vziat' nekotorye dannye s udalennoj mashiny, cherez soket ili servlet. I potom ona dolzhna rabotat' ispol'zuja eti dannye.
Tak kak osnovnaja SP budet na jave, to nafiga ispol'zovat' UTL_HTTP?
Hotja mozhno vyzvat' PL/SQL iz Javy, no eto imho izvrat. :)
Kakoj klass ispol'zovat' iz Javy(vmesto UTL_HTTP) dlja raboty s servletom?
[/trn]
Marmot писал(а):
MarkM писал(а): A eta MarkMServlet vypolnjaetsja v otdel'nom trede dlja kazhdogo HTTP zaprosa? Ja k tomu, chto peremennye klassa oni statik/obshie dlja vseh tredov ili pri kazhdom zapuske svoi?[/trn]
Один instance на все threads, так что если что надо, то храни это дело в session, это не сложно: get/setAttribute...
[trn]
A eta Session u kazhdogo treda svoja? Ili tozhe sharenaja?
[/trn][/quote]
Аватара пользователя
Marmot
Графоман
Сообщения: 39348
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение Marmot »

MarkM писал(а): [trn]
V oracle budet lezhat' SP napisannaja na Jave. Ona dolzhna vziat' Tak kak osnovnaja SP budet na jave, to nafiga ispol'zovat' UTL_HTTP?
Hotja mozhno vyzvat' PL/SQL iz Javy, no eto imho izvrat. :)
Kakoj klass ispol'zovat' iz Javy(vmesto UTL_HTTP) dlja raboty s servletom?
[/trn]
Понял, используй вот это: http://jakarta.apache.org/commons/httpc ... tures.html
Самая крутая вещь, закачай, посмотри samples...
Основное преимущество - хорошая поддержка cookies, для sessions в том числе..
MarkM писал(а): [trn]
A eta Session u kazhdogo treda svoja? Ili tozhe sharenaja?
[/trn]
Session это session :-)
В общем случае метод будет выполнятся в разных thread-ax взятых из threadpool-a
Но для того-же клиента у него будет тажа session, если клиент поддерживает cookies конечно :-)
MarkM
Пользователь
Сообщения: 113
Зарегистрирован: 24 сен 2003, 21:52

Сообщение MarkM »

Marmot писал(а):если клиент поддерживает cookies конечно :-)
Эти куки он наверное в файлах хранит? Внутрях Оракла с этим напряг.
Всмысле надо предпринимать доп усилия для разрешения Ява СП писать в файлы ОС.
Аватара пользователя
Marmot
Графоман
Сообщения: 39348
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение Marmot »

MarkM писал(а):
Marmot писал(а):если клиент поддерживает cookies конечно :-)
Эти куки он наверное в файлах хранит? Внутрях Оракла с этим напряг.
Всмысле надо предпринимать доп усилия для разрешения Ява СП писать в файлы ОС.
Нет, не надо файлов, боже, как сильны предрассудки.
Cookie это всего лишь http header :-)
ладно, пользуйся, я сегодня добрый :-)
Вот тебе пример клиента, на надо ему никаких файлов...

Код: Выделить всё

	public static void main(String[] args) {
		String url = "http://www.markm.com/markmservlet";
		HttpClient client = new HttpClient();
		String responseBody = null;
		try {
			PostMethod method = new PostMethod(url);
			NameValuePair clientString = new NameValuePair("client_string", "Hello. I'm klient 'Scott'");
			method.setRequestBody( new NameValuePair[]{clientString});
			client.executeMethod(method);
			responseBody = method.getResponseBodyAsString();
			//responseBody should contain "Hi. take 5."

			Cookie[] cookies = client.getState().getCookies();
			// Display the cookies
			System.out.println("Present cookies: ");
			for (int i = 0; i < cookies.length; i++) {
				System.out.println(" - " + cookies[i].toExternalForm());
			}

			method = new PostMethod(url);
			clientString = new NameValuePair("client_string", "Give me data");
			method.setRequestBody(new NameValuePair[]{clientString});
			client.executeMethod(method);
			responseBody = method.getResponseBodyAsString();
			//responseBody should contain "data: 1 2 'blabla' 3 45 345 'blablabla' 64..."

		} catch (Exception e) {
			e.printStackTrace();
			System.exit(-1);
		}
	}
Ответить