Как запустить приложение на сервере

Программирование Web-приложений и Web-сервисов.

Модератор: Ramzes

ndemidov
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 14.11.2007 (Ср) 16:23
Откуда: Earth planet

Как запустить приложение на сервере

Сообщение ndemidov » 20.11.2009 (Пт) 17:33

Хочу написать многопользовательскую он-лайн игру (вдохновило меня вот это - http://ru.wikipedia.org/wiki/Wumpus ). Думаю надо сделать так, как я делал раньше в desctop'ных играх - чтобы игровой цикл безостановочно работал на сервере. Вот и вопрос:

:?: Как запустить ASP.NET приложение на сервере?
:?: (дополнительный) Как страница-клиент может получать данные с сервера?
Большинство людей не понимает, что великое многообразие и красочность мира будут служить им крепчайшей душевной поддержкой на протяжении всей жизни. Иван Ефремов

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Как запустить приложение на сервере

Сообщение ANDLL » 20.11.2009 (Пт) 20:18

:?: Как запустить ASP.NET приложение на сервере?
Когда превый раз происходит обращение к приложению, оно запускается

:?: (дополнительный) Как страница-клиент может получать данные с сервера?
Через протокол http?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Как запустить приложение на сервере

Сообщение iGrok » 20.11.2009 (Пт) 21:31

ndemidov писал(а): :?: (дополнительный) Как страница-клиент может получать данные с сервера?

Если ты имеешь в виду - получать без обновления страницы, то к твоим услугам технология Ajax.
label:
cli
jmp label

ndemidov
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 14.11.2007 (Ср) 16:23
Откуда: Earth planet

Re: Как запустить приложение на сервере

Сообщение ndemidov » 21.11.2009 (Сб) 10:05

ANDLL писал(а):
:?: Как запустить ASP.NET приложение на сервере?
Когда превый раз происходит обращение к приложению, оно запускается


А какие способы есть? Двойным клтком через Ftp-менеджер подойдёт?
Большинство людей не понимает, что великое многообразие и красочность мира будут служить им крепчайшей душевной поддержкой на протяжении всей жизни. Иван Ефремов

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Как запустить приложение на сервере

Сообщение ANDLL » 21.11.2009 (Сб) 11:02

Нет.
Подойдт просто зайти на любую пустую страницу, скажем с aspx. ПО http
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

ndemidov
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 14.11.2007 (Ср) 16:23
Откуда: Earth planet

Re: Как запустить приложение на сервере

Сообщение ndemidov » 21.11.2009 (Сб) 18:19

Спасибо ANDLL и iGrok.
Теперь начинаю понимать, что я ничего не знаю.

iGrok писал(а):
ndemidov писал(а): :?: (дополнительный) Как страница-клиент может получать данные с сервера?

Если ты имеешь в виду - получать без обновления страницы, то к твоим услугам технология Ajax.

Нет, чтобы страница-клиент у игрока получала переменные.

ANDLL писал(а):Нет.
Подойдт просто зайти на любую пустую страницу, скажем с aspx. ПО http

А это ASP.NET-приложение не прекратитсья выполняться, когда я закрою браузер?
Получается, что у меня будет 2 приложения: одно для клиента с доменом сайта и второе - одно, кот. я буду запускать сам?
Большинство людей не понимает, что великое многообразие и красочность мира будут служить им крепчайшей душевной поддержкой на протяжении всей жизни. Иван Ефремов

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Как запустить приложение на сервере

Сообщение ANDLL » 21.11.2009 (Сб) 18:34

А это ASP.NET-приложение не прекратитсья выполняться, когда я закрою браузер?
Оно прекратит выполняться через некоторое время если к нему никто не будет обращаться.
Получается, что у меня будет 2 приложения: одно для клиента с доменом сайта и второе - одно, кот. я буду запускать сам?
Ась? Ты у меня спрашиваешь?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

ndemidov
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 14.11.2007 (Ср) 16:23
Откуда: Earth planet

Re: Как запустить приложение на сервере

Сообщение ndemidov » 21.11.2009 (Сб) 18:39

Наверно, мне надо было спросить, как работает клиент-серверная часть MMORPG...

А как сделать, чтобы программа на сервере никогда не прекращала работать и связывала игроков между собой?
Большинство людей не понимает, что великое многообразие и красочность мира будут служить им крепчайшей душевной поддержкой на протяжении всей жизни. Иван Ефремов

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Как запустить приложение на сервере

Сообщение ANDLL » 21.11.2009 (Сб) 18:42

Эммм
У тебя клиент как будет с сервером общаться?
Это типа браузерная игра? Или будет еще декстопное приложение?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

ndemidov
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 14.11.2007 (Ср) 16:23
Откуда: Earth planet

Re: Как запустить приложение на сервере

Сообщение ndemidov » 21.11.2009 (Сб) 18:54

Как они общаются я и не знаю.
Только браузерная.
Большинство людей не понимает, что великое многообразие и красочность мира будут служить им крепчайшей душевной поддержкой на протяжении всей жизни. Иван Ефремов

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Как запустить приложение на сервере

Сообщение ANDLL » 21.11.2009 (Сб) 19:33

Тогда зачем ее приложению все время работать?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

ndemidov
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 14.11.2007 (Ср) 16:23
Откуда: Earth planet

Re: Как запустить приложение на сервере

Сообщение ndemidov » 21.11.2009 (Сб) 19:44

ANDLL писал(а):Тогда зачем ее приложению все время работать?


Например, чтобы работал ИИ для ботов, они двигались, тикало игровое время, а потом все действие бота передавалось всем игрокам, у которых открыты страницы.
Большинство людей не понимает, что великое многообразие и красочность мира будут служить им крепчайшей душевной поддержкой на протяжении всей жизни. Иван Ефремов

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Как запустить приложение на сервере

Сообщение ANDLL » 21.11.2009 (Сб) 19:55

Ну можно например поставить приложению большое время жизни.
Но ты ведь понимаешь что все равно оно когда нибудь будет перезапускаться - например сам сервер перезагрузится
Непрерывно и долго работать оно все равно не сможет
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

ndemidov
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 14.11.2007 (Ср) 16:23
Откуда: Earth planet

Re: Как запустить приложение на сервере

Сообщение ndemidov » 21.11.2009 (Сб) 20:16

Может, тогда записывать данные в БД, а потом страницы-клиенты будут скачивать эту БД
Большинство людей не понимает, что великое многообразие и красочность мира будут служить им крепчайшей душевной поддержкой на протяжении всей жизни. Иван Ефремов

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Как запустить приложение на сервере

Сообщение ANDLL » 21.11.2009 (Сб) 21:02

:?:
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

ndemidov
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 14.11.2007 (Ср) 16:23
Откуда: Earth planet

Re: Как запустить приложение на сервере

Сообщение ndemidov » 28.11.2009 (Сб) 13:12

Тогда сформулирую задачу вот так:

Несколько раз в день по серверному времени генерируется случайное число (не для каждого отдельного клиента, а вообще для всех). Соответственно, если кто-то заходит на сайт, то это число отображается где-нибудь сбоку.

Вопрос: как сделать это программно?
Большинство людей не понимает, что великое многообразие и красочность мира будут служить им крепчайшей душевной поддержкой на протяжении всей жизни. Иван Ефремов

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Как запустить приложение на сервере

Сообщение ANDLL » 28.11.2009 (Сб) 13:27

Класть число в файл на сервере и качать его для отображения.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

ndemidov
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 14.11.2007 (Ср) 16:23
Откуда: Earth planet

Re: Как запустить приложение на сервере

Сообщение ndemidov » 28.11.2009 (Сб) 13:56

А как бы это программно? Чтобы генерировалось 4 раза в минуту, допустим, руками невозможно.
Большинство людей не понимает, что великое многообразие и красочность мира будут служить им крепчайшей душевной поддержкой на протяжении всей жизни. Иван Ефремов

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Как запустить приложение на сервере

Сообщение ANDLL » 28.11.2009 (Сб) 14:00

В чем проблема то программно генерировать число раз в x времени и кидать в файл?
Timer и IO.FileStream
Если это web-приложение то можно пускать таймер к примеру в Application_Start файла Global.asax
Если твое "ядро" будет в виде windows-сервиса то в Service_Start естественно
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

ndemidov
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 14.11.2007 (Ср) 16:23
Откуда: Earth planet

Re: Как запустить приложение на сервере

Сообщение ndemidov » 28.11.2009 (Сб) 14:19

Web-приложение, с сервисами я не знаком.

А если на сайт перейдут 20 человек, то и файл будет записываться 20 раз, а надо, чтобы Web-приложение запускалось 1 раз.
Большинство людей не понимает, что великое многообразие и красочность мира будут служить им крепчайшей душевной поддержкой на протяжении всей жизни. Иван Ефремов

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Как запустить приложение на сервере

Сообщение ANDLL » 28.11.2009 (Сб) 15:31

Оно запускается один раз
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

ndemidov
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 14.11.2007 (Ср) 16:23
Откуда: Earth planet

Re: Как запустить приложение на сервере

Сообщение ndemidov » 28.11.2009 (Сб) 19:28

Я не знал. Спасибо.

Значит подобный код нужно прописывать в Application_Start файла Global.asax ?

А переменные из "Application_Start файла Global.asax" будут видны в страничках? - тогда не придётся в файл записывать.
Большинство людей не понимает, что великое многообразие и красочность мира будут служить им крепчайшей душевной поддержкой на протяжении всей жизни. Иван Ефремов

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Как запустить приложение на сервере

Сообщение ANDLL » 28.11.2009 (Сб) 19:34

Понятия не имею на чет переменных самого asax. Но что мешает просто создать модуль и хранить данные в нем?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

ndemidov
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 14.11.2007 (Ср) 16:23
Откуда: Earth planet

Re: Как запустить приложение на сервере

Сообщение ndemidov » 28.11.2009 (Сб) 20:05

Отсутствие знания, что так можно :) Спасибо, буду пробовать.
Большинство людей не понимает, что великое многообразие и красочность мира будут служить им крепчайшей душевной поддержкой на протяжении всей жизни. Иван Ефремов

