SlideShare a Scribd company logo
1 of 27
Создание распределенных приложений по
технологии Remoting
2
Содержание
1. Общий принцип
2. Основные особенности (web-сервисы vs. remoting)
3. Основные понятия
4. Низкоуровневые средства для работы с сетью
5. История становления технологий «клиент-сервер»
6. Технология удаленного вызова процедур (RPC)
7. Компонентное программирование в .NET
8. Windows Forms и Web Forms
9. Преимущества и недостатки .NET
Корпоративные системы
Формы ввода и распределенные приложения
3
Общий принцип
Объекты и/или модули распределенного приложения
располагаются в нескольких процессах, выполняющихся на
нескольких компьютерах
Корпоративные системы
Формы ввода и распределенные приложения
4
Основные понятия
Web-services: слабоcвязная (loose coupled) независимая от
операционной системы и языка программирования модель для
работы с объектами без внутреннего состояния (stateless),
основанная на общедоступных стандартах.
.NET Remoting: сильносвязная (tightly coupled) модель для
эффективного взаимодействия объектов среды выполнения
.NET, расположенных в разных процессах разных компьютеров.
Корпоративные системы
Формы ввода и распределенные приложения
5
Распределенные приложения: терминология
Loose coupled: слабосвязная распределенное приложение
опирается на минимальный набор требований для участвующих
сторон. Используются широко распространенные протоколы
(XML, HTTP) и самодостаточные наборы данных.
Tightly coupled: сильносвязное распределенное приложение
подразумевает определенную однородность частей приложения
и основано на заранее согласованных протоколах и наборах
данных
Stateless: модель взаимодействия распределенных объектов без
внутреннего состояния. Можно считать, что каждый вызов
метода обрабатывает новый экземпляр объекта.
Корпоративные системы
Формы ввода и распределенные приложения
6
Низкоуровневые средства для работы с сетью
System namespace
Net namespace
class EndPoint {…};
class IPEndPoint {…};
Class IrDAEndPoint {…};
class Dns {…}
…
Sockets namespace
class NetworkStream {…};
class Socket {…};
class TcpClient {…};
class TcpListener {…};
…
Корпоративные системы
Формы ввода и распределенные приложения
7
Распределенные приложения – 1980-е (1):
 Передача сообщений DCE
(Distributed Computing Environment)
 Удаленный вызов процедур
(Remote Procedure Call)
Корпоративные системы
Формы ввода и распределенные приложения
8
…
j = server_func(“Hello”,123);
…
Proxy клиента
Протокол передачи
данных
Stub сервера
Протокол передачи
данных
Сеть
operation()
reply
Middle layer
Bottom layer
Top layer
Клиент
int server_func(
char *str,int v)
{ … }
Сервер
int server_func(
char *str,int v)
{ … }
arg1 = “Hello”;
arg2 = 123;
result =
server_func(arg1,arg2);
Распределенные приложения – 1980-е (2)
Корпоративные системы
Формы ввода и распределенные приложения
9
Proxy и stub для удаленного вызова процедур – RPC(1)
 Proxy - подпрограмма, которую может вызывать клиент. Proxy
передает серверу запрос на вызов подпрограммы с заданными
параметрами и ожидает ответа, затем возвращает результат
клиенту. Вызов proxy не отличается от вызова локальной
подпрограммы.
Stub - выполняющийся на сервере код. Получает запрос вызова
заданной подпрограммы с заданными параметрами. Вызывает
подпрограмму и отправляет результат по сети.
Proxy и stub создаются автоматически. Но для этого требуется
язык описания интерфейсов клиента/сервера. Пример такого
языка - IDL.
Корпоративные системы
Формы ввода и распределенные приложения
10
Proxy и stub для удаленного вызова процедур – RPC(2)
Клиент
Proxy/Stub клиента
Протокол передачи
данных
Proxy/Stub сервера
Протокол передачи
данных
Сеть
Сервер
Middle layer
Bottom layer
Top layer
Корпоративные системы
Формы ввода и распределенные приложения
11
Объектные RPC – 1990-е (1)
 Скрывают различие между объектами в разных средах и
языках
 Наиболее распространены DCOM и CORBA
 ORB = Object Request Broker
 Получает указание вызвать заданный метод для
заданного объекта
 Находит объект, расположенный на некотором
компьютере, вызывает указанный метод и возвращает
результат клиенту
 Клиент ничего не знает от языке и платформе, где
расположен запрашиваемый объект
Корпоративные системы
Формы ввода и распределенные приложения
12
Размещение
информации
Вызов
методов
Клиент
Сервер
ORB
Объектные RPC – 1990-е (2)
Корпоративные системы
Формы ввода и распределенные приложения
13
Proxy и stub в объектных RPC (1)
 Proxy - для клиента выглядит как обычный объект. Но на
