Симон Робинсон - C# для профессионалов. Том II

Тут можно читать онлайн Симон Робинсон - C# для профессионалов. Том II - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Лори, год 2003. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    C# для профессионалов. Том II
  • Автор:
  • Жанр:
  • Издательство:
    Лори
  • Год:
    2003
  • Город:
    Москва
  • ISBN:
    5-85582-187-0
  • Рейтинг:
    4.88/5. Голосов: 81
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

Симон Робинсон - C# для профессионалов. Том II краткое содержание

C# для профессионалов. Том II - описание и краткое содержание, автор Симон Робинсон, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
C# для профессионалов

Платформа .NET предлагает новую среду, в которой можно разрабатывать практически любое приложение, действующее под управлением Windows, а язык C# — новый язык программирования, созданный специально для работы с .NET.

В этой книге представлены все основные концепции языка C# и платформы .NET. Полностью описывается синтаксис C#, приводятся примеры построения различных типов приложений с использованием C# — создание приложений и служб Windows, приложений и служб WWW при помощи ASP.NET, а также элементов управления Windows и WWW Рассматриваются общие библиотеки классов .NET, в частности, доступ к данным с помощью ADO.NET и доступ к службе Active Directory с применением классов DirectoryServices.

Для кого предназначена эта книга

Эта книга предназначена для опытных разработчиков, возможно, имеющих опыт программирования на VB, C++ или Java, но не использовавших ранее в своей работе язык C# и платформу .NET. Программистам, применяющим современные технологии, книга даст полное представление о том, как писать программы на C# для платформы .NET.

Основные темы книги

• Все особенности языка C#

• C# и объектно-ориентированное программирование

• Приложения и службы Windows

• Создание web-страниц и web-служб с помощью ASP NET

• Сборки .NET

• Доступ к данным при помощи ADO NET

• Создание распределённых приложений с помощью NET Remoting

• Интеграция с COM, COM+ и службой Active Directory

C# для профессионалов. Том II - читать онлайн бесплатно полную версию (весь текст целиком)

C# для профессионалов. Том II - читать книгу онлайн бесплатно, автор Симон Робинсон
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Отладку и поиск неисправностей в приложениях, использующих .NET, можно проводить через службы удаленного отслеживания. Класс System.Runtime.Remoting.Services.TrackingServiceпредоставляет службу слежения для получения информации о том, когда происходит маршализация и демаршализация, когда вызываются удаленные объекты и разъединяются и т. д.

□ С помощью служебного класса TrackingServicesрегистрируется и отменяется регистрация обработчика, который реализует ITrackingHandler.

□ Интерфейс ITrackingHandlerвызывается, когда на удаленном объекте или на прокси происходит событие. Можно реализовать три метода в обработчике: MarshaledObject(), UnmarshaledObject()и DisconnectedObject().

Чтобы увидеть службы слежения в действии на клиенте и на сервере, создадим новую библиотеку классов TrackingHandler. Класс TrackingHandlerреализует интерфейс ITrackingHandler. В методах задаются два аргумента: сам объект и ObjRef. С помощью ObjRefвыдается информация об URI, канале и уполномоченных приемниках. Можно также присоединить новые приемники для добавления спонсоров всех вызываемых методов. В данном примере на консоль записывается URI и информация о канале.

using System;

using System.Runtime.Remoting;

using System.Runtime.Remoting.Services;

