Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Распределённые приложения и сеть > Вопрос по реализации распределенного приложения


Автор: arsenium 15.5.2010, 15:01
Имеем в наличии локальную сеть из 20 компьютеров, все они находятся в одном домене. являемся администратором этой сети и имеем соответствующие полномочии. Подскажите как реализовать следующее: 
програмку наподобие Диспетчера задач,(достаточно данные о запущенных процессах) и мониторить их в режиме реального времени. Т.е. запускаем ее на любом из этих 20 компьютеров с правами администратора, и мониторим процессы(название, время запуска, память) с нескольких компьютеров. С помощью WMI получается дергать информацию, но как сделать это в реальном времени? зациклить? (наверное это опасно)
Или запускаем клиент на одном компе а на нескольких специальных агент, который бы нам отдавал эту информацию? только как это лучше реализовать?
Может ктонибудь в общих чертах набрасать модель реализации данного приложения?

Автор: arsenium 16.5.2010, 14:29
единоразово делаю так:

Код

try
            {
                
                ConnectionOptions options = new ConnectionOptions();
                options.Username = "test";
                options.Password = "test123";

                ManagementScope scope = new ManagementScope("\\\\192.168.0.102\\root\\cimv2", options);
                scope.Connect();

                ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_Process");
                ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
                ManagementObjectCollection queryCollection = searcher.Get();

                foreach (ManagementObject p in queryCollection3)
                {
                    
                        string[] methodArgs3 = new String[2];
                        p.InvokeMethod("GetOwner", methodArgs3);
                       
                        double WSS = Convert.ToDouble(p["WorkingSetSize"].ToString()) / 1024;
                        string[] prcdetails = new string[] { p["Name"].ToString(), methodArgs3[0], p["ProcessId"].ToString(), WSS.ToString() + " KB", p["Priority"].ToString() };
                        
                        ListViewItem proc = new ListViewItem(prcdetails);
                        lvprocesslist.Items.Add(proc);
                    
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }


где lvprocesslist это ListView.

Будет ли правильно запускать этот код в цикле, что бы стараться в реальном времени получать данные о процессах? 
Как бы было правильно это реализовать?

Автор: Miller_time 19.5.2010, 11:54
Я делал примерно такую же штуку но только для этого использовал потоки 

http://www.rsdn.ru/article/dotnet/CSThreading1.xml

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)