Информационная система управления контактами компьютерного магазина

Автор работы: Пользователь скрыл имя, 10 Января 2014 в 00:06, курсовая работа

Краткое описание

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

Содержание

Введение. 2
1. Исследовательская часть 7
1.1. Моделирование системы 7
Требования к системе. 8
1.11. Постановка задачи 9
Техническое задание 10
1) Введение 10
Основание для разработки 10
Назначение разработки 10
Система предназначена для автоматизации и наглядности управления рабочим процессом компании, упрощения процесса взаимодействия персонала и клиентов. 10
Требование к программе или программному изделию 11
Требование к функциональным характеристикам 11
4.2.) Требования к надежности 13
4.3.) Требования к производительности 14
4.4.) Требования к модифицируемости 14
4.5.) Требования к безопасности 15
4.6. Требования к составу и параметрам технических средств 16
4.7. Требования к информационной и программной совместимости 16
4.8. Требования к маркировке и упаковке 16
4.9. Требования к транспортированию и хранению 16
4.10. Требования к программной документации 16
4.11. Планирование тестирования 16
Стадии и этапы разработки 17
Конструкторская часть 18
4.1. Выбор СУБД 18
4.2. Выбор языка программирования 20
4.3. Технологии программирования 20
4.4 Сетевое взаимодействие 23
Базовые сведения о сокетах 24
Установление соединений 27
Сериализация. 28
Логика работы программы. 30
4.6.4 Диаграмма классов 31
Заключение 34
Литература: 36
Ссылки на Web-ресурсы: 36

Прикрепленные файлы: 1 файл

РПЗСИСРК.docx

— 228.09 Кб (Скачать документ)

В данном проекте используется механизм сервис – база-база.

Запросы идут на локальный компьютер  на сервис MSSQL. К примеру – на локальном компьютере стоит сервис MSSQL 2012 именованный Zeus.

Сервис ZEUS – в зависимости от нагрузки перенаправляет запрос от ZEUS к именованным экземплярам – AFINA и GERA. Сервис AFINA держит две базы данных, действующих по принципу RAID 1. Агент SQLSERVER zeus – обеспечивает зеркалирование БД и целостность данных между AFINA и GERA, а агент AFINA – целостность данных в базах  AFINA 1 и AFINA 2.

 

4.2. Выбор языка программирования

В качестве языка программирования в данной работе выбран язык C# и среда

.NET из-за простоты и скорости разработки, большого количества встроенных функций и библиотек. Среда разработки  - Visual Studio 2012, из-за скорости разработки приложений в .net.

4.3. Технологии программирования

В качестве технологии разработки используется паттерн проектирования  Observer(наблюдатель) и его частный случай Publisher/Subscriber/Broker.

Механизм публикация-подписка (Publish/Subscribe) позволяет поставлять информацию от поставщика к потребителю. Эта модель стала особенно популярной в последние годы благодаря тому, что часто меняющаяся информация может поставляться постоянно многим получателям. Одним из типичных примеров такой информации являются данные на рынке акций и валют. В такой модели издателю необязатеьно знать о местонахождении получателя и наоборот. В модели Request/Reply движение информации начинается по запросу потребителя (клиента). В модели Publish/Subscribeдвижение информации начинается по мере ее появления и поступления от поставщика.

Поставщика информации принято  называть издатель (publisher). издатель предлагает информацию на определенные темы. Потребитель информации называется подписчиком (subscriber), он подписывается на получение информации на определенные темы. Информация, которую получает один подписчик, может передаваться другим подписчикам.

Информация, посылаемая как  сообщение, характеризуется темой. издатель посылает информацию только на те темы, на которые сделана подписка. Взаимодействие между издателями и подписчикамиконтролируется посредником или брокером (broker). Взаимосвязанные темы группируются совместно в потоки (stream). издатель может применять потоки для ограничения диапазонов тем издателей иподписчиков. Через брокера идет поток, который использует все темы. На рис.10.1 представлена схема, иллюстрирующая взаимодействие брокеров, издателей и подписчиков.

 
Рис. 10.1.  Схема взаимодействия брокеров, издателей и подписчиков

Общий подход работы механизма Publish/Subscribe лучше всего иллюстрируется на примере трех видов сценариев, которые реализуются на основе командных сообщений.

Сценарий издатель-брокер.

  1. издатель регистрирует свое намерение публиковать информацию по определенным темам.
  2. издатель посылает сообщение-публикацию брокеру, содержащее дату публикации. Сообщение может быть перенаправлено брокером непосредственно подписчикам, или может храниться уброкера, пока его не востребует подписчик.
  3. издатель может послать сообщение брокеру, чтобы хранящаяся у него публикация была удалена.
  4. издатель может отказаться от регистрации у брокера, когда он заканчивает отправку сообщений на определенную тему.

