Программа по оптимизации передачи данных через сервер

Автор работы: Пользователь скрыл имя, 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

Файлы: 1 файл

Диплом.docx

— 1.24 Мб (Скачать файл)

// Считывание  строки с клавиатуры благодаря

// непосредственному  использованию свойства Console.In.

 using System;

class ReadChars2 {

public static void MainO { string str;

Console.WriteLine("Введите несколько символов."); str = Console.In.ReadLine0 ; Console.WriteLine ("Вы ввели: " + str1) ;

Обратите  внимание на то, что метод ReadLine () теперь напрямую вызывается для потока Console. in. Здесь важно то, что при необходимости  доступа к методам, определенным в классе TextReader, который является базовым для объекта Console.In, их можно вызывать так, как показано в этом примере.

1.5 Гибридные сети

Существует  множество различных вариаций этих типов топологий. Поскольку мы можем  комбинировать различные топологии  в одной сети, гибридные сети (Рис. 3), являются комбинацией, по крайней мере двух типов топологий.

Например, вы можете объединить несколько сетей  с шиной типа «звезда» (Рис. 2) единым кабелем. Тогда вы создадите сеть с шинной организацией с несколькими сетями с шиной типа «звезда», присоединенных к ней.

                                      Рис. 2 Топология Звезда

Особо следует выделить топологию «дерево», которую можно рассматривать как объединение нескольких «звезд». Именно эта топология является наиболее популярной при построении локальных сетей. Следует упомянуть о сетчатой или сеточной (mesh) топологии, в которой все либо многие компьютеры и другие устройства соединены друг с другом напрямую такая топология исключительно надежна - при обрыве любого канала передача данных не прекращается, т.к. возможно несколько маршрутов доставки информации. Сеточные топологии (чаще всего не полные, а частичные) используются там, где требуется обеспечить максимальную отказоустойчивость сети, например, при объединении нескольких участков сети крупного предприятия или при подключении к Интернету. Отличительные черты гибридных сетей: достоинства серверной сети, многие преимущества одноранговых вычислений, отказоустойчивость.

                                   Рис. 3 Схема гибридной сети

 

Предположим, что имеется сеть, построенная на основе клиент - серверной архитектуры. Где при выходе из строя сервера клиенты (пк) не смогут полноценно взаимодействовать друг с другом. При использовании написанного мною класса-клиента в разработке сетевого приложения, по сути, мы получим гибридную сеть. Благодаря этому, при выходе из строя сервера клиенты не потеряют связь друг с другом. И сервер нами почти не будет использоваться. Так же на него значительно снизится нагрузка.

Тем самым  появляется возможность добавить все  положительные стороны гибридных  сетей на программном уровне.

1.6 Брэндмауэр Windows

Брэндмауэр Windows — встроенный в Microsoft Windows межсетевой экран. Появился в Windows XP SP2. Одним из отличий от предшественника (Internet Connection Firewall) является контроль доступа программ в сеть. Брандмауэр Windows является частью Центра обеспечения безопасности Windows.

Первоначально Windows XP включала ("Internet Connection Firewall"), который (по умолчанию) был выключен из-за проблем совместимости. Настройки "Internet Connection Firewall" находились в  конфигурации сети, поэтому многие пользователи не находили их. В результате в середине 2003 года компьютерный червь Blaster атаковал большое число компьютеров  под управлением Windows, используя  уязвимость в службе Удалённый вызов  процедур.* Через несколько месяцев  червь Sasser провёл аналогичную атаку. В 2004 году продолжалось распространение  этих червей, в результате чего непропатченные машины заражались в течение нескольких минут. Microsoft подверглась критике, и поэтому решила значительно улучшить интерфейс и функциональность Internet Connection Firewall и переименовать его в "Брандмауэр Windows".

В брандмауэр Windows встроен журнал безопасности, который  позволяет фиксировать IP-адреса и  другие данные, относящиеся к соединениям  в домашних и офисной сетях  или в Интернете. Можно записывать как успешные подключения, так и  пропущенные пакеты. Это позволяет  отслеживать, когда компьютер в  сети подключается, например, к web-сайту. Данная возможность по умолчанию отключена (её может включить системный администратор).

Windows XP.

Брандмауэр Windows под Windows XP Service Pack 2

Брандмауэр Windows был выпущен в составе Windows XP Service Pack 2. Все типы сетевых подключений, такие как проводное, беспроводное, VPN и даже FireWire по умолчанию фильтруются через брандмауэр (с некоторыми встроенными исключениями, разрешающими соединения для машин из локальной сети). Это устраняет проблему, когда правило фильтрации применяется лишь через несколько секунд после открытия соединения, создавая тем самым уязвимость. Системные администраторы могут настраивать фаервол, используя групповую политику. Брандмауэр Windows XP не работает с исходящими соединениями (фильтрует только входящие подключения).

Включение Брандмауэра Windows в SP2 - одна из причин (другой причиной стал DCOM activation security), по которой многие корпорации своевременно не приступили к развёртыванию Service Pack 2. Во время выхода SP2 некоторые web-сайты сообщили о проблемах совместимости со многими приложениями (большинство из которых решаются добавлением исключений в брандмауэр).

Windows Server 2003.

В марте 2005 года Microsoft выпустила Windows Server 2003 Service Pack 1, включающий несколько улучшений  в брандмауэр данной серверной операционной системы.

Windows Vista.

Брандмауэр Windows под Windows Vista

Windows Vista добавляет в брандмауэр новые  возможности, улучшающие его развёртывание в корпоративной среде:

Новая оснастка консоли Брандмауэр Windows в режиме повышенной безопасности, позволяющая  получить доступ к дополнительным возможностям, а также поддерживающая удалённое администрирование. Получить к ней доступ можно через Пуск -> Панель управления -> Администрирование -> Брандмауэр Windows в режиме повышенной безопасности или набрав команду "wf.msc".

Фильтр  соединений IPv6.

Фильтрация  исходящего трафика, позволяющая бороться с вирусами и шпионским ПО. Настроить  фильтрацию можно, используя консоль  управления MMC.

Используя расширенный фильтр пакетов, правила  можно применять к определённым диапазонам IP-адресов и портов.

Правила для служб можно задавать, используя  имена служб из списка без необходимости  указывать полное имя службы.

Полностью интегрирован IPsec, позволяя фильтрировать  соединения, основанные на сертификатах безопасности, аутентификации Kerberos и  т.п. Шифрование можно требовать  для любого типа соединения.

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

По – умолчанию  брэндмауэр windows может блокировать всю сетевую активность данного клиента. Если происходит данная ситуация, то его требуется добавить в исключения брэндмауэра.

1.7 Отличие С# от Java

Синтаксис.

Оба языка  используют в качестве синтаксической основы язык программирования C. В частности, от него унаследованы без изменений:

обозначения начала/конца блока кода фигурными  скобками;

обозначения, ассоциативность и приоритет  большинства встроенных операций (присвоение, арифметические, логические, побитовые  операции, операции инкремента/декремента, тернарная условная операция «?:»);

синтаксис описания и использования переменных и  функций (порядок «тип имя», использование  модификаторов, обязательность скобок для функций, описание формальных параметров);

синтаксис всех основных конструкций: условного оператора, циклов, оператора множественного выбора;

отсутствие  процедур (их заменяют функции типа void);

наименования  встроенных элементарных типов(кроме bool, в Java этот тип называется boolean); использование точки с запятой.

Всё это  приводит к тому, что программы  на Java и C# внешне на первый взгляд выглядят чрезвычайно похоже на C-программы. В обоих языках сделаны однотипные расширения и дополнения по отношению  к C (или C++), в частности, расширен алфавит  и введён собственный синтаксис, поддерживающий пакеты, импорт описаний, определение единиц компиляции.

Механизм  работы с динамическими данными  и сборка мусора.

Оба языка  реализуют одну модель работы с динамическими  данными: объекты создаются динамически  с помощью конструкции new, среда  исполнения отслеживает наличие  ссылок на них, а сборщик мусора периодически очищает память от объектов, ссылок на которых нет. Для оптимизации  сборки мусора спецификации языков и  сред исполнения не содержат ограничений  на время жизни объекта после  удаления последней ссылки на него — сборщик работает независимо от исполнения программы, поэтому реальное уничтожение объекта может произойти  в любой момент после удаления последней ссылки до завершения работы программы. В реальности сборщики мусора оптимизируют исполнение так, чтобы  обеспечить приемлемый расход памяти при минимальном замедлении работы программ.

И в Java, и  в C# есть сильные и слабые ссылки на объекты. Оба языка поддерживают методы-финализаторы. Из-за неопределённости момента удаления объекта финализаторы не могут использоваться для освобождения системных ресурсов, занятых объектом, что вынуждает создавать дополнительные методы для «очистки» объекта и вызывать их явно.

C# содержит  в стандартной библиотеке интерфейс  IDisposable и специальную конструкцию  using, гарантирующую своевременный  вызов метода очистки:

 

 

// DisposableClass реализует интерфейс IDisposable и  описывает его метод Dispose

class DisposableClass : IDisposable

{

  public void Dispose()

  {

    // ... Здесь освобождаются занятые экземпляром ресурсы

  }

}

 

using (DisposableClass obj = new DisposableClass(...))

{

  // ... Код, использующий объект obj

}

// ... Здесь  для объекта obj гарантированно  уже вызван метод Dispose

В Java подобной конструкции нет и очистка  объектов может быть выполнена только вручную:

class AnyClass {

  void clear() {

    // ... Здесь находится код очистки 

  }

}

 

AnyClass obj =  new AnyClass(...);

try {

  // ... код, использующий объект obj

}

finally {

  obj.clear(); // - явный вызов метода очистки  объекта по завершении его  использования

}

В Java 7 добавлена  конструкция «try-with-resources», обеспечивающая автоматическую очистку полностью  аналогично C#:

try (BufferedReader br = new BufferedReader(new FileReader(path)) {

    return br.readLine();

}

При выходе из блока try все объекты, которым  присвоено значение в его заголовке (круглых скобках перед блоком операторов), будут очищены. Обязательное условие — классы этих объектов должны реализовывать системный  интерфейс java.lang.AutoCloseable.

 

Внутренние  классы:

Оба языка  позволяют определить класс внутри класса. Внутренние классы Java имеют  доступ к нестатическим членам родительского  класса, то есть «знают о this»; кроме  того, внутри методов можно определять локальные классы, имеющие доступ по чтению к локальным переменным, и безымянные (анонимные) локальные  классы, которые фактически позволяют  создавать экземпляры объектов и  интерфейсов, перекрывающие методы своего класса, непосредственно в  месте их использования. На этом механизме в Java-программах может строиться обработка событий (событие генерирует вызов метода, в исходном классе-обработчике являющегося абстрактным; там, где нужен конкретный обработчик события, программист создаёт экземпляр локального анонимного класса — наследника базового класса-обработчика и непосредственно использует его). Таким образом, исчезает необходимость в специальном типе и синтаксической поддержке для событий, но сам код, создающий обработчики, несколько более сложен для понимания.

Подход C# более напоминает C++. Внутренние классы в C# имеют доступ только к статическим  членам внешнего класса, а для доступа  к нестатическим членам нужно  явно указывать экземпляр внешнего класса. Локальные внутренние классы в C# не поддерживаются, обработка событий  в нём не требует таких классов, поскольку строится на других механизмах.

 

Методы:

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

Информация о работе Программа по оптимизации передачи данных через сервер