Объявление

Collapse
No announcement yet.

C#.NET - обмен данными между программами?

Collapse
X
 
  • Filter
  • Время
  • Show
Clear All
new posts

  • #31
    Сообщение от maximus3d
    ммм... а как послать сообшение? буду шас гуглить.
    SendMessage/PostMessage

    Это одна из самых важный, главных и простых функций в Windows API

    Сообщение от maximus3d
    8 баит, конечно маловато, но ето тоже вариант!
    Ты ж сказал 3 байта. Спецификации меняются прямо на ходу...

    -

    Comment


    • #32
      Еще можно воспользоваться очередями...
      На C# написать простейшую программу для этого - дело 3х-4х строк.

      Comment


      • #33
        Сообщение от Павел
        Еще можно воспользоваться очередями...
        На C# написать простейшую программу для этого - дело 3х-4х строк.
        Суший пустяк, только msmq поставить придется. Еще можно написать простейшую программу - 3-4 строки, не больше - для передачи данных по SOAP через IIS (его тоже придется поставить, конечно). Но все-таки путь настоящего джедая - это ловить SendMessage под .NET. Гарантирует незаменимость написавшего надолго.

        Если серьезно, то .net remoting для обмена данными между двумя программами (обе под .NET) - то, что доктор прописал.

        Comment


        • #34
          Сообщение от прохожий
          Сообщение от Павел
          Еще можно воспользоваться очередями...
          На C# написать простейшую программу для этого - дело 3х-4х строк.
          Суший пустяк, только msmq поставить придется. Еще можно написать простейшую программу - 3-4 строки, не больше - для передачи данных по SOAP через IIS (его тоже придется поставить, конечно). Но все-таки путь настоящего джедая - это ловить SendMessage под .NET. Гарантирует незаменимость написавшего надолго.

          Если серьезно, то .net remoting для обмена данными между двумя программами (обе под .NET) - то, что доктор прописал.
          remoting достаточно тормозной протокол... имхо сообщения или pipes.
          www.dinkum.me

          Comment


          • #35
            Сообщение от прохожий
            Но все-таки путь настоящего джедая - это ловить SendMessage под .NET. Гарантирует незаменимость написавшего надолго.

            Если серьезно, то .net remoting для обмена данными между двумя программами (обе под .NET) - то, что доктор прописал.
            Да, если на обоих концах - .NET (правда, MS сейчас говорит, что WCF будет заменять remoting). А что из-под флеша лучше использовать - не знаю. Интеграция с С/С++ dll у них прямо в документации расписана, а как там сделать dll под .NET, еще разбираться надо.

            Не знаю насчет незаменимости того, кто будет ловить SendMessage под .NET. В документации сходу находится класс NativeWindow. Скажу честно, я его никогда не использовал, а remoting использовал, но я думаю, что мне бы проще было для простенькой программы разобраться с ловлей сообщений, чем вспоминать, как конфигурируется remoting.

            -

            Comment


            • #36
              remoting достаточно тормозной протокол... имхо сообщения или pipes.
              Сдается мне, что не тормознее WCF

              Кстати, pipes - это выход, причем далеко не самый худший К тому же, shared memory здесь еще не упоминали, как мне кажется. Правда это уже будет unmanaged код, но что зато быстрее, чем все вышеперечисленные способы, особенно для тяжелых данных - но тогда обе программы должны крутиться на одном хосте, конечно.

              Еще неплохо бы sockets использовать, если программы на разных хостах, а требуется быстро передать данные. Все ваши MSMQ, WCF, remoting и иже с ними - есть не что иное, как высокоуровневые слои над теми же TCP/UDP.

              А вообще - всем читать про IPC
              Когда я говорю, у всех такое ощущение, что я - брежу.

              Comment


              • #37
                Сообщение от Power
                remoting достаточно тормозной протокол... имхо сообщения или pipes.
                Сдается мне, что не тормознее WCF

                Кстати, pipes - это выход, причем далеко не самый худший К тому же, shared memory здесь еще не упоминали, как мне кажется. Правда это уже будет unmanaged код, но что зато быстрее, чем все вышеперечисленные способы, особенно для тяжелых данных - но тогда обе программы должны крутиться на одном хосте, конечно.

                Еще неплохо бы sockets использовать, если программы на разных хостах, а требуется быстро передать данные. Все ваши MSMQ, WCF, remoting и иже с ними - есть не что иное, как высокоуровневые слои над теми же TCP/UDP.

                А вообще - всем читать про IPC
                Я хотел WM_COPYDATA упомянуть но потом подумал что гемороя там будет слишком много

                Comment


                • #38
                  Я хотел WM_COPYDATA упомянуть но потом подумал что гемороя там будет слишком много
                  Ну если знаешь как (т.е. уже делал), то геморроя становится в разы меньше
                  Когда я говорю, у всех такое ощущение, что я - брежу.

                  Comment


                  • #39
                    memory mapped file
                    у microsoft'а и code block для этого где-то есть - бери и вставляй в свой .net код

                    Comment


                    • #40
                      Сообщение от Power
                      remoting достаточно тормозной протокол... имхо сообщения или pipes.
                      Сдается мне, что не тормознее WCF

                      Кстати, pipes - это выход, причем далеко не самый худший К тому же, shared memory здесь еще не упоминали, как мне кажется. Правда это уже будет unmanaged код, но что зато быстрее, чем все вышеперечисленные способы, особенно для тяжелых данных - но тогда обе программы должны крутиться на одном хосте, конечно.
                      я на 2.0 работаю, с новыми приблудами (3.х и еже с ним) еще на работал.
                      shared memory == unnamed piped, или я не прав?
                      в 3.х пайпы уже встроены (system.io.pipes), на днях читал в апрельском msdnmag.

                      Сообщение от Power
                      Еще неплохо бы sockets использовать, если программы на разных хостах, а требуется быстро передать данные. Все ваши MSMQ, WCF, remoting и иже с ними - есть не что иное, как высокоуровневые слои над теми же TCP/UDP.

                      А вообще - всем читать про IPC
                      тебя послушать Леха, так для того чтобы передать 3 байта между аппами нужно писать свои драйвера
                      www.dinkum.me

                      Comment


                      • #41
                        Сообщение от RussKie
                        Сообщение от Power
                        Еще неплохо бы sockets использовать, если программы на разных хостах, а требуется быстро передать данные. Все ваши MSMQ, WCF, remoting и иже с ними - есть не что иное, как высокоуровневые слои над теми же TCP/UDP.

                        А вообще - всем читать про IPC
                        тебя послушать Леха, так для того чтобы передать 3 байта между аппами нужно писать свои драйвера
                        Это мне напоминает разговор года три назад в fido7.russian.z1. Кто-то описал свою проблему, какую-то там коммуникацию нужно было между машинами устроить, народ начал предлагать разные решения, долго обсуждали что-то в меру навороченное, а потом кто-то сказал, что, ребята, ерунда все это, не нужно огород городить, там достаточно программку сделать, которая раз в день будет паковать все в файл и посылать его на сервер по ftp . В ответ на что автор исходного вопроса возразил: "Ну да, а в резюме я что себе напишу? Посылал файлы по ftp??".

                        -

                        Comment


                        • #42
                          тебя послушать Леха, так для того чтобы передать 3 байта между аппами нужно писать свои драйвера
                          Не, я как раз намекаю на то, что для того, чтобы передать 3 байта, не обязательно использовать такие тяжелые кувалды как remoting или WCF, которые здесь так сильно рекомендуют. Достаточно на одном конце двумя-тремя командами открыть сокет и послать эти 3 байта, а на другом - двумя-тремя командами прочитать данные с этого сокета, не заворачивая все это в мегапротоколы. Просто и доступно. Гвозди можно забивать маленьким молотком, пневматической кувадлой тоже можно, но имхо не совсем кошерно.

                          Касательно unnamed pipe = shared memory - я бы не сказал. Все-таки немного разные принципы
                          Когда я говорю, у всех такое ощущение, что я - брежу.

                          Comment


                          • #43
                            Сообщение от Power
                            Не, я как раз намекаю на то, что для того, чтобы передать 3 байта, не обязательно использовать такие тяжелые кувалды как remoting или WCF, которые здесь так сильно рекомендуют. Достаточно на одном конце двумя-тремя командами открыть сокет и послать эти 3 байта, а на другом - двумя-тремя командами прочитать данные с этого сокета, не заворачивая все это в мегапротоколы. Просто и доступно. Гвозди можно забивать маленьким молотком, пневматической кувадлой тоже можно, но имхо не совсем кошерно.
                            М1
                            www.dinkum.me

                            Comment


                            • #44
                              Пока что остановился на TCP sockets. Но возник следуюши вопрос:

                              Как запустить прогу, написаную под .net на компе без .net framework?

                              все reference сделал copy local - не помогает. может потому, что в reference нету system.net и .net.sockets?
                              ну вот, еще и укулели

                              Comment


                              • #45
                                Сообщение от maximus3d
                                Но возник следуюши вопрос:

                                Как запустить прогу, написаную под .net на компе без .net framework?
                                Стандартно - никак.
                                Хотя вроде есть 3rd party tools, типа такого, которые говорят, что умеют это делать.
                                Но оно тебе надо? Может, проще без дотнета написать?

                                -

                                Comment

                                Working...
                                X