Автор работы: Пользователь скрыл имя, 20 Августа 2013 в 23:24, дипломная работа
Актуальность моей работы заключается в создании инструмента для разработки приложений, связанных между собой по сети и работающих как единая система.
Сейчас распространена клиент-серверная сетевая архитектура, в которой задания или сетевая нагрузка распределены между поставщиками услуг (сервисов), называемыми серверами, и заказчиками услуг, называемыми клиентами. Нередко клиенты и серверы взаимодействуют через компьютерную сеть и могут быть как различными физическими устройствами, так и программным обеспечением.
Введение 3
Глава 1. Оптимизация приложений 6
1.1 Механизмы оптимизации 6
1.2 Архитектурный принцип построения сетей 9
1.3 Пропускная способность сети 11
1.4 Поток данных 12
1.5 Гибридные сети 20
1.6 Брэндмауэр Windows 22
1.7 Отличие С# от Java 24
1.8 JSON. Передача объектов 36
Глава 2. Программная часть 38
2.1 Среда разработки 38
2.2 Язык программирования 39
2.3 Диаграммы классов 40
2.4 Диаграммы взаимодействия 43
2.5 Алгоритм работы 45
2.6 Интерфейс приложения 47
Заключение 49
Список использованной литературы 50
При современных
нагрузках на сеть даже данная технология
часто не справляется со своими задачами.
Что бы не совершать дорогостоящую
модернизацию на аппаратном уровне все
чаще компании стараются прибегнуть
к программной оптимизации
Поток данных4 (англ. stream) в программировании — абстракция, используемая для чтения или записи файлов, сокетов и т. п. в единой манере.
Потоки являются удобным унифицированным программным интерфейсом для чтения или записи файлов (в том числе специальных и, в частности, связанных с устройствами), сокетов и передачи данных между процессами.
Поддержка потоков включена в большинство языков программирования и едва ли не во все современные (на 2008 год) операционные системы.
При запуске
процесса ему предоставляются
Возможность
перенаправления потоков
Классы потоков в действительности представляют собой оболочки, которые преобразуют базовый байтовый поток в символьный, причем любое преобразование выполняется автоматически.5 Таким образом, символьные потоки построены на основе байтовых, несмотря на то, что они логически отделены друг от друга.
Все классы потоков определены в пространстве имен System.IO. Чтобы иметь возможность использовать эти классы, в начало программы необходимо включить следующую инструкцию: I using System.IO; Для ввода и вывода на консоль не нужно задавать пространство имен System.IO, поскольку класс Console определен в пространстве имен System.
Класс Stream. Центральную часть потоковой С#-системы занимает класс System.IO.
Stream. Класс Stream представляет байтовый поток и является базовым для всех остальных потоковых классов. Этот класс также абстрактный, т.е. мы не можем создать его объект. В классе Stream определен набор стандартных потоковых операций.
C# - Классы потоков.
Классы потоков в действительности представляют собой оболочки, которые преобразуют базовый байтовый поток в символьный, причем любое преобразование выполняется автоматически. Таким образом, символьные потоки построены на основе байтовых, несмотря на то, что они логически отделены друг от друга.
Все классы потоков определены в пространстве имен System. 10. Чтобы иметь возможность использовать эти классы, в начало программы необходимо включить следующую инструкцию: I using System.10;
Для ввода и вывода на консоль не нужно задавать пространство имен System. 10, поскольку класс Console определен в пространстве имен System.
Класс Stream
Центральную
часть потоковой С#-системы
void Closed Закрывает поток
void Flush () Записывает содержимое потока в физическое устройство
int ReadByte
() Возвращает целочисленное
int Read (byte [] buf, Делает попытку прочитать numBytes байт в массив buf, начиная с эле-
int offset, мента buf [offset], возвращает количество успешно прочитанных байтов
int numBytes)
long Seek (long
offset, Устанавливает текущую позицию
потока равной указанному
void WriteByte (byte b) Записывает один байт в выходной поток
void write (byte
[] buf, Записывает поддиапазон
В общем
случае при возникновении ошибки
ввода-вывода методы, представленные в
табл. 14 1, генерируют исключение типа IOException.
При попытке выполнить
Обратите
внимание на то, что в классе
stream определены методы, которые считывают
и записывают данные. Однако не
все потоки поддерживают все
эти операции, поскольку возможен
вариант, когда поток
bool canRead Свойство равно значению true, если из потока можно считывать данные. Это свойство предназначено только для чтения
bool CanSee
k Свойство равно значению true, если
поток поддерживает функцию
bool canwrite
Свойство равно значению true, если
в поток можно записывать
long Length Свойство
содержит длину потока. Это свойство
предназначено только для
long Position Свойство представляет текущую позицию потока. Это свойство можно как читать, так и устанавливать
Байтовые классы потоков
Из класса stream выведены такие байтовые классы потоков.
Класс потока Описание
Bufferedstream Заключает в оболочку байтовый поток и добавляет буферизацию. Буферизация во многих случаях увеличивает производительность
Filestream Байтовый
поток, разработанный для
Memor yStream
Байтовый поток, который
Программист
может также вывести
Символьные классы потоков.
Чтобы создать символьный поток, поместите байтовый поток в одну из символьных потоковых С#-оболочек. В вершине иерархии символьных потоков находятся абстрактные классы TextReader и TextWriter. Класс TextReader предназначен для обработки операций ввода данных, а класс TextWriter — для обработки операций вывода данных. Методы, определенные этими двумя абстрактными классами, доступны для всех их подклассов. Следовательно, они образуют минимальный набор функций ввода-вывода, который будут иметь все символьные потоки.
В случае ошибки эти методы могут генерировать исключение типа iOException. (Некоторые методы могут также генерировать и другие типы исключений.) Особого внимания заслуживает метод ReadLine (), который считывает целую строку текста, возвращая ее в качестве string-значения. Этот метод полезен при считывании входных данных, которые содержат пробелы.
Метод Описание
void close() . Закрывает источник ввода данных
int Peek () Получает следующий символ из входного потока, но не удаляет его. Возвращает значение -1, если ни один символ не доступен
int Read () -
Возвращает целочисленное
Помимо методов Write {) и WriteLine {), в классе TextWriter также определены методы
Close () и Flush ():
virtual void Close() virtual void Flush 0
Метод Flush () записывает все данные, оставшиеся в выходном буфере, на физический носитель информации. Метод Close () закрывает поток.
Из классов
TextReader и TextWriter выведен ряд символьно-
Потоковый класс Описание
streamReader
Предназначен для чтения
streamWriter
Предназначен для записи
stringReader
Предназначен для чтения
Помимо байтовых и символьных потоков, в С# определены два двоичных потоковых класса, которые можно использовать для прямого считывания и записи двоичных данных. Эти классы, которые называются BinaryReader и BinaryWriter, будут рассмотрены ниже в этой главе в теме двоичного файлового ввода-вывода.
Теперь, когда вы получили общее представление о С#-системе ввода-вывода, можно переходить к детальному изучению этой темы, которую, пожалуй, стоит начать с консольного ввода-вывода.
Консольный ввод-вывод данных
Консольный ввод-вывод данных реализуется посредством стандартных потоков Console. In, Console. Out и Console .Error. Консольные классы ввода-вывода использовались, начиная с главы 2, поэтому вы уже с ними знакомы. Как вы убедитесь ниже, они обладают и другими возможностями.
Прежде
всего, важно отметить, что большинство
реальных С#-приложений являются не текстовыми,
или консольными, а графическими
программами или компонентами, которые
опираются на оконный интерфейс,
предназначенный для
Считывание данных из консольного входного потока
Поток Console.
In — экземпляр класса TextReader, поэтому
для доступа к нему можно использовать
методы и свойства, определенные в
классе TextReader. Однако обычно используют
методы, определенные в классе Console,
которые автоматически
Метод Read () используется для считывания одного символа. static int Read()
Метод Read () возвращает следующий символ, считанный с консоли. Он ожидает, пока пользователь не нажмет какую-нибудь клавишу, а затем возвращает результат. Считанный символ возвращается как значение типа int, которое должно быть приведено к типу char. При возникновении ошибки метод Read () возвращает -I, а в случае неудачного исхода операции генерирует исключение типа IOException. По умолчанию консольный ввод данных буферизован (с ориентацией на строки), поэтому, прежде чем введенный с клавиатуры символ будет послан программе, необходимо нажать клавишу .
Рассмотрим
пример программы, которая
using System;
class Kbln {
public static void Main() { char ch;Console.Write(
"Нажмите любую клавишу, а затем — : ");
ch = (char) Console.Read(); // Считывание
// char-значения.
Console.WriteLine("Вы нажали клавишу: " + ch);
Вот
как могут выглядеть
(
Нажмите любую клавишу, а затем — : ю Вы нажали клавишу: ю
Тот
факт, что метод Read () буферизирует
строки, является порой источником
досадных недоразумений. При
Чтобы прочитать строку символов, используйте метод ReadLine (). static string ReadLine()
Метод ReadLine () считывает символы до тех пор, пока не будет нажата клавиша , и возвращает объект типа string. При неудачном завершении метод генерирует исключение типа IOException.
Рассмотрим программу, которая демонстрирует считывание строки из потока
Console. In с помощью метода ReadLine (). // Ввод данных с консоли с помощью метода ReadLine{).
using System;
class ReadString {
public static void Main() { string str;
Console.WriteLine("Введите несколько символов."); str = Console.ReadLine(); Console.WriteLine("Вы ввели: " + str); } I
Вот такие результаты можно получить при выполнении этой программы.
I Введите несколько символов.
I Это всего лишь тест.
I Вы ввели: Это всего лишь тест.
Несмотря на то что методы класса Console являются самым простым способом считывания данных из потока Console. In, можно с таким же успехом вызывать методы базового класса TextReader. Например, перепишем предыдущую программу с использованием методов, определенных в классе TextReader.
Информация о работе Программа по оптимизации передачи данных через сервер