Сценарий подписчик-брокеру.

  1. подписчик регистрируется у брокера, определяя темы, которые его интересуют.
  2. брокер начинает посылать подписчику публикации на заданные темы. подписчик может потребовать выдать публикации, хранящиеся у брокера.

Сценарий брокер-брокер реализуется в виде следующих взаимодействий

  1. брокеры могут обмениваться регистрациями подписчиков и прекращать регистрации.
  2. брокеры могут обмениваться публикациями и требованиями на удаление публикаций.
  3. брокеры могут обмениваться информацией о самих себе.

4.4 Сетевое взаимодействие

Сетевое взаимодействие обеспечивается с помощью сокетов.

На рисунке изображено взаимодействие двух процессов через Интернет посред-ством.сокетов (хотя в представленной ситуации используется протокол TCP, с тем же успехом это  мог бы быть протокол UDP). Как можно  видеть, сокет представляет собой  интерфейс между прикладным и  транспортным уровнями хоста. Сокет  также часто называют прикладным программным интерфейсом (API), осуществляющим связь приложения и компьютерной сети. Под контролем разработчика приложения практически целиком  находится часть сокета, относящаяся  к прикладному уровню, чего нельзя сказать о его «транспортной» части. Здесь в компетенции разработчика лишь выбор протокола транспортного  уровня и установка значений нескольких параметров транспортного уровня (максимальный размер буфера, максимальный размер сегмента и др.). Приложение всегда строится с  использованием единственного транспортного  протокола. Мы вернемся к обсуждению сокетов в разделах «Программирование  ТСР-сокетов» и «Программирование UDP-сокетов» этой главы.

Базовые сведения о сокетах

Windows Sockets API (WSA), название которого было укорочено до Winsock. Это техническая спецификация, которая определяет, как сетевое программное обеспечение Windows будет получать доступ к сетевым сервисам, в том числе, TCP/IP. Он определяет стандартный интерфейс между клиентским приложением (таким как FTP клиент или веб-браузер) и внешним стеком протоколов TCP/IP. Он основывается на API модели сокетов Беркли, использующейся в BSD для установки соединения между программами.

 

Сокеты определяют конечные точки взаимодействия (обычно через  сеть). Они поддерживают целый ряд  протоколов, самыми популярными из которых сегодня являются User Datagram Protocol (UDP) и Transmission Control Protocol (TCP).

UDP-сокеты не требуют установления логических соединений и обычно применяются для широковещательной и многоадресной (multicast) связи. В UDP нет средств надежной доставки сообщений и контроля правильного порядка пакетов, поэтому за обнаружение потери пакетов, устранение таких проблем и упорядочение пакетов отвечает приложение-получатель.

TCP-сокеты ориентированы  на логические соединения, предоставляя надежный коммуникационный путь двумя конечными точками. Важное преимущество TCP в том, что он гарантирует доставку сообщений и правильный порядок пакетов. В этой статье основное внимание уделяется TCP-сокетам.

TCP-сокеты могут быть  либо клиентскими, либо серверными. Серверный сокет ожидает запросы  на установление соединений, а клиентский — инициирует соединение. Как только соединение между сокетами установлено, клиент и сервер могут передавать и принимать данные или закрыть это соединение.

Чтобы настроить серверный TCP-сокет в управляемом коде, прежде всего нужно создать экземпляр класса Socket. Его конструктор принимает три параметра: AddressFamily, SocketType и ProtocolType. Параметр AddressFamily определяет используемую сокетом схему адресации. Чаще всего в качестве этого параметра используются значения InterNetwork (для адресов IPv4) и InterNetworkV6 (для адресов IPv6). Параметр SocketType определяет тип коммуникационной связи, осуществляемой при помощи сокета; к двум наиболее распространенным типам относятся Stream (для сокетов, ориентированных на логические соединения) и Dgram (если сокет не требует логических соединений). Параметр ProtocolType определяет применяемый сокетом протокол и принимает такие значения, как Tcp, Udp, Idp, Ggp и т. д. Например, создать сокет для взаимодействия по протоколу TCP можно так:

 

Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream,         ProtocolType.Tcp);

Как только сокет создан, его можно привязать к адресу. Привязка клиентского сокета к адресу не обязательна, но в случае серверных сокетов она необходима. Чтобы привязать сокет к адресу, вызовите метод Bind объекта Socket. Этому методу нужен адрес и порт, которые будут сопоставлены с сокетом, поэтому в качестве параметра он принимает экземпляр класса, производного от EndPoint. Как правило, это объект класса IPEndPoint (кроме него в .NET Framework входит только один класс, производный от EndPoint, — IrDAEndPoint, который служит для взаимодействия посредством инфракрасного порта).