самом деле он просто упаковывает параметры вызова и передает
(marshal) упакованные параметры серверу. Ждет ответа от
сервера, распаковывает его и передает клиенту.
Stub - получает и распаковывает параметры вызова
(unmarshall) и вызывает требуемую функцию или метод на
сервере. Упаковывает ответ и отправляет клиенту.
Marshalling/unmarshalling - передача объектов (в частности,
параметров вызова) через границу процесса.
Корпоративные системы
Формы ввода и распределенные приложения
14
Сервер
Proxy и stub в объектных RPC (2)
Клиент Proxy Stuboperation()
reply
Процесс 1 Процесс 2
Корпоративные системы
Формы ввода и распределенные приложения
15
Границы процессов и домены приложений (1)
 При выполнении программы, написанной для среды .NET,
загрузчик сначала создает хост CLR (“виртуальную машину”) и
домен приложения (AppDomain) по умолчанию, в который
загружает требуемые сборки и передает управление.
 В некоторых случаях, в одном процессе может быть несколько
доменов приложений. Средства среды выполнения CLR
обеспечивают совершенно независимое выполнение программ в
нескольких AppDomain одного процесса.
Корпоративные системы
Формы ввода и распределенные приложения
16
Границы процессов и домены приложений (2)
Win32 process
CLR Host
AppDomain AppDomain
Корпоративные системы
Формы ввода и распределенные приложения
17
Процессы и домены приложений (1)
Win32 process
AppDomain AppDomain
Компьютер
Win32 process
AppDomain AppDomain
Корпоративные системы
Формы ввода и распределенные приложения
18
Процессы и домены приложений (2)
Другой компьютер
Win32 process
AppDomain AppDomain AppDomain
Корпоративные системы
Формы ввода и распределенные приложения
19
Работа с удаленными объектами: value и ref
 MarshalByValue: передать от сервера к клиенту объект
целиком. Вызывать методы объекта на стороне клиента.
 MarshalByRef: передавать от сервера к клиенту параметры
вызываемого метода и вызывать методы объекта на стороне
сервера.
 Целесообразно для простых, редко изменяющихся во
времени объектов.
 Объект содержит ссылки на системные ресурсы,
специфичные для процесса/компьютера.
 Объект содержит ссылки на большое количество других
объектов на стороне сервера
 Объект часто изменяет свое состояние
Корпоративные системы
Формы ввода и распределенные приложения
20
Явное создание объекта (1)
 Объект на сервере создается явно.
ServerObject obj = new ServerObject();
RemotingServices.Marshal(obj,"srvobj");
 Объект на сервере существует пока на него есть ссылки,
в т.ч. пока не вызван метод
RemotingServices.Disconnect(Object obj)
Корпоративные системы
Формы ввода и распределенные приложения
21
Явное создание объекта (2)
 Клиент может получить ссылку на объект двумя способами:
ServerObject obj = (ServerObject)Activator.GetObject(
typeof(ServerObject),
"http://localhost:8080/srvobj");
RemotingConfiguration.RegisterWellKnownClientType(
typeof(ServerObject),
"http://localhost:8080/srvobj");
…
ServerObject obj = new ServerObject();
Корпоративные системы
Формы ввода и распределенные приложения
22
Объекты, активируемые сервером (1)
 Момент создания объекта определяется сервером. В этом
случае имя присваивается не экземпляру объекта, а типу объекта.
RemotingConfiguration.
RegisterWellKnownServiceType(typeof(ServerObject),
"srvobj",
WellKnownObjectMode.SingleCall);
 Для обработки каждого вызова удаленного метода может
создаваться свой экземпляр объекта.
Корпоративные системы
Формы ввода и распределенные приложения
23
Объекты, активируемые сервером (2)
 Клиент работает с удаленным объектов полностью аналогично
предыдущему случаю
 Все вызовы удаленного метода может обрабатывать один
объект.RemotingConfiguration.
RegisterWellKnownServiceType(typeof(ServerObject),
"srvobj",
WellKnownObjectMode.Singleton);
Корпоративные системы
Формы ввода и распределенные приложения
24
Объекты, активируемые клиентом (1)
 Момент создания объекта определяется клиентом - на сервере
может быть создано много объектов. В этом случае сервер
объектов однозначно определяется именем компьютера и
портом.
RemotingConfiguration.
RegisterActivatedServiceType(typeof(ServerObject));
Корпоративные системы
Формы ввода и распределенные приложения
25
Объекты, активируемые клиентом (2)
 Клиент должен зарегистрировать тип объекта как
расположенный на сервере, затем создавать объекты (на самом
деле - proxy) при помощи оператора new:
RemotingConfiguration.RegisterActivatedClientType(
typeof(ServerObject),
"http://localhost:8080");
…
ServerObject obj = new ServerObject();
ServerObject obj2 = new ServerObject();
Корпоративные системы
Формы ввода и распределенные приложения
26
Распределенная «сборка мусора» (1)
 Классический распределенный сборщик мусора подсчитывает
количество ссылок на серверный объект, Для этого все клиенты
время от времени опрашиваются.
 .NET Remoting использует другую схему – механизм
«аренды». Каждому серверному объекту ставится в соответствие
объект, предоставляющий интерфейс ILease:
Корпоративные системы
Формы ввода и распределенные приложения
27
Распределенная «сборка мусора» (2)
рublic class MarshalByRefObject {
…
virtual object InitializeLifetimeService();
…
}
interface ILease {
…
TimeSpan InitialLeaseTime { get; set; }
TimeSpan RenewOnCallTime { get; set; }
void Renew();
void Register(ISponsor sponsor);
…
}
Корпоративные системы
Формы ввода и распределенные приложения