ndemidov
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 14.11.2007 (Ср) 16:23
Откуда: Earth planet

Re: Как запустить приложение на сервере

Сообщение ndemidov » 13.12.2009 (Вс) 10:03

Как поставить приложению большое время жизни? Так и не понял. Session.TimeOut = 500 не делает ни чего.

Серверный таймер в Global.asax запускать лучше с помощью System.Threading.Timer ? работает как надо, но не может вызывать
- Как лучше клиентский таймер на странице сделать: ЭУ Timer? (Только там вся страница обновляется)

Timer Ajax запускает Pre_Init страницы, т.е. всё обновляется заново

Я вот подумал... А если я всё таки решу делать клиентское приложение .exe файлом. То как передавать данные от сервера к клиенту (ANDLL предложил записывать данные в файл, а потом скачивать), и от клиента к серверу (совсем не понимаю).

P.S. посмотрю как это выглядит на Silverlight.
Большинство людей не понимает, что великое многообразие и красочность мира будут служить им крепчайшей душевной поддержкой на протяжении всей жизни. Иван Ефремов

ndemidov
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 14.11.2007 (Ср) 16:23
Откуда: Earth planet

Увеличить время жизни ASP. NET приложения

Сообщение ndemidov » 16.12.2009 (Ср) 9:39