Объект IPEndPoint является логическим представлением конечной точки при  сетевой коммуникации и включает данные об IP-адресе и порте. Конструктор IPEndPoint принимает IP-адрес и номер  порта. Номер порта - это просто целочисленный  тип, определяющий используемый порт, а IP-адрес может быть представлен .NET-классом IPAddress или длинным целым  числом (при этом каждый из сегментов IP-адреса представляется одним байтом целочисленного типа). Класс IPAddress содержит несколько предопределенных IP-адресов, для доступа к которым служат статические свойства; двумя самыми полезными адресами при работе с TCP-сокетами являются IPAddress.Loopback и IPAddress.Any.

Свойство IPAddress.Loopback представляет адрес обратной связи, т. е. локальный адрес компьютера (127.0.0.1). Этот адрес не имеет никакого отношения ни к оборудованию, ни к сетевой связи — он позволяет выполнять локальное тестирование даже в отсутствие сети и сетевого оборудования. Именно он используется, когда вы указываете в качестве имени хоста «localhost», хотя это можно изменить, отредактировав файл hosts в каталоге %windir%\system32\drivers\etc.

Свойство IPAddress.Any (0.0.0.0)  указывает серверу задействовать для прослушивания клиентских запросов все сетевые интерфейсы, а не только интерфейс, сопоставленный с конкретным IP-адресом (в этом отношении UDP- и TCP-сокеты немного различаются). Почему бы не использовать это свойство всегда? Ну, во-первых, тогда вы не сможете контролировать, кто подключается к вашему серверу. Если у сервера несколько сетевых адаптеров, вы можете прослушивать соединения на одном интерфейсе (например, подключенном к корпоративной сети) и блокировать другой интерфейс (скажем, подключенный к интернету), задав сетевой адрес, на котором нужно вести прослушивание.

Вторая причина связана  с безопасностью. Если сокет настроен на повторное использование адреса (т. е. сокет можно привязать к уже задействованному адресу) и кто-то подключается к порту, с которым работает ваше серверное приложение, то подсистема управления сокетами решает, какой сокет должен получить пакет, поступивший в этот порт. Как правило, данные получает серверное приложение, более «тесно» связанное с портом (которое при вызове метода Bind указало более специфичный адрес). Пространство имен System.Net.NetworkInformation включает классы, позволяющие получить подробную информацию о каждом сетевом интерфейсе системы. Так, следующий код выводит все индивидуальные (unicast) IP-адреса каждого сетевого адаптера:

foreach (NetworkInterface nic in    

NetworkInterface.GetAllNetworkInterfaces())

{  

  Console.WriteLine(nic.Name);   

foreach (UnicastIPAddressInformation addrInfo in         nic.GetIPProperties().UnicastAddresses)    

{         Console.WriteLine("\t" + addrInfo.Address);     } }

Чтобы привязать сокет  к конкретному сетевому адаптеру, вы можете узнать IP-адрес этого адаптера и указать его при вызове конструктора IPEndPoint.

Установление соединений

Вероятно, приложению потребуется  адрес сервера — для установления соединения или для привязки сокета к этому адресу. Один способ получения адреса сервера предоставляет класс System.Net.Dns. Он содержит ряд статических методов, служащих для преобразования IP-адреса в имя хоста и наоборот. Метод Dns.GetHostEntry возвращает объект IPHostEntry, содержащий соответствующую информацию о компьютере и позволяющий узнать все IP-адреса компьютера, которые известны DNS-серверу. Для упрощения в этой статье я буду использовать первый адрес из списка.

После вызова метода Bind метод Socket.Listen конфигурирует для сокета внутренние очереди. Когда клиент пытается подключиться к серверу, в очередь помещается запрос соединения. Метод Listen принимает один аргумент — максимальное число запросов соединений, которые могут находиться в очереди. Метод Socket.Accept извлекает из очереди первый запрос и возвращает новый объект Socket, который можно использовать для коммуникационного взаимодействия с клиентом.

В случае клиентского сокета после создания объекта Socket обычно вызывается метод Connect. Вы также можете сначала вызвать метод Bind, если нужно, чтобы клиент использовал конкретный порт. Если вы не связали клиентский сокет с портом, метод Connect выберет порт автоматически. При вызове Connect клиентское приложение пытается установить соединение с сервером. Метод Connect также принимает объект EndPoint, через который определяется целевой удаленный хост. Как только соединение установлено, клиент и сервер могут передавать данные методами Send и Receive.

Сериализация.

Сериализация представляет собой  процесс преобразования объекта  в поток байтов с целью сохранения его в памяти, в базе данных или  в файле. Ее основное назначение —  сохранить состояние объекта  для того, чтобы иметь возможность  воссоздать его при необходимости. Обратный процесс называется десериализацией.

Как работает сериализация.

Объект сериализуется в поток, который переносит не только данные, но сведения о типе объекта, такие  как его версию, язык и региональные параметры, а также имя сборки. Из этого потока объект можно сохранить  в базе данных, файле или памяти.

 Применение сериализации

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

Информация о работе Информационная система управления контактами компьютерного магазина