Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обмен данными между приложениями. 
V
    Опции темы
NightmareZ
Дата 10.10.2009, 16:40 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



Как можно передать строку из одного приложения в другое?


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
Ram1reS
Дата 10.10.2009, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Файлом, БД, .net remoting, wcf, web-service, msmq, тупо сокеты, etc. ...

Это сообщение отредактировал(а) Ram1reS - 10.10.2009, 17:29
--------------------
 
PM MAIL ICQ   Вверх
Medved
Дата 10.10.2009, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

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



Да как угодно. Начиная от простейшего метода, через общий файл (текстовой или какой либо другой) и заканчивая специализированными технологиями для интеграции приложений. 
Можешь БД использовать, можешь веб-сервис, можешь локальный сервис на компьютере, или COM взаимодействие. 

Все зависит от контекста и конкретной задачи.

Код

Direct TCP Networking
    System.Net
Message Queuing
    System.Messaging
Распределенные вычисления
    System.Runtime.Remoting
XML веб-сервисы
    System.Web.Services


Вот хорошая презентация на эту тему: Стратегия выбора протоколов для удаленного взаимодействия между слоями приложения


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
NightmareZ
Дата 10.10.2009, 19:47 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



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

Цитата(Ram1reS @  10.10.2009,  17:28 Найти цитируемый пост)
Файлом, БД, .net remoting, wcf, web-service, msmq, тупо сокеты, etc. ...


Файл не в тему, ибо не вижу смысла что-то на диске создавать для такой мелочи. БД тем более.
Сокеты, remoting, wcf... не может какой-нить файрвол это дело блочить?
Msmq под дотНетом есть?

Добавлено через 12 минут и 58 секунд
Сборку System.Messaging.dll не могу подключить. Добавляю референс, а студия пишет, что сборки нету....

user posted image


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
Medved
Дата 10.10.2009, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

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



Цитата

Технология Message Queuing позволяет работающим в различное время приложениям взаимодействовать в гетерогенных сетях и системах, которые могут временно отключаться от сети. Приложения отправляют, получают и считывают (то есть читают без удаления) сообщения из очередей. Message Queuing — необязательный компонент операционных систем Windows 2000 и Windows NT, поэтому его следует устанавливать отдельно.

Класс MessageQueue — это упаковщик службы Message Queuing. Существует несколько версий Message Queuing, поэтому при использовании класса MessageQueue его поведение в каждом случае будет несколько другим, в зависимости от используемой операционной системы
.

http://msdn.microsoft.com/ru-ru/library/sy...pDownFilterText


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
NightmareZ
Дата 10.10.2009, 23:17 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



А проще варинт есть?

З.Ы. Сокеты в этом деле плохи тем, что, например, какое-либо другое приложение может использовать тот же порт.


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
Crypton
Дата 11.10.2009, 01:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 9.10.2006
Где: США, Санкт-Петерб ург

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



Может лучше Mutex?
--------------------
«Все, что вы знаете — ложь» Теория мироздания 
PM MAIL WWW ICQ Skype   Вверх
NightmareZ
Дата 11.10.2009, 01:33 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



Цитата(Crypton @  11.10.2009,  01:31 Найти цитируемый пост)
Может лучше Mutex?


А что с ним?


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
Medved
Дата 11.10.2009, 02:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

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



Цитата(NightmareZ @  11.10.2009,  04:33 Найти цитируемый пост)
А что с ним? 

С помощью мьютексов можно запретить повторный запуск приложения. Примеров в интернете много решающих эти задачи.

Но это не решает вопроса о передачи строки из одного приложения, в другое.
Используй реестр или временный файл. Это конечно не кошерно, но практично.  

А вообще для меня такого рода прблемы служат индикаторм того, что программист начинает гордить куйню.  Горе от ума вообщем.

Это сообщение отредактировал(а) Medved - 11.10.2009, 02:22


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
NightmareZ
Дата 11.10.2009, 02:50 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



Цитата(Medved @  11.10.2009,  02:16 Найти цитируемый пост)
С помощью мьютексов можно запретить повторный запуск приложения.

А.... м....... ну я вроде не спрашивал, как запретить повторный запуск.......

Цитата(Medved @  11.10.2009,  02:16 Найти цитируемый пост)
Используй реестр или временный файл. Это конечно не кошерно, но практично.  

Если два приложения одновременно будут писать в файл/реестр?
Как передать первому экземпляру приложения информацию о том, что нужно прочитать этот файл/ветку реестра, ибо информация в нём/ней обновилась?

Цитата(Medved @  11.10.2009,  02:16 Найти цитируемый пост)
А вообще для меня такого рода прблемы служат индикаторм того, что программист начинает гордить куйню.  Горе от ума вообщем.

Ну так просвяти, как избавиться от этой проблемы? Как бы поступил ты?

Это сообщение отредактировал(а) NightmareZ - 11.10.2009, 02:52


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
Medved
Дата 11.10.2009, 04:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

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