Пробовал прописывать Session.TimeOut = 1400 (и др. значения) (по умолчанию стоит 20). Св-во меняется, но примерно через 20 минут приложение выгружается из памяти сервера. Тогда я подумал написать бота, кот. с моего комп. будет заходить каждые 10 минут на сайт и "продлевать жизнь" (а ночью у меня комп. выключен, и инт-т не всё время включён), но нескл. бы часов приложение бы оставалось в памяти. Потом мне пришла наивная идея, чтобы приложение открывала свою страничку само. Каждые 10 минут запускается такой код:
Код: Выделить всё
Using downloadClient As New Net.WebClient
                Dim result As String = downloadClient.DownloadString(sPage)
End Using

Вроде работает и за эту ночь приложение оставалось в памяти. А сессия выгружается примерно через 20 минут.
P.S. Думаю запускать этот код каждые 5 минут.

--- ADDED 19 Дек.:
За всё время пока ни разу не перезапускалось, вывод: рабочий способ.
Большинство людей не понимает, что великое многообразие и красочность мира будут служить им крепчайшей душевной поддержкой на протяжении всей жизни. Иван Ефремов

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Re: Как запустить приложение на сервере

Сообщение FaKk2 » 22.12.2009 (Вт) 9:27

Мда, ну товарищи вы и наворотили. :)

