Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемАртем Шулепин
1 Технология удаленного доступа к объектам Remoting
2 2. Распределенные приложения Распределенное приложение это приложение, в котором обработка происходит на двух или нескольких компьютерах, а, значит, и обрабатываемые данные также являются распределенными. Современная технология распределенных приложений должна быть эффективной, расширяемой, поддерживающей транзакции, позволяющей взаимодействовать с другими технологиями, обладающей большими возможностями настройки, поддерживать работу в Интернет и т. д.
3 3. Виды распределенных архитектур Модульное программирование Клиент-серверные (двухуровневые) архитектуры Многоуровневые архитектуры Одноранговые архитектуры
4 4. Модульное программирование Один из фундаментальных приемов ограничения сложности - разделение кода на отдельные части по функциональному назначению. Такой прием можно применять на разных уровнях путем объединения кода в процедуры, процедур в классы, классов компоненты, и т.д. Распределенные приложения не только получили большие преимущества от использования данной концепции, но и помогают обеспечить ее применение, так как модульность необходима для распределения кода по разным компьютерам. Фактически основные категории распределенных архитектур различаются степенью ответственности, возлагаемой на отдельные модули, и способами их взаимодействия.
5 5. Клиент-серверные архитектуры Клиент-сервер это наиболее ранняя и фундаментальная из распределенных архитектур. В широком смысле это просто клиентский процесс, запрашивающей обслуживание у серверного процесса. Обычно клиентский процесс отвечает за уровень представления (или пользовательский интерфейс). На этом уровне выполняется проверка введенных пользователем данных, выполнение вызова сервера и применение некоторых бизнес-правил. Сервер выступает в качестве механизма исполнения клиентских запросов путем применения прикладных алгоритмов и взаимодействия с такими ресурсами, как базы данных и файловые системы. Очень часто у одного сервера бывает много клиентов. Следует отметить, что роли клиента и сервера в общем случае не обязательно исполняются разными компьютерами.
6 6. Многоуровневые архитектуры Обычно двухуровневые архитектуры легко реализуемы, но имеют проблемы масштабируемости. В трехуровневых архитектурах для решения различных задач используется промежуточный уровень. Уровень представления Бизнес-уровеньУровень данных БД Приложение Windows Forms Internet Explorer Объект Бизнес-правило Объект Бизнес-правило Объект доступа к данным Объект доступа к данным Объект доступа к данным
7 7. Одноранговые архитектуры В некоторых случаях целесообразно использовать модель более тесного взаимодействия, в которой границы между клиентом и сервером размыты. Подобная организация применяется в сценариях рабочих групп, так как основная задача подобных распределенных приложений совместное использование информации и средств обработки, Исключительно одноранговая (peer-to-peer) среда состоит из множества отдельных узлов без центрального сервера. В отсутствие общеизвестного (well-known) главного сервера необходим механизм, позволяющий узлам отыскивать друг друга. Обычно для этого используются приемы на основе широковещательных сообщений или некоторые предопределенные параметры конфигурации.
8 8. Одноранговая архитектура Узел
9 9. Преимущества распределенных приложений Отказоустойчивость (система должна сохранять работоспособность при сбоях в ней. При построении отказоустойчивой системы применяют избыточность. Распределение копий функциональных модулей по разным узлам повышает вероятность того, что сбой одного узла не повлияет на избыточные объекты, на других узлах); Масштабируемость - это способность системы выдерживать увеличивающуюся нагрузку лишь с небольшим снижением производительности (Достигается путем распределения разных функциональных частей приложения по разным узлам. ); Администрирование - управление аппаратной и программной конфигурацией большой сети ПК (Наиболее удобный вариант - перенести наиболее часто изменяющиеся программы в централизованное хранилище и обеспечить к нему удаленный доступ).
10 10. Архитектура Remoting Рассмотрим архитектуру, которая позволяет клиенту связываться с удаленным объектом. Когда клиент создает экземпляр удаленного объекта, то он получает заместителя (прокси) для доступа к объекту вместо самого объекта. Прокси предоставляет такой же интерфейс, как и реальный объект. Когда клиент вызывает метод или получает доступ к полю или свойству прокси, то за передачу запроса к удаленному объекту отвечает прокси.
11 11. Инфраструктура Remoting состоит из четырех главных компонентов: Рабочая среда Remoting – отвечает за динамическое создание прокси от имени клиента. Она также выполняет инициализацию подходящего канала связи на сервере, предназначенного для ожидания входящих запросов. Прокси - Прокси-объект отвечает за получение пользовательских вызовов метода. Как только получен такой вызов, прокси обеспечивает получение помощи от подходящего форматера и транспорт для передачи параметров удаленному объекту.
12 12. Средство форматирования (форматтер)- отвечает за сериализацию параметров в формат, подходящий для передачи. Remoting поставляется в комплекте с двумя форматтерами 0 двоичным и SOAP. Канал связи – обеспечивает пересылку сообщений между клиентом и сервером. Канал связи со стороны клиента отвечает за посылку сообщения с помощью назначенного транспортного протокола. Канал связи со стороны сервера осуществляет мониторинг входящих сообщений и передачу этих сообщений подходящему форматтеру. Remoting поставляется с двумя каналами связи – TCP и HTTP.
13 13. Инфраструктура Remoting
14 14. Этапы создания распределенного приложения Создание интерфейса (.dll); Реализация интерфейса (.dll); Создание сервера; Создание клиента.
15 15. Создание интерфейса File / New / Project / ClassLibrary
16 16. Программный код интерфейса (проект Interface1) using System; namespace Interface1 { public interface MyInterface { string method1(); string method2(); }
17 17. Создание интерфейса Откомпилировать проект; В каталоге /bin/Debug появляется файл Interface1.dll
18 18. Реализация интерфейса Интерфейс реализуется в тестируемом объекте (проект Object1); Для создание проекта используется dll: File / New/ Project / ClassLibrary В каталог bin/Debug копируется файл Interface1.dll; В окне проекта Solution Explorer добавляются ссылки (add References) на Interface1.dll (через Browse…) и System.Runtime.Remoting.
19 19. Подключение ссылок
20 20. Программный код тестируемого объекта (проект Object1) using System; using Interface1; namespace Object1 { public class MyObject: MarshalByRefObject, MyInterface { public string method1() { return "method1"; } public string method2() {return "method2";} }}
21 Тип, передаваемый по ссылке Иногда необходимо, чтобы все вызовы объекта, созданного в некотором домене приложения, обращались именно к экземпляру в данном домене, а не к его копии в другом домене. Например, объекту могут требоваться ресурсы, доступные только объектам, исполняющимся на данном компьютере. В этих случаях используются типы, передаваемые по ссылке, для которых инфраструктура,NET Remoting передает ссылку на экземпляр объекта, а не его сериализованную копию..NET Framework требует, чтобы типы, передаваемые по ссылке, наследовали от System.MarshatByRefObject. Простое наследование от этого класса обеспечивает возможность удаленного доступа к экземплярам производного типа Объявление типа, передаваемого по ссылке: class SomeMBRType : MarshatByRefObject { … }
22 22. Реализация интерфейса(создание тестируемого объекта) Откомпилировать проект Object1; В каталоге /bin/Debug появляется файл Object1.dll наряду с файлом Interface1.dll
23 23. Создание сервера Создать проект-приложение (WindowsApplication) MyServer; Скопировать в каталог /bin/Debug файлы Object1.dll и Interface1.dll; В окне проекта Solution Explorer добавить ссылки (add References) на Interface1.dll, Object1.dll и System.Runtime.Remoting.
24 24. Запуск программы-сервера
25 25. Программный код сервера using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; using Interface1; using Object1;
26 26. Кнопка Start System.Runtime.Remoting.Channels.Tcp.Tcp Channel channel=new TcpChannel(8080); Object1.MyObject obj=new MyObject(); System.Runtime.Remoting.RemotingServices. Marshal(obj,"object");
27 27. Типы каналов Remoting предоставляет два типа каналов: HttpChannel ; HttpChannel ; TcpChannel TcpChannel; Хотя их общая структура похожа, они отличаются транспортом, используемым для передачи сообщений, HTTP и TCP способны обеспечить транспорт в большинстве случаев, однако иногда может возникать необходимость применения других транспортов. Например, когда требуется доступ к удаленным объектам с беспроводного устройства, использующего протокол WAP (Wireless Application Protocol).
28 28. Кнопка Stop Application.Exit();
29 29. Создание клиента Создать проект-приложение MyClient; Скопировать в каталог /bin/Debug файл Interface1.dll; В окне проекта Solution Explorer добавить ссылки (add References) на Interface1.dll (через Browse…) и System.Runtime.Remoting.
30 30. Программный код клиента … using System.Runtime.Remoting; using Interface1; … private void button1_Click(object sender, System.EventArgs e) { MyInterface ob= (MyInterface)Activator.GetObject( typeof(MyInterface), "tcp:// :8080/object"); this.textBox1.Text=ob.method1(); this.textBox2.Text=ob.method2(); }
31 31. Переопределение метода в Object public string method1(string us, string pw) { System.Data.SqlClient.SqlConnection sqlConnection1=new System.Data.SqlClient.SqlConnection(); System.Data.SqlClient.SqlCommand sqlCommand1 = new System.Data.SqlClient.SqlCommand(); // sqlConnection1 sqlConnection1.ConnectionString = "workstation id=\"HOME-VBQ94BWURG\";packet size=4096;integrated security=SSPI;initia" + "l catalog=usera;persist security info=False";
32 32. Переопределение метода в Object // sqlCommand1 sqlCommand1.CommandText = "proc_user"; sqlCommand1.CommandType = System.Data.CommandType.StoredProcedure; sqlCommand1.Connection = sqlConnection1; sqlCommand1.Parameters.Add(new System.Data.SqlDbType.VarChar, 20)); sqlCommand1.Parameters.Add(new System.Data.SqlDbType.VarChar, 10)); sqlCommand1.Parameters.Add(new System.Data.SqlDbType.VarChar, 20, System.Data.ParameterDirection.Output, false, ((System.Byte)(0)), ((System.Byte)(0)), "", System.Data.DataRowVersion.Current, null));
33 33. Переопределение метода в Object try { sqlConnection1.Open(); sqlCommand1.ExecuteNonQuery(); string ToString();
34 34. Переопределение метода в Object if (res!="") return res; else return "Доступа нет"; } catch(Exception ex) { return ex.Message; }
35 35. Изменения в программу-клиент
36 36. Кнопка Подключиться к объекту Interface1.MyInterface ob=(MyInterface)Activator.GetObject(typeof(MyIn terface),"tcp:// :8080/object"); try { this.label1.Text=ob.method1( this.textBox1.Text.ToString(), this.textBox2.Text.ToString()); } catch(Exception ex) { this.label1.Text="no"+ex.Message; }
37 37. Использование двух интерфейсов Создание интерфейса Interface2 using System; namespace Interface2 { public interface MyInterface2 { string method22(); }
38 38. Использование двух интерфейсов Добавления в Object1 using System; using Interface1; using Interface2; … public class MyObject:MarshalByRefObject,MyInterface,MyInte rface2 {… public string method22() { return "privet from interface2 Object1"; }
39 39. Использование двух интерфейсов Добавления в MyClient using System.Runtime.Remoting; using Interface1; using Interface2; … Interface1.MyInterface ob=(MyInterface)Activator.GetObject(typeof(MyIn terface),"tcp:// :8080/object"); Interface2.MyInterface2 ob2=(MyInterface2)Activator.GetObject(typeof(M yInterface2),"tcp:// :8080/object"); … this.label4.Text=ob2.method22();
40 40. Использование различных реализаций (объектов) Создание Object2 using System; using Interface2; namespace Object2 { public class MyObject2:MarshalByRefObject,MyInterface2 { public string method22() { return "privet from object2"; }
41 41. Использование различных реализаций (объектов) Добавления в MyServer using Interface1; using Interface2; using Object1; using Object2; … System.Runtime.Remoting.Channels.Tcp.TcpChanne l channel=new TcpChannel(8080); Object1.MyObject obj=new MyObject(); System.Runtime.Remoting.RemotingServices.Marsh al(obj,"object"); Object2.MyObject2 obj2=new MyObject2(); System.Runtime.Remoting.RemotingServices.Marsh al(obj2,"object2");
42 42. Использование различных реализаций (объектов) Добавления в MyClient Interface1.MyInterface ob=(MyInterface)Activator.GetObject(typeof(MyIn terface),"tcp:// :8080/object"); Interface2.MyInterface2 ob2=(MyInterface2)Activator.GetObject(typeof(M yInterface2),"tcp:// :8080/object"); Interface2.MyInterface2 ob22=(MyInterface2)Activator.GetObject(typeof( MyInterface2),"tcp:// :8080/object2");
43 43. Использование различных реализаций (объектов) Добавления в MyClient Method1 определен в Interface1, реализован в Object1 this.label1.Text=ob.method1{login,pass word); Method22 определен в Interface2, реализован в Object1 this.label4.Text=ob2.method22(); Method22 определен в Interface2, реализован в Object2 this.label5.Text=ob22.method22();
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.