More Related Content

What's hot

Технические особенности Docsvision 5
Технические особенности Docsvision 5Технические особенности Docsvision 5
Технические особенности Docsvision 5
Docsvision
 
Bloch, bodoff руководство. сервлеты
Bloch, bodoff   руководство. сервлетыBloch, bodoff   руководство. сервлеты
Bloch, bodoff руководство. сервлеты
alexey1991
 
Платформа Docsvision
Платформа DocsvisionПлатформа Docsvision
Платформа Docsvision
Docsvision
 
Виртуализация критически важных приложений
Виртуализация критически важных приложенийВиртуализация критически важных приложений
Виртуализация критически важных приложений
Jack Chikovany
 
Aleksey Mashanov Rit
Aleksey  Mashanov RitAleksey  Mashanov Rit
Aleksey Mashanov Rit
rit2010
 
RoadShow Docsvision: Облачный документооборот для предприятий любого масштаба
RoadShow Docsvision: Облачный документооборот для предприятий любого масштабаRoadShow Docsvision: Облачный документооборот для предприятий любого масштаба
RoadShow Docsvision: Облачный документооборот для предприятий любого масштаба
Docsvision
 

What's hot (16)

Объектно-ориентированное программирование. Лекции 15 и 16
Объектно-ориентированное программирование. Лекции 15 и 16Объектно-ориентированное программирование. Лекции 15 и 16
Объектно-ориентированное программирование. Лекции 15 и 16
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practices
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
 
CompanyMedia-Next - Architecture (Vladimir Panov, 26.12.2011)
CompanyMedia-Next - Architecture (Vladimir Panov, 26.12.2011)CompanyMedia-Next - Architecture (Vladimir Panov, 26.12.2011)
CompanyMedia-Next - Architecture (Vladimir Panov, 26.12.2011)
 
Microsoft Visual Studio 2010
Microsoft Visual Studio 2010Microsoft Visual Studio 2010
Microsoft Visual Studio 2010
 
МАИ, Сети ЭВМ, Лекция №5
МАИ, Сети ЭВМ, Лекция №5МАИ, Сети ЭВМ, Лекция №5
МАИ, Сети ЭВМ, Лекция №5
 
Сервлеты
СервлетыСервлеты
Сервлеты
 
Модифицируемость программных систем
Модифицируемость программных системМодифицируемость программных систем
Модифицируемость программных систем
 
лр4 uml
лр4 umlлр4 uml
лр4 uml
 
Технические особенности Docsvision 5
Технические особенности Docsvision 5Технические особенности Docsvision 5
Технические особенности Docsvision 5
 
Bloch, bodoff руководство. сервлеты
Bloch, bodoff   руководство. сервлетыBloch, bodoff   руководство. сервлеты
Bloch, bodoff руководство. сервлеты
 
Платформа Docsvision
Платформа DocsvisionПлатформа Docsvision
Платформа Docsvision
 
Виртуализация критически важных приложений
Виртуализация критически важных приложенийВиртуализация критически важных приложений
Виртуализация критически важных приложений
 
Aleksey Mashanov Rit
Aleksey  Mashanov RitAleksey  Mashanov Rit
Aleksey Mashanov Rit
 
RoadShow Docsvision: Облачный документооборот для предприятий любого масштаба
RoadShow Docsvision: Облачный документооборот для предприятий любого масштабаRoadShow Docsvision: Облачный документооборот для предприятий любого масштаба
RoadShow Docsvision: Облачный документооборот для предприятий любого масштаба
 
NetWrix SQL Server Change Reporter. Обзор программы для аудита SQL Server
NetWrix SQL Server Change Reporter. Обзор программы для аудита SQL ServerNetWrix SQL Server Change Reporter. Обзор программы для аудита SQL Server
NetWrix SQL Server Change Reporter. Обзор программы для аудита SQL Server
 

Viewers also liked

Hepatitis B Knowledge and Vaccination Status among Ethnic Kashmiri Population...
Hepatitis B Knowledge and Vaccination Status among Ethnic Kashmiri Population...Hepatitis B Knowledge and Vaccination Status among Ethnic Kashmiri Population...
Hepatitis B Knowledge and Vaccination Status among Ethnic Kashmiri Population...
International Multispeciality Journal of Health
 
Relation between Back Extensor Strength, Bone Mineral Density, Kyphosis and L...
Relation between Back Extensor Strength, Bone Mineral Density, Kyphosis and L...Relation between Back Extensor Strength, Bone Mineral Density, Kyphosis and L...
Relation between Back Extensor Strength, Bone Mineral Density, Kyphosis and L...
International Multispeciality Journal of Health
 
Etiological pattern of Lymphadenopathies and Role of Fine Needle Aspiration C...
Etiological pattern of Lymphadenopathies and Role of Fine Needle Aspiration C...Etiological pattern of Lymphadenopathies and Role of Fine Needle Aspiration C...
Etiological pattern of Lymphadenopathies and Role of Fine Needle Aspiration C...
International Multispeciality Journal of Health
 