Приложение под ASP.NET не должно работать непрерывно. Более того, IIS принудительно убивает процесс после двадцати минут (по дефолту). Увеличивать этот тайм-аут чревато, поскольку IIS создает новый процесс на каждый http запрос - представляешь сколько памяти сожрется при более-менее активном пользовании?

А по уму надо делать так:
1. Основную логику выделить в WCF сервис который хостится в обычном Windows Service.
2. При необходимости создавать worker processes используя blocking queue.
3. ASP.NET приложение опрашивает вышеупомянутый WCF сервис и отдает клиенту нужную информацию.

Таким образом мухи от котлет отдельно. ASP.NET приложение занимается тем чем бог велел: получает запросы клиента и отдает ответ. А виндовый сервис крутится непрерывно обрабатывая запросы по каналам WFC.
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Как запустить приложение на сервере

Сообщение ANDLL » 22.12.2009 (Вт) 10:19

IIS создает новый процесс на каждый http запрос - представляешь сколько памяти сожрется при более-менее активном пользовании?
Это бред.
Нуи все остальное что основывается на этой предпосылке
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

ndemidov
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 14.11.2007 (Ср) 16:23
Откуда: Earth planet

Re: Как запустить приложение на сервере

Сообщение ndemidov » 22.12.2009 (Вт) 17:32

FaKk2 писал(а):Мда, ну товарищи вы и наворотили. :)

Приложение под ASP.NET не должно работать непрерывно. Более того, IIS принудительно убивает процесс после двадцати минут (по дефолту). Увеличивать этот тайм-аут чревато, поскольку IIS создает новый процесс на каждый http запрос - представляешь сколько памяти сожрется при более-менее активном пользовании?

Понятия не имею как это всё работает, но рискну предположить, что FaKk2 имел ввиду сессия вместо процесс . Кстати, способ предложенный мной не увеличивает тайм-аут сессии: будет продлеваться только сессия сервера; а если всё же каждые 5 минут будут создаваться новые (из-за этого способа), то каждая старая будет удаляться через 20 минут.

FaKk2 писал(а):А по уму надо делать так:
1. Основную логику выделить в WCF сервис который хостится в обычном Windows Service.
2. При необходимости создавать worker processes используя blocking queue.
3. ASP.NET приложение опрашивает вышеупомянутый WCF сервис и отдает клиенту нужную информацию.

Таким образом мухи от котлет отдельно. ASP.NET приложение занимается тем чем бог велел: получает запросы клиента и отдает ответ. А виндовый сервис крутится непрерывно обрабатывая запросы по каналам WFC.

Я ничего не знаю про WCF сервис, worker processes, blocking queue и как опрашивать WCF сервис. WCF сервис случаем не ASP.NET Web Service (тип проекта)?

Думаю хороший вариант - сделать .exe приложение, но я не знаю одного: как будет происходить связь между .exe-клиентом и тем, что будет "крутиться" на сервере. Меня просто бесит, что кнопка (в ASP.NET-приложении) и таймер-Ajax перезагружают страницу.


P.S. С наступающим! :D
Большинство людей не понимает, что великое многообразие и красочность мира будут служить им крепчайшей душевной поддержкой на протяжении всей жизни. Иван Ефремов

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Как запустить приложение на сервере

Сообщение Antonariy » 22.12.2009 (Вт) 18:45

ndemidov писал(а):Понятия не имею как это всё работает, но рискну предположить, что FaKk2 имел ввиду сессия вместо процесс .
FaKk2 должен был иметь ввиду поток.
ndemidov писал(а):Я ничего не знаю про WCF сервис, worker processes, blocking queue и как опрашивать WCF сервис. WCF сервис случаем не ASP.NET Web Service (тип проекта)?
Нет, WCF сервис это обычный windows-сервис, список которых невозбранно доступен через Панель управление — Администрирование — Сервисы.
ndemidov писал(а):Думаю хороший вариант - сделать .exe приложение,
Сервис это как правило и есть exe.
ndemidov писал(а):но я не знаю одного: как будет происходить связь между .exe-клиентом и тем, что будет "крутиться" на сервере.
Interprocess communication
Лучший способ понять что-то самому — объяснить это другому.

След.

Вернуться в ASP.NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

    TopList