Цитата(NightmareZ @  11.10.2009,  05:50 Найти цитируемый пост)
Ну так просвяти, как избавиться от этой проблемы? Как бы поступил ты?

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

Это сообщение отредактировал(а) Medved - 11.10.2009, 05:07


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Medved
Дата 11.10.2009, 05:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

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



Просто понимаешь, программирование существует уже относительно давно, и многие задачи уже решали до тебя другие уже 1000 раз. 
Если ты изобретаешь новый язык программирования, то оно понятно, там еще нужно поломать голову, как сделать что-то, что до тебя еще никто не делал. 
Но все остальные вопросы уже давно обдуманы умными бородатыми дядьками, и готовые варианты реализованы в виде конкретных решений, называемых средой разработки (на уровне языков, платформ, паттернов и т.д.).

Вопросы как сделать то, или другое обычно исходят от неумения или лени читать документацию, которая поставляется с платформой, на которой реализуется решение. И особенно это относятся к тем случаям,  которые касаются инфраструктурного кода (в отличии от прикладного уровня,  непосредственно реализующего бизнес-процессы и задачи конечного пользователя) 
Зачастую, задачи, которые реаются простым и изящным способом, неопытные программисты начинают решать "через америку". В смысле, что тебе надо добраться до соседнего дома в Рязани, но ты для этого фрахтуешь частный самолет, летишь через Германию, там пересаживаешься на Боинг, перелетаешь через Атлантику в Нью-Йорк, а от туда на параходе в порт Находка, потом на собачьих упряжках до Новосиба, а от туда уже на поезде до Рязани, потом на такси до нужного дома.  Хотя всего-то надо было пройти 10 метров пешком. 
И это довольно распространенная ситуация в отечественном программировании. Отчасти это объясняется особенностями преподавания и обучения программированию на территории бывшего СНГ, когда вместо того, что обучать программированию, учат кодингу. И книги соответственно по кодированию вместо того чтобы называть их "руководство по кодингу", называют "руководство по программированию".
А кодинг и программирование - это разные понятия. Так как программирование включает в себя линейку - проектирование-кодирование-тестирование. 

Мне вот опыт подсказывает что в данном случае возможна именна такая ситуация.


Это сообщение отредактировал(а) Medved - 11.10.2009, 05:28


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Rohoss
Дата 11.10.2009, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начальник интернета
***


Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

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



Я бы использовал  System.Runtime.Remoting.Channels.Ipc

Добавлено через 6 минут и 6 секунд
Цитата(NightmareZ @  10.10.2009,  19:47 Найти цитируемый пост)
Запускается одна копия приложения. Затем вторая. Вторая обнаруживает, что одна копия уже запущена, завершает свою работу и передаёт первой копии параметры командной строки, если они есть.


Medved, ИМХО, требования вполне адекватные… Мне кажется, подобным образом работают, например видеопроигрыватели, например тот же LightAlloy 





--------------------
Файловый менеджер Explorer.Net скачать  video
PM ICQ   Вверх
Medved
Дата 11.10.2009, 14:05 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

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



Цитата(Rohoss @  11.10.2009,  14:53 Найти цитируемый пост)
Medved, ИМХО, требования вполне адекватные… Мне кажется, подобным образом работают, например видеопроигрыватели, например тот же LightAlloy 

С таким же успехом можно убить певрое (ненужное приложение) и запустить вторую копию, в которую и передаются все данные. 

Цитата(Rohoss @  11.10.2009,  14:53 Найти цитируемый пост)
 System.Runtime.Remoting.Channels.Ipc

Угу, микроскопом гвозди забивать - вот как это называется. 


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
NightmareZ
Дата 11.10.2009, 14:11 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



Цитата(Medved @  11.10.2009,  05:03 Найти цитируемый пост)
Мне вот опыт подсказывает что в данном случае возможна именна такая ситуация.

Обгадили с ног до головы. Косолапый считает, что я "неопытный программист", "неумеющий и ленящийся читать документацию", "начитавшийся книг по кодингу". Вот чесно, в реальной жизни я бы предпочёл за такой подход дать по морде, но так как на форумах это не принято и физически нереализуемо, то попрошу лишь не разводить свою философию в моих темах.

Цитата(Rohoss @  11.10.2009,  11:53 Найти цитируемый пост)
Я бы использовал  System.Runtime.Remoting.Channels.Ipc

Ок, спасибо, попробую.

Цитата(Rohoss @  11.10.2009,  11:53 Найти цитируемый пост)
Medved, ИМХО, требования вполне адекватные… Мне кажется, подобным образом работают, например видеопроигрыватели, например тот же LightAlloy 

А ещё так работают, например, Paint.NET, Photoshop....

Цитата(Medved @  11.10.2009,  14:05 Найти цитируемый пост)
С таким же успехом можно убить певрое (ненужное приложение) и запустить вторую копию, в которую и передаются все данные. 

Пойди погуляй. Меня не интересует твои измышлизмы по сабжу. Я задал конкретный вопрос и хочу лишь ответа на него.


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


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

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


 




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


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

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