🗊 Презентация Язык С#. Сборки, потоки и домены приложений

Нажмите для полного просмотра!
Язык С#. Сборки, потоки и домены приложений, слайд №1 Язык С#. Сборки, потоки и домены приложений, слайд №2 Язык С#. Сборки, потоки и домены приложений, слайд №3 Язык С#. Сборки, потоки и домены приложений, слайд №4 Язык С#. Сборки, потоки и домены приложений, слайд №5 Язык С#. Сборки, потоки и домены приложений, слайд №6 Язык С#. Сборки, потоки и домены приложений, слайд №7 Язык С#. Сборки, потоки и домены приложений, слайд №8 Язык С#. Сборки, потоки и домены приложений, слайд №9 Язык С#. Сборки, потоки и домены приложений, слайд №10 Язык С#. Сборки, потоки и домены приложений, слайд №11 Язык С#. Сборки, потоки и домены приложений, слайд №12 Язык С#. Сборки, потоки и домены приложений, слайд №13 Язык С#. Сборки, потоки и домены приложений, слайд №14 Язык С#. Сборки, потоки и домены приложений, слайд №15 Язык С#. Сборки, потоки и домены приложений, слайд №16 Язык С#. Сборки, потоки и домены приложений, слайд №17 Язык С#. Сборки, потоки и домены приложений, слайд №18 Язык С#. Сборки, потоки и домены приложений, слайд №19 Язык С#. Сборки, потоки и домены приложений, слайд №20 Язык С#. Сборки, потоки и домены приложений, слайд №21 Язык С#. Сборки, потоки и домены приложений, слайд №22 Язык С#. Сборки, потоки и домены приложений, слайд №23 Язык С#. Сборки, потоки и домены приложений, слайд №24 Язык С#. Сборки, потоки и домены приложений, слайд №25 Язык С#. Сборки, потоки и домены приложений, слайд №26 Язык С#. Сборки, потоки и домены приложений, слайд №27 Язык С#. Сборки, потоки и домены приложений, слайд №28 Язык С#. Сборки, потоки и домены приложений, слайд №29 Язык С#. Сборки, потоки и домены приложений, слайд №30 Язык С#. Сборки, потоки и домены приложений, слайд №31 Язык С#. Сборки, потоки и домены приложений, слайд №32 Язык С#. Сборки, потоки и домены приложений, слайд №33 Язык С#. Сборки, потоки и домены приложений, слайд №34 Язык С#. Сборки, потоки и домены приложений, слайд №35 Язык С#. Сборки, потоки и домены приложений, слайд №36 Язык С#. Сборки, потоки и домены приложений, слайд №37 Язык С#. Сборки, потоки и домены приложений, слайд №38 Язык С#. Сборки, потоки и домены приложений, слайд №39 Язык С#. Сборки, потоки и домены приложений, слайд №40

Содержание

Вы можете ознакомиться и скачать презентацию на тему Язык С#. Сборки, потоки и домены приложений. Доклад-сообщение содержит 40 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1


Язык С# Сборки, потоки и домены приложений Лекция #5
Описание слайда:
Язык С# Сборки, потоки и домены приложений Лекция #5

Слайд 2


Common Object Model Повторное использование кода Создание COM-серверов и регистрация их в реестре (HREY_CLASSES_ROOT) Проблема версий COM Запись в...
Описание слайда:
Common Object Model Повторное использование кода Создание COM-серверов и регистрация их в реестре (HREY_CLASSES_ROOT) Проблема версий COM Запись в реестре и сам двоичный файл COM не связаны друг с другом

Слайд 3


Обзор сборок .NET Приложение .NET – объединение любого количества сборок Сборка – это двоичный файл (DLL или EXE), который содержит номер версии,...
Описание слайда:
Обзор сборок .NET Приложение .NET – объединение любого количества сборок Сборка – это двоичный файл (DLL или EXE), который содержит номер версии, метаданные, а также типы и дополнительные ресурсы Манифест – набор метаданных о самой сборке

Слайд 4


Обзор сборок .NET Логическое представление сборки (классы, интерфейсы, ресурсы, делегаты) Физическое представление (набор модулей – файлов) Сборки...
Описание слайда:
Обзор сборок .NET Логическое представление сборки (классы, интерфейсы, ресурсы, делегаты) Физическое представление (набор модулей – файлов) Сборки обеспечивают повторное использование кода, написанного на любом языке .NET Сборки – контейнеры для типов (не будет конфликта имен) Разные версии сборок могут выполнятся одновременно

Слайд 5


Создание однофайловой сборки
Описание слайда:
Создание однофайловой сборки

Слайд 6


Добавление ссылки на внешнюю сборку
Описание слайда:
Добавление ссылки на внешнюю сборку

Слайд 7


Библиотека кода - CarLibary namespace CarLibrary { using System; public enum EngineState // Для двух возможных состояний двигателя { engineAlive,...
Описание слайда:
Библиотека кода - CarLibary namespace CarLibrary { using System; public enum EngineState // Для двух возможных состояний двигателя { engineAlive, engineDead } public abstract class Car // Абстрактный класс — базовый в нашей будущей иерархии { // Защищенные данные о состоянии protected string petName; protected short currSpeed; protected short maxSpeed; protected EngineState egnState; public Car() {egnState = EngineState.engineAlive;} public Car(string name, short max, short curr) { egnState = EngineState.EngineAlive; petName = name; maxSpeed = max; currSpeed = curr; } public string PetName { get { return petName; } set { petName = value; } } public short CurrSpeed { get { return currSpeed; } set { currSpeed = value; } } public short MaxSpeed { get {return maxSpeed; } } public EngineState EngineState { get { return egnState; } } public abstract void TurboBoost(); }}

Слайд 8


Реализация конкретных классов SportsCar и MiniVan namespace CarLibrary { using System; using System.Windows.Forms; // Чтобы можно было использовать...
Описание слайда:
Реализация конкретных классов SportsCar и MiniVan namespace CarLibrary { using System; using System.Windows.Forms; // Чтобы можно было использовать MessageBox public class SportsCar : Car // Определение класса SportsCar { // Конструкторы public SportsCar(){} public SportsCar(string name, short max, short curr) : base (name, max, curr) {} // Специфическая реализация метода TurboBoost() public override void TurboBoost() { MessageBox.Show("Ramming speed!", "Faster is better..."); } } // Определение класса MiniVan public class Minivan : Car { // Конструкторы public MiniVan(){} public MiniVan(string name, short max, short curr) : base (name, max, curr){} // Реализация метода TurboBoost() { // Мини-вэны разгоняются неважно egnState = EngineState.engineDead; MessageBox.Show("Time to call AAA", "Your car is dead"); } } }

Слайд 9


Клиентское приложение
Описание слайда:
Клиентское приложение

Слайд 10


Клиентское приложение // Первый опыт использования собственной библиотеки кода namespace CSharpCarClient { using System; // Используем типы из...
Описание слайда:
Клиентское приложение // Первый опыт использования собственной библиотеки кода namespace CSharpCarClient { using System; // Используем типы из CarLibrary using CarLibrary; public class CarClient { public static int Main(string[] args) { // Создаем автомобиль спортивной модели SportsCar viper = new SportsCar("Viper", 240, 40); viper.TurboBoost(); // Создаем мини-вэн MiniVan mv = new MiniVan(); mv.TurboBoost(); return 0; } } }

Слайд 11


Манифест
Описание слайда:
Манифест

Слайд 12


Метаданные типов
Описание слайда:
Метаданные типов

Слайд 13


Частные сборки private или shared Находятся в каталоге приложения или в подкаталогах Можно переносить каталог с приложением Можно просто все удалить
Описание слайда:
Частные сборки private или shared Находятся в каталоге приложения или в подкаталогах Можно переносить каталог с приложением Можно просто все удалить

Слайд 14


Алгоритм поиска В каталоге приложения dll В каталоге приложения exe Конфигурационный файл
Описание слайда:
Алгоритм поиска В каталоге приложения dll В каталоге приложения exe Конфигурационный файл

Слайд 15


Конфигурационный файл
Описание слайда:
Конфигурационный файл

Слайд 16


Сборки для общего доступа Global Assembly Cache (GAC) C:\WINDOWS\Assembly Дополнительная информация о версии – общее или сильное имя
Описание слайда:
Сборки для общего доступа Global Assembly Cache (GAC) C:\WINDOWS\Assembly Дополнительная информация о версии – общее или сильное имя

Слайд 17


«Сильные» имена сборок Дружественное текстовое имя и «культурная информация» Идентификатор версии Пара открытый/закрытый ключ Цифровая подпись
Описание слайда:
«Сильные» имена сборок Дружественное текстовое имя и «культурная информация» Идентификатор версии Пара открытый/закрытый ключ Цифровая подпись

Слайд 18


Текст сборки using System; using System.Windows.Forms; namespace SharedAssembly { public class VWMiniVan { public VWMiniVan(){} public void...
Описание слайда:
Текст сборки using System; using System.Windows.Forms; namespace SharedAssembly { public class VWMiniVan { public VWMiniVan(){} public void Play60sTunes() { MessageBox.Show("What a loooong, strange trip it's been..."); } private bool isBustedByTheFuzz = false; public bool Busted { get { return isBustedByTheFuzz; } set { isBustedByTheFuzz = value; } } } }

Слайд 19


Создание пары открытый/закрытый ключ
Описание слайда:
Создание пары открытый/закрытый ключ

Слайд 20


Установка сборки в GAC Утилита gacutil.exe Перетащить мышкой
Описание слайда:
Установка сборки в GAC Утилита gacutil.exe Перетащить мышкой

Слайд 21


Использование общей сборки в приложении namespace SharedLibUser { using System; using SharedAssembly; public class SharedAsmUser { public static int...
Описание слайда:
Использование общей сборки в приложении namespace SharedLibUser { using System; using SharedAssembly; public class SharedAsmUser { public static int Main(string[] args) { try { VWMiniVan v = new VWMiniVan(); v.Play60sTunes(); } catch(TypeLoadException e) { // Не могу найти сборку! Console.WriteLine(e.Message); } return 0; } } }

Слайд 22


Анатомия версии сборки Номер основной версии (Несовместимые) Номер дополнительной версии (Несовместимые) Номер редакции (Возможно совместимые) Номер...
Описание слайда:
Анатомия версии сборки Номер основной версии (Несовместимые) Номер дополнительной версии (Несовместимые) Номер редакции (Возможно совместимые) Номер сборки (Quick Fix Engineering)

Слайд 23


Запись информации о версии
Описание слайда:
Запись информации о версии

Слайд 24


Загрузка разных версий сборок По умолчанию: первые две цифры запрашиваемые, вторые – последние по номеру Явная загрузка нужной версией: управление из...
Описание слайда:
Загрузка разных версий сборок По умолчанию: первые две цифры запрашиваемые, вторые – последние по номеру Явная загрузка нужной версией: управление из файла *.config

Слайд 25


Домены приложения Процесс состоит из одного или нескольких доменов В рамках домена работает один или несколько потоков Домен приложения полностью...
Описание слайда:
Домены приложения Процесс состоит из одного или нескольких доменов В рамках домена работает один или несколько потоков Домен приложения полностью изолирует используемые в его рамках ресурсы от других доменов (за исключением удаленного доступа к данным)

Слайд 26


Тип AppDomain
Описание слайда:
Тип AppDomain

Слайд 27


Работаем с доменами приложения namespace MyAppDomain { using System; using System.Windows.Forms; // Это пространство имен требуется для работы с...
Описание слайда:
Работаем с доменами приложения namespace MyAppDomain { using System; using System.Windows.Forms; // Это пространство имен требуется для работы с типом Assembly using System.Reflection; public class MyAppDomain { public static void PrintAllAssemblies() { // Получаем список всех загруженных в текущий домен приложения сборок AppDomain ad = AppDomain.CurrentDomain; Assembly[] loadedAssemblies = ad.GetAssemblies(); Console.WriteLine("Here are the assemblies loaded in " + "this appdomain\n"); // Теперь выводим полное имя для каждой сборки foreach(Assembly a in loadedAssemblies) Console.WriteLine(a.FullName); } public static int Main(string[] args) { // Производим принудительную загрузку System.Windows.Forms.dll MessageBox.Show("Loaded System.Windows.Forms.dll"); PrintAllAssemblies(); return 0; } } }

Слайд 28


Пространство имен System.Threading Interlocked – синхронизация общего доступа к данным Monitor – синхронизация потоковых объектов Mutex – примитив...
Описание слайда:
Пространство имен System.Threading Interlocked – синхронизация общего доступа к данным Monitor – синхронизация потоковых объектов Mutex – примитив синхронизации Thread – поток, работающий в .NET ThreadPool – управление набором взаимосвязанных потоков Timer – определяет делегат, который будет вызван в указанное время WaitHandle – представляет все объекты синхронизации ThreadStart – делегат со ссылкой на метод, который должен быть вызван перед запуском потока TimerCallback – делегат для объектов Timer WaitCallback – делегат для рабочих элементов ThreadPool

Слайд 29


Статические члены класса Thread
Описание слайда:
Статические члены класса Thread

Слайд 30


Обычные члены класса Thread
Описание слайда:
Обычные члены класса Thread

Слайд 31


Запуск вторичных потоков // вспомогательный класс internal class WorkerClass { public void DoSomeWork() { // Выводим на консоль информацию о рабочем...
Описание слайда:
Запуск вторичных потоков // вспомогательный класс internal class WorkerClass { public void DoSomeWork() { // Выводим на консоль информацию о рабочем потоке Console.WriteLine("ID of worker thread is: {0}", Thread.CurrentThread.GetHashCode()); // Выполняем некоторые действия Console.Write("Worker says: "); for (int i = o; i < 10; i++) { Console.Write(i+ ", "); } Console.WriteLine(); } }

Слайд 32


Запуск вторичных потоков using System.Threading; public class MainClass { public static int Main(string[] args) { // Выводим на консоль информацию о...
Описание слайда:
Запуск вторичных потоков using System.Threading; public class MainClass { public static int Main(string[] args) { // Выводим на консоль информацию о текущем потоке Console.WriteLine("ID of primary thread is: {0}", Thread.CurrentThread.GetHashCode()); // Создаем объект класса WorkerClass WorkerClass w = new WorkerClass(); // А теперь создаем и запускаем фоновый поток Thread backgroundThread = new Thread(new ThreadStart(w.DoSomeWork)); backgroundThread.Start(); return 0; } }

Слайд 33


Именованные потоки using System.Threading; public class MainClass { public static int Main(string[] args) { // Присваиваем имя текущему потоку Thread...
Описание слайда:
Именованные потоки using System.Threading; public class MainClass { public static int Main(string[] args) { // Присваиваем имя текущему потоку Thread primaryThread = Tread.CurrentThread; primaryThread.Name = "Boss man"; Console.WriteLine("Id of {0} is {1}", primaryThread.Name, promaryThread.gethascode()); // … return 0; } }

Слайд 34


Параллельная работа потоков public static int Main(string[] args) { Console.Write("Do you want [1] or [2] threads? "); string threadCount =...
Описание слайда:
Параллельная работа потоков public static int Main(string[] args) { Console.Write("Do you want [1] or [2] threads? "); string threadCount = Console.ReadLine(); // Создаем объект класса WorkerClass WorkerClasss w = new WorkerClass(); // Создаем дополнительный поток, только если это указано if(threadCount = = "2") { // Создаем дополнительный поток Thread backgroundThread = new Thread(new ThreadStart(w.DoSomeWork)); backgroundThread.Start(); } else w.DoSomeWork(); // Даем первичному потоку свое задание MessageBox.Show("I'm busy!"); return 0; }

Слайд 35


Как «усыпить» поток internal class WorkerClass { public void DoSomeWork() { // Выводим информацию о рабочем потоке Console.WriteLine("ID of...
Описание слайда:
Как «усыпить» поток internal class WorkerClass { public void DoSomeWork() { // Выводим информацию о рабочем потоке Console.WriteLine("ID of worker thread is: {0}", Thread.CurrentThread.GetHashCode()); // Делаем работу "с перекурами" Console.Write("Worker says: "); for(int i = 0; i < 5; i++) { Console.WriteLine(i + ", "); Thread.Sleep(5000); } Console.WriteLine(); } }

Слайд 36


Одновременный доступ к данным из разных потоков public class MainClass { public static int Main(string[] args) { // Создаем единственный объект...
Описание слайда:
Одновременный доступ к данным из разных потоков public class MainClass { public static int Main(string[] args) { // Создаем единственный объект класса WorkerClass WorkerClass w = new WorkerClass(); // Создаем три отдельных потока, каждый из которых производит вызов // к одному и тому же объекту Thread workerThreadA = new Thread(new ThreadStart(w.DoSomeWork)); Thread workerThreadB = new Thread(new ThreadStart(w.DoSomeWork)); Thread workerThreadC = new Thread(new ThreadStart(w.DoSomeWork)); // Теперь запускаем все три потока WorkerThreadA.Start(); WorkerThreadB.Start(); WorkerThreadC.Start(); return 0; } }

Слайд 37


Ключевое слово lock internal class WorkerClass { public void DoSomeWork() { // Только один поток в конкретный момент времени сможет // выполнять этот...
Описание слайда:
Ключевое слово lock internal class WorkerClass { public void DoSomeWork() { // Только один поток в конкретный момент времени сможет // выполнять этот код! lock(this) { // Делаем все ту же работу for(int i=0; i < 5; i++) { Console.WriteLine("Worker says: {0},", i); } } } }

Слайд 38


Использование System.Threading.Monitor internal class WorkerClass { public void DoSomeWork() { // Определяем элемент для мониторинга в целях...
Описание слайда:
Использование System.Threading.Monitor internal class WorkerClass { public void DoSomeWork() { // Определяем элемент для мониторинга в целях синхронизации Monitor.Enter(this); try { // Выполнить работу... for(int i = 0; i < 5; i++) { Console.WriteLine("Worker says: {0},", i); } } finally { // Была ошибка или нет, а из монитора придется выйти Monitor.Exit(this); } } }

Слайд 39


Опасность одновременного изменения переменной public class IHaveNoIdea { private long refCount = 0; public void AddRef() { ++refCount; } public void...
Описание слайда:
Опасность одновременного изменения переменной public class IHaveNoIdea { private long refCount = 0; public void AddRef() { ++refCount; } public void Release() { if(--refCount == 0) { GC.Collect(); } } }

Слайд 40


Применение System.Threading.Interlocked public class IHaveNoIdea { private long refCount = 0; public void AddRef() { Interlocked.Increment(ref...
Описание слайда:
Применение System.Threading.Interlocked public class IHaveNoIdea { private long refCount = 0; public void AddRef() { Interlocked.Increment(ref refCount); } public void Release() { if (Interlocked.Decrement(ref refCount) == 0) { GC.Collect(); } } }



Похожие презентации
Mypresentation.ru
Загрузить презентацию