Heart Diseases and its associated factors in Geriatric Population residing in...
Heart Diseases and its associated factors in Geriatric Population residing in...Heart Diseases and its associated factors in Geriatric Population residing in...
Heart Diseases and its associated factors in Geriatric Population residing in...
International Multispeciality Journal of Health
 
Imjh may-2015-5
Imjh may-2015-5Imjh may-2015-5
5 создание графического интерфейса пользователя
5 создание графического интерфейса пользователя5 создание графического интерфейса пользователя
5 создание графического интерфейса пользователя
KewpaN
 
Maternal factors of anemia in 3rd trimester of Pregnancy and its association ...
Maternal factors of anemia in 3rd trimester of Pregnancy and its association ...Maternal factors of anemia in 3rd trimester of Pregnancy and its association ...
Maternal factors of anemia in 3rd trimester of Pregnancy and its association ...
International Multispeciality Journal of Health
 
Relation between Type of Architecture, Interpersonal Relationship and Spiritu...
Relation between Type of Architecture, Interpersonal Relationship and Spiritu...Relation between Type of Architecture, Interpersonal Relationship and Spiritu...
Relation between Type of Architecture, Interpersonal Relationship and Spiritu...
International Multispeciality Journal of Health
 
Integrated Disease Surveillance Programme (IDSP) Disease Pattern and its Load...
Integrated Disease Surveillance Programme (IDSP) Disease Pattern and its Load...Integrated Disease Surveillance Programme (IDSP) Disease Pattern and its Load...
Integrated Disease Surveillance Programme (IDSP) Disease Pattern and its Load...
International Multispeciality Journal of Health
 
Social Activities of Patients with Oncological Diseases
Social Activities of Patients with Oncological Diseases Social Activities of Patients with Oncological Diseases
Social Activities of Patients with Oncological Diseases
International Multispeciality Journal of Health
 
Standard precautions Status of Nursing Personnel’s of Tertiary Level Care Hos...
Standard precautions Status of Nursing Personnel’s of Tertiary Level Care Hos...Standard precautions Status of Nursing Personnel’s of Tertiary Level Care Hos...
Standard precautions Status of Nursing Personnel’s of Tertiary Level Care Hos...
International Multispeciality Journal of Health
 

Viewers also liked (20)

Imjh jun-2015-4
Imjh jun-2015-4Imjh jun-2015-4
Imjh jun-2015-4
 
Formaldehyde exposure in medical students: a short period of contact causes D...
Formaldehyde exposure in medical students: a short period of contact causes D...Formaldehyde exposure in medical students: a short period of contact causes D...
Formaldehyde exposure in medical students: a short period of contact causes D...
 
Hepatitis B Knowledge and Vaccination Status among Ethnic Kashmiri Population...
Hepatitis B Knowledge and Vaccination Status among Ethnic Kashmiri Population...Hepatitis B Knowledge and Vaccination Status among Ethnic Kashmiri Population...
Hepatitis B Knowledge and Vaccination Status among Ethnic Kashmiri Population...
 
Therapeutic Priority for Developing Communication in Children with Special Ed...
Therapeutic Priority for Developing Communication in Children with Special Ed...Therapeutic Priority for Developing Communication in Children with Special Ed...
Therapeutic Priority for Developing Communication in Children with Special Ed...
 
Relation between Back Extensor Strength, Bone Mineral Density, Kyphosis and L...
Relation between Back Extensor Strength, Bone Mineral Density, Kyphosis and L...Relation between Back Extensor Strength, Bone Mineral Density, Kyphosis and L...
Relation between Back Extensor Strength, Bone Mineral Density, Kyphosis and L...
 
Situation Analysis of Patient Load at a District Hospital of eastern-northern...
Situation Analysis of Patient Load at a District Hospital of eastern-northern...Situation Analysis of Patient Load at a District Hospital of eastern-northern...
Situation Analysis of Patient Load at a District Hospital of eastern-northern...
 
Etiological pattern of Lymphadenopathies and Role of Fine Needle Aspiration C...
Etiological pattern of Lymphadenopathies and Role of Fine Needle Aspiration C...Etiological pattern of Lymphadenopathies and Role of Fine Needle Aspiration C...
Etiological pattern of Lymphadenopathies and Role of Fine Needle Aspiration C...
 
Association of Tuberculosis and Biochemical Nutritional Status A Case-Control...
Association of Tuberculosis and Biochemical Nutritional Status A Case-Control...Association of Tuberculosis and Biochemical Nutritional Status A Case-Control...
Association of Tuberculosis and Biochemical Nutritional Status A Case-Control...
 
Heart Diseases and its associated factors in Geriatric Population residing in...
Heart Diseases and its associated factors in Geriatric Population residing in...Heart Diseases and its associated factors in Geriatric Population residing in...
Heart Diseases and its associated factors in Geriatric Population residing in...
 
Imjh jun-2015-6
Imjh jun-2015-6Imjh jun-2015-6
Imjh jun-2015-6
 
Solomon capital Cross Borders Investment Banking
Solomon capital Cross Borders Investment BankingSolomon capital Cross Borders Investment Banking
Solomon capital Cross Borders Investment Banking
 
Imjh may-2015-5
Imjh may-2015-5Imjh may-2015-5
Imjh may-2015-5
 
5 создание графического интерфейса пользователя
5 создание графического интерфейса пользователя5 создание графического интерфейса пользователя
5 создание графического интерфейса пользователя
 
Maternal factors of anemia in 3rd trimester of Pregnancy and its association ...
Maternal factors of anemia in 3rd trimester of Pregnancy and its association ...Maternal factors of anemia in 3rd trimester of Pregnancy and its association ...
Maternal factors of anemia in 3rd trimester of Pregnancy and its association ...
 
Relation between Type of Architecture, Interpersonal Relationship and Spiritu...
Relation between Type of Architecture, Interpersonal Relationship and Spiritu...Relation between Type of Architecture, Interpersonal Relationship and Spiritu...
Relation between Type of Architecture, Interpersonal Relationship and Spiritu...
 
Integrated Disease Surveillance Programme (IDSP) Disease Pattern and its Load...
Integrated Disease Surveillance Programme (IDSP) Disease Pattern and its Load...Integrated Disease Surveillance Programme (IDSP) Disease Pattern and its Load...
Integrated Disease Surveillance Programme (IDSP) Disease Pattern and its Load...
 
Social Activities of Patients with Oncological Diseases
Social Activities of Patients with Oncological Diseases Social Activities of Patients with Oncological Diseases
Social Activities of Patients with Oncological Diseases
 
Standard precautions Status of Nursing Personnel’s of Tertiary Level Care Hos...
Standard precautions Status of Nursing Personnel’s of Tertiary Level Care Hos...Standard precautions Status of Nursing Personnel’s of Tertiary Level Care Hos...
Standard precautions Status of Nursing Personnel’s of Tertiary Level Care Hos...
 
Comparison of Intravaginal Misoprostol Tablet (Prostaglandin E1) and Intracer...
Comparison of Intravaginal Misoprostol Tablet (Prostaglandin E1) and Intracer...Comparison of Intravaginal Misoprostol Tablet (Prostaglandin E1) and Intracer...
Comparison of Intravaginal Misoprostol Tablet (Prostaglandin E1) and Intracer...
 