namespace Wrox.ProfessionalCSharp (

public class TrackingHandler : ITrackingHandler {

public TrackingHandler() {

}

public void MarshaledObject(object obj, ObjRef or) {

Console.WriteLine("--- Marshaled Object " + obj.GetType() + " ---");

Console.WriteLine("Object URI: " + or.URI);

object[] ChannelData = or.ChannelInfo.ChannelData;

foreach(object data in ChannelData) {

ChannelDataStore dataStore = data as ChannelDataStore;

if (dataStore != null) {

foreach (string uri in dataStore.ChannelUris) {

Console.WriteLine("Channel URI: " + uri);

}

}

}

Console.WriteLine("---------");

Console.WriteLine();

}

public void UnmarshaledObject(object obj, ObjRef or) {

Console.WriteLine("Unmarshal");

public void DisconnectedObject(Object obj) {

Console.WriteLine("Disconnect");

}

}

}

Серверная программа изменяется, чтобы регистрировать TrackingHandler. Необходимо добавить только две строки, чтобы зарегистрировать обработчик.

using System.Runtime.Remoting.Services;

// ...

public static void Main(string[] args) {

TrackingServices.RegisterTrackingHandler(new TrackingHandler());

TCPChannel channel = new TCPChannel(8086);

// ...

При запуске сервера первый экземпляр создается во время регистрации хорошо известного типа, и мы получаем следующий вывод. Вызывается MarshaledObject()и выводит тип объекта для маршализации — Wrox.ProfessionalCSharp.Hello. С помощью Object URI мы видим GUID, который, используется внутренне в удаленной среде выполнения для различения определенных экземпляров и URI. С помощью канала URI можно проверить конфигурацию канала. В этом случае именем хоста будет Cnagel:

Асинхронная удаленная работа Если серверные методы требуют времени для - фото 129

Асинхронная удаленная работа

Если серверные методы требуют времени для завершения работы и клиенту нужно произвести некоторую другую работу в это время- то необходимо запустить отдельный поток выполнения, чтобы сделать удаленный вызов. Асинхронные вызовы могут делаться на удаленном объекте так же, как они делаются на локальном объекте.

Чтобы сделать асинхронный метод, создается делегат GreetingDelegateс тем же аргументом и возвращается значение как метод Greeting()удаленного объекта. Аргумент этого делегата является ссылкой на метод Greeting(). Мы запускаем вызов Greeting(), используя метод делегата BeginInvoke(). Второй аргумент BeginInvoke()является экземпляром: AsyncCallback, определяющим метод НеlloClient.Callback(), который вызывается когда удаленный метод заканчивается. В методе Callback()удаленный вызов заканчивается с помощью EndInvoke():

using System;

using System.Runtime.Remoting;

namespace Wrox.ProfessionalCSharp {

public class HelloClient {

private delegate String GreetingDelegate(String name);

private statiс string greeting; public static old Main(string[] args) {

RemotingConfiguration.Configure("HelloClient.exe.config");

Hello obj = new Hello();

if (obj == null) {

Console.WriteLine("could not locate server");

return 0;

}

// синхронная версия

// string greeting = obj.Greeting("Christian");

// асинхронная версия

GreetingDelegate d = new GreetingDelegate(obj.Greeting);

IAsyncResult ar = d.BeginInvoke("Christian", null, null);

// выполнить некоторую работу и затем ждать

ar.AsyncWaitHandle.WaitOne();

if (ar.IsCompleted) {

greeting = d.EndInvoke(ar);

}

Console. WriteLine(greeting);

}

}

}

О событиях, делегатах и асинхронных методах можно прочитать в главе 6.

Атрибут OneWay

Метод, который возвращает voidи имеет только входящие параметры, может быть помечен атрибутом OneWay. Атрибут OneWayделает метод автоматически асинхронным независимо от того, как вызывает его клиент. Добавление метода TakeAWhile()в класс удаленного объекта RemoteHelloсоответствует созданию метода "породить и забыть". Если клиент вызывает его через прокси, то прокси немедленно возвращает управление клиенту. На сервере метод заканчивается немного позже:

[OneWay]

public Void TakeAWhile(int ms) {

Console.WriteLine("TakeAWhile started");

System.Threading.Thread.Sleep(ms);

Console.WriteLine("TakeAWhile finished");

}

Удаленное выполнение и события

С помощью .NET Remoting не только клиент может вызывать методы на удаленном объекте через сеть, но и сервер может также вызывать методы на клиенте. Для этого используются детали механизма основных свойств языка: делегаты и события.

В принципе это простая архитектура. Сервер имеет объект, который может вызывать клиент, а клиент имеет объект, который в свою очередь может вызывать сервер:

□ Удаленный объект на сервере должен объявить внешнюю функцию (делегата) с сигнатурой метода, который клиент будет реализовывать в обработчике.

□ Аргументы, которые передаются клиенту с функцией-обработчиком, должны быть маршализуемыми. Поэтому все посылаемые клиенту данные должны быть сериализуемыми.

□ Удаленный объект должен также объявить экземпляр функции делегата, модифицированный ключевым словом event. Клиент будет использовать его для регистрации обработчика.

□ Клиент должен создать объект приемника с методом обработчика, имеющий такую же сигнатуру, как и определенный делегат, и должен зарегистрировать объект приемника для события на удаленном объекте.

Чтобы понять это, рассмотрим пример. Создадим пять классов для всех частей обработки событий в .NET Remoting. Класс Serverявляется удаленным сервером, таким как один из тех, которые уже до этого встречались. Класс Serverбудет создавать канал на основе информации из конфигурационного файла и регистрировать удаленный объект, который реализуется в классе RemoteObjectв удаленной среде выполнения. Удаленный объект объявляет аргументы делегата и порождает события в зарегистрированных функциях обработчика. Аргумент, который передается в функцию обработчика, имеет тип StatusEventArgs. Класс StatusEventArgsдолжен быть сериализуемым, поэтому его можно маршализовать клиенту.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Симон Робинсон читать все книги автора по порядку

Симон Робинсон - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




C# для профессионалов. Том II отзывы


Отзывы читателей о книге C# для профессионалов. Том II, автор: Симон Робинсон. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x