Microbiological Study of Pharyngitis at a Teaching Hospital, Chinakakani, (An...
Microbiological Study of Pharyngitis at a Teaching Hospital, Chinakakani, (An...Microbiological Study of Pharyngitis at a Teaching Hospital, Chinakakani, (An...
Microbiological Study of Pharyngitis at a Teaching Hospital, Chinakakani, (An...
 

Similar to 6 создание распределенных приложений по технологии remoting

Node.js and C++ #foss-sea.org.ua
Node.js and C++ #foss-sea.org.uaNode.js and C++ #foss-sea.org.ua
Node.js and C++ #foss-sea.org.ua
Eugene Khvedchenya
 

Similar to 6 создание распределенных приложений по технологии remoting (20)

Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
Полная автоматизация развертываний ПО: общие концепции, пример реализации, ср...
 
Middleware
MiddlewareMiddleware
Middleware
 
Вячеслав Смирнов - Инструменты нагрузочного тестирования
Вячеслав Смирнов - Инструменты нагрузочного тестированияВячеслав Смирнов - Инструменты нагрузочного тестирования
Вячеслав Смирнов - Инструменты нагрузочного тестирования
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVC
 
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
ASP.NET MVC 3 Anton Vidishchev
ASP.NET MVC 3 Anton VidishchevASP.NET MVC 3 Anton Vidishchev
ASP.NET MVC 3 Anton Vidishchev
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NET
 
Wcf Part 2
Wcf Part 2Wcf Part 2
Wcf Part 2
 
Node.js and C++ #foss-sea.org.ua
Node.js and C++ #foss-sea.org.uaNode.js and C++ #foss-sea.org.ua
Node.js and C++ #foss-sea.org.ua
 
RAD на Java: как устроена CUBA Platform?
RAD на Java: как устроена  CUBA Platform?RAD на Java: как устроена  CUBA Platform?
RAD на Java: как устроена CUBA Platform?
 
Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"
 
Простой и кросс-платформенный WEB-сервер на .NET
Простой и кросс-платформенный WEB-сервер на .NETПростой и кросс-платформенный WEB-сервер на .NET
Простой и кросс-платформенный WEB-сервер на .NET
 
Программные интерфейсы управления (API) архитектурой, ориентированной на прил...
Программные интерфейсы управления (API) архитектурой, ориентированной на прил...Программные интерфейсы управления (API) архитектурой, ориентированной на прил...
Программные интерфейсы управления (API) архитектурой, ориентированной на прил...
 
Андрей Завадский "Бессерверная архитектура"
 Андрей Завадский "Бессерверная архитектура" Андрей Завадский "Бессерверная архитектура"
Андрей Завадский "Бессерверная архитектура"
 
Мировые информационные ресурсы. Лекция 5
Мировые информационные ресурсы. Лекция 5Мировые информационные ресурсы. Лекция 5
Мировые информационные ресурсы. Лекция 5
 
ВВЕДЕНИЕ В NODE.JS
ВВЕДЕНИЕ В NODE.JS ВВЕДЕНИЕ В NODE.JS
ВВЕДЕНИЕ В NODE.JS
 
ASP.NET MVC 3
ASP.NET MVC 3ASP.NET MVC 3
ASP.NET MVC 3
 
Модульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NETМодульная структура. Цветцих Денис D2D Just.NET
Модульная структура. Цветцих Денис D2D Just.NET
 
Модульная структура
Модульная структураМодульная структура
Модульная структура
 

More from KewpaN

14 расширенные возможности корпоративных субд
14 расширенные возможности корпоративных субд14 расширенные возможности корпоративных субд
14 расширенные возможности корпоративных субд
KewpaN
 
13 расширенные возможности корпоративных приложений, основы субд
13 расширенные возможности корпоративных приложений, основы субд13 расширенные возможности корпоративных приложений, основы субд
13 расширенные возможности корпоративных приложений, основы субд
KewpaN
 
12 основные возможности корпоративных приложений
12 основные возможности корпоративных приложений12 основные возможности корпоративных приложений
12 основные возможности корпоративных приложений
KewpaN
 
11 платформа microsoft office расширенные возможности
11 платформа microsoft office   расширенные возможности11 платформа microsoft office   расширенные возможности
11 платформа microsoft office расширенные возможности
KewpaN
 
9 структура компонентных приложений
9 структура компонентных приложений9 структура компонентных приложений
9 структура компонентных приложений
KewpaN
 
7 создание веб сервисов
7 создание веб сервисов7 создание веб сервисов
7 создание веб сервисов
KewpaN
 
3 средства автоматизации проектирования корпоративных приложений
3 средства автоматизации проектирования корпоративных приложений3 средства автоматизации проектирования корпоративных приложений
3 средства автоматизации проектирования корпоративных приложений
KewpaN
 
2 виды и особенности клиент серверных систем с бд
2 виды и особенности клиент серверных систем с бд2 виды и особенности клиент серверных систем с бд
2 виды и особенности клиент серверных систем с бд
KewpaN
 
1 открытые системы. клиент и сервер
1 открытые системы. клиент и сервер1 открытые системы. клиент и сервер
1 открытые системы. клиент и сервер
KewpaN
 
0 wiki технологии
0 wiki технологии0 wiki технологии
0 wiki технологии
KewpaN
 
0 wiki технологии
0 wiki технологии0 wiki технологии
0 wiki технологии
KewpaN
 
0 wiki технологии
0 wiki технологии0 wiki технологии
0 wiki технологии
KewpaN
 
0 wiki технологии
0 wiki технологии0 wiki технологии
0 wiki технологии
KewpaN
 

More from KewpaN (15)

14 расширенные возможности корпоративных субд
14 расширенные возможности корпоративных субд14 расширенные возможности корпоративных субд
14 расширенные возможности корпоративных субд
 
13 расширенные возможности корпоративных приложений, основы субд
13 расширенные возможности корпоративных приложений, основы субд13 расширенные возможности корпоративных приложений, основы субд
13 расширенные возможности корпоративных приложений, основы субд
 
12 основные возможности корпоративных приложений
12 основные возможности корпоративных приложений12 основные возможности корпоративных приложений
12 основные возможности корпоративных приложений
 
11 платформа microsoft office расширенные возможности
11 платформа microsoft office   расширенные возможности11 платформа microsoft office   расширенные возможности
11 платформа microsoft office расширенные возможности
 
9 структура компонентных приложений
9 структура компонентных приложений9 структура компонентных приложений
9 структура компонентных приложений
 
7 создание веб сервисов
7 создание веб сервисов7 создание веб сервисов
7 создание веб сервисов
 
3 средства автоматизации проектирования корпоративных приложений
3 средства автоматизации проектирования корпоративных приложений3 средства автоматизации проектирования корпоративных приложений
3 средства автоматизации проектирования корпоративных приложений
 
2 виды и особенности клиент серверных систем с бд
2 виды и особенности клиент серверных систем с бд2 виды и особенности клиент серверных систем с бд
2 виды и особенности клиент серверных систем с бд
 
1 открытые системы. клиент и сервер
1 открытые системы. клиент и сервер1 открытые системы. клиент и сервер
1 открытые системы. клиент и сервер
 
0 wiki технологии
0 wiki технологии0 wiki технологии
0 wiki технологии
 
0 wiki технологии
0 wiki технологии0 wiki технологии
0 wiki технологии
 
0 wiki технологии
0 wiki технологии0 wiki технологии
0 wiki технологии
 
0 wiki технологии
0 wiki технологии0 wiki технологии
0 wiki технологии
 
0 wiki технологии
0 wiki технологии0 wiki технологии
0 wiki технологии
 
0 wiki технологии
0 wiki технологии0 wiki технологии
0 wiki технологии
 

6 создание распределенных приложений по технологии remoting

  • 2. 2 Содержание 1. Общий принцип 2. Основные особенности (web-сервисы vs. remoting) 3. Основные понятия 4. Низкоуровневые средства для работы с сетью 5. История становления технологий «клиент-сервер» 6. Технология удаленного вызова процедур (RPC) 7. Компонентное программирование в .NET 8. Windows Forms и Web Forms 9. Преимущества и недостатки .NET Корпоративные системы Формы ввода и распределенные приложения
  • 3. 3 Общий принцип Объекты и/или модули распределенного приложения располагаются в нескольких процессах, выполняющихся на нескольких компьютерах Корпоративные системы Формы ввода и распределенные приложения
  • 4. 4 Основные понятия Web-services: слабоcвязная (loose coupled) независимая от операционной системы и языка программирования модель для работы с объектами без внутреннего состояния (stateless), основанная на общедоступных стандартах. .NET Remoting: сильносвязная (tightly coupled) модель для эффективного взаимодействия объектов среды выполнения .NET, расположенных в разных процессах разных компьютеров. Корпоративные системы Формы ввода и распределенные приложения
  • 5. 5 Распределенные приложения: терминология Loose coupled: слабосвязная распределенное приложение опирается на минимальный набор требований для участвующих сторон. Используются широко распространенные протоколы (XML, HTTP) и самодостаточные наборы данных. Tightly coupled: сильносвязное распределенное приложение подразумевает определенную однородность частей приложения и основано на заранее согласованных протоколах и наборах данных Stateless: модель взаимодействия распределенных объектов без внутреннего состояния. Можно считать, что каждый вызов метода обрабатывает новый экземпляр объекта. Корпоративные системы Формы ввода и распределенные приложения
  • 6. 6 Низкоуровневые средства для работы с сетью System namespace Net namespace class EndPoint {…}; class IPEndPoint {…}; Class IrDAEndPoint {…}; class Dns {…} … Sockets namespace class NetworkStream {…}; class Socket {…}; class TcpClient {…}; class TcpListener {…}; … Корпоративные системы Формы ввода и распределенные приложения
  • 7. 7 Распределенные приложения – 1980-е (1):  Передача сообщений DCE (Distributed Computing Environment)  Удаленный вызов процедур (Remote Procedure Call) Корпоративные системы Формы ввода и распределенные приложения
  • 8. 8 … j = server_func(“Hello”,123); … Proxy клиента Протокол передачи данных Stub сервера Протокол передачи данных Сеть operation() reply Middle layer Bottom layer Top layer Клиент int server_func( char *str,int v) { … } Сервер int server_func( char *str,int v) { … } arg1 = “Hello”; arg2 = 123; result = server_func(arg1,arg2); Распределенные приложения – 1980-е (2) Корпоративные системы Формы ввода и распределенные приложения
  • 9. 9 Proxy и stub для удаленного вызова процедур – RPC(1)  Proxy - подпрограмма, которую может вызывать клиент. Proxy передает серверу запрос на вызов подпрограммы с заданными параметрами и ожидает ответа, затем возвращает результат клиенту. Вызов proxy не отличается от вызова локальной подпрограммы. Stub - выполняющийся на сервере код. Получает запрос вызова заданной подпрограммы с заданными параметрами. Вызывает подпрограмму и отправляет результат по сети. Proxy и stub создаются автоматически. Но для этого требуется язык описания интерфейсов клиента/сервера. Пример такого языка - IDL. Корпоративные системы Формы ввода и распределенные приложения
  • 10. 10 Proxy и stub для удаленного вызова процедур – RPC(2) Клиент Proxy/Stub клиента Протокол передачи данных Proxy/Stub сервера Протокол передачи данных Сеть Сервер Middle layer Bottom layer Top layer Корпоративные системы Формы ввода и распределенные приложения
  • 11. 11 Объектные RPC – 1990-е (1)  Скрывают различие между объектами в разных средах и языках  Наиболее распространены DCOM и CORBA  ORB = Object Request Broker  Получает указание вызвать заданный метод для заданного объекта  Находит объект, расположенный на некотором компьютере, вызывает указанный метод и возвращает результат клиенту  Клиент ничего не знает от языке и платформе, где расположен запрашиваемый объект Корпоративные системы Формы ввода и распределенные приложения
  • 12. 12 Размещение информации Вызов методов Клиент Сервер ORB Объектные RPC – 1990-е (2) Корпоративные системы Формы ввода и распределенные приложения
  • 13. 13 Proxy и stub в объектных RPC (1)  Proxy - для клиента выглядит как обычный объект. Но на самом деле он просто упаковывает параметры вызова и передает (marshal) упакованные параметры серверу. Ждет ответа от сервера, распаковывает его и передает клиенту. Stub - получает и распаковывает параметры вызова (unmarshall) и вызывает требуемую функцию или метод на сервере. Упаковывает ответ и отправляет клиенту. Marshalling/unmarshalling - передача объектов (в частности, параметров вызова) через границу процесса. Корпоративные системы Формы ввода и распределенные приложения
  • 14. 14 Сервер Proxy и stub в объектных RPC (2) Клиент Proxy Stuboperation() reply Процесс 1 Процесс 2 Корпоративные системы Формы ввода и распределенные приложения
  • 15. 15 Границы процессов и домены приложений (1)  При выполнении программы, написанной для среды .NET, загрузчик сначала создает хост CLR (“виртуальную машину”) и домен приложения (AppDomain) по умолчанию, в который загружает требуемые сборки и передает управление.  В некоторых случаях, в одном процессе может быть несколько доменов приложений. Средства среды выполнения CLR обеспечивают совершенно независимое выполнение программ в нескольких AppDomain одного процесса. Корпоративные системы Формы ввода и распределенные приложения
  • 16. 16 Границы процессов и домены приложений (2) Win32 process CLR Host AppDomain AppDomain Корпоративные системы Формы ввода и распределенные приложения
  • 17. 17 Процессы и домены приложений (1) Win32 process AppDomain AppDomain Компьютер Win32 process AppDomain AppDomain Корпоративные системы Формы ввода и распределенные приложения
  • 18. 18 Процессы и домены приложений (2) Другой компьютер Win32 process AppDomain AppDomain AppDomain Корпоративные системы Формы ввода и распределенные приложения
  • 19. 19 Работа с удаленными объектами: value и ref  MarshalByValue: передать от сервера к клиенту объект целиком. Вызывать методы объекта на стороне клиента.  MarshalByRef: передавать от сервера к клиенту параметры вызываемого метода и вызывать методы объекта на стороне сервера.  Целесообразно для простых, редко изменяющихся во времени объектов.  Объект содержит ссылки на системные ресурсы, специфичные для процесса/компьютера.  Объект содержит ссылки на большое количество других объектов на стороне сервера  Объект часто изменяет свое состояние Корпоративные системы Формы ввода и распределенные приложения
  • 20. 20 Явное создание объекта (1)  Объект на сервере создается явно. ServerObject obj = new ServerObject(); RemotingServices.Marshal(obj,"srvobj");  Объект на сервере существует пока на него есть ссылки, в т.ч. пока не вызван метод RemotingServices.Disconnect(Object obj) Корпоративные системы Формы ввода и распределенные приложения
  • 21. 21 Явное создание объекта (2)  Клиент может получить ссылку на объект двумя способами: ServerObject obj = (ServerObject)Activator.GetObject( typeof(ServerObject), "http://localhost:8080/srvobj"); RemotingConfiguration.RegisterWellKnownClientType( typeof(ServerObject), "http://localhost:8080/srvobj"); … ServerObject obj = new ServerObject(); Корпоративные системы Формы ввода и распределенные приложения
  • 22. 22 Объекты, активируемые сервером (1)  Момент создания объекта определяется сервером. В этом случае имя присваивается не экземпляру объекта, а типу объекта. RemotingConfiguration. RegisterWellKnownServiceType(typeof(ServerObject), "srvobj", WellKnownObjectMode.SingleCall);  Для обработки каждого вызова удаленного метода может создаваться свой экземпляр объекта. Корпоративные системы Формы ввода и распределенные приложения
  • 23. 23 Объекты, активируемые сервером (2)  Клиент работает с удаленным объектов полностью аналогично предыдущему случаю  Все вызовы удаленного метода может обрабатывать один объект.RemotingConfiguration. RegisterWellKnownServiceType(typeof(ServerObject), "srvobj", WellKnownObjectMode.Singleton); Корпоративные системы Формы ввода и распределенные приложения
  • 24. 24 Объекты, активируемые клиентом (1)  Момент создания объекта определяется клиентом - на сервере может быть создано много объектов. В этом случае сервер объектов однозначно определяется именем компьютера и портом. RemotingConfiguration. RegisterActivatedServiceType(typeof(ServerObject)); Корпоративные системы Формы ввода и распределенные приложения
  • 25. 25 Объекты, активируемые клиентом (2)  Клиент должен зарегистрировать тип объекта как расположенный на сервере, затем создавать объекты (на самом деле - proxy) при помощи оператора new: RemotingConfiguration.RegisterActivatedClientType( typeof(ServerObject), "http://localhost:8080"); … ServerObject obj = new ServerObject(); ServerObject obj2 = new ServerObject(); Корпоративные системы Формы ввода и распределенные приложения
  • 26. 26 Распределенная «сборка мусора» (1)  Классический распределенный сборщик мусора подсчитывает количество ссылок на серверный объект, Для этого все клиенты время от времени опрашиваются.  .NET Remoting использует другую схему – механизм «аренды». Каждому серверному объекту ставится в соответствие объект, предоставляющий интерфейс ILease: Корпоративные системы Формы ввода и распределенные приложения
  • 27. 27 Распределенная «сборка мусора» (2) рublic class MarshalByRefObject { … virtual object InitializeLifetimeService(); … } interface ILease { … TimeSpan InitialLeaseTime { get; set; } TimeSpan RenewOnCallTime { get; set; } void Renew(); void Register(ISponsor sponsor); … } Корпоративные системы Формы ввода и распределенные приложения