Разработка полнофункционального клиент-серверного приложения, реализующего прототип информационной системы

 

Содержание


Введение

1. Основные концепции разработки приложения в трёхуровневой архитектуре

2. Проектное решение, реализующее модель реляционной БД

2.1 Логическая модель данных

2.2 Физическая модель данных

3. Диаграмма функциональных зависимостей

4. Спецификация на разработку интерфейса

5. Диаграммы классов, реализующих уровни презентации, бизнес-логики и базы данных приложения

6. Словесное описание процесса выполнения транзакций

7. Инструкция пользователя по работе с приложением

8. Специальная часть «Инсталляционные файлы приложения»

Заключение

Список литературы


Введение


Интегральные системы, предназначенные для работы с базами данных, основаны на двух взаимодействующих компонентах - клиенте, отвечающем за организацию диалога с пользователем и несущем на себе бизнес-логику, и сервере, обеспечивающем многопользовательскую работу с данными и их целостность. Уровень зависимости бизнеса от информационных систем очень высок. Разработчики занимаются задачами реализации адекватной техническим требованиям функциональности и пользовательского интерфейса, оптимизацией обмена данными между различными компонентами системы. Корпоративные системы обладают высоким уровнем сложности, поэтому они должны быть надёжными и легкоуправляемыми. В результате таких требований появляется необходимость выделения из клиентской и серверной части системы компонентов, несущих строго определенную служебную функциональность.

Целью исследований представленных в данной работе является разработка полнофункционального клиент-серверного приложения, реализующего прототип информационной системы (морской порт). Стандартной информационной моделью для курсового проекта должна стать трехуровневая архитектурная модель, реализованная для Windows - приложения. Также необходимо создать инсталляционный пакет проекта. И показать подключение в проект:

}Файлов динамических библиотек *.dll

}Конфигурационных файлов *.config

}Файлы ресурсов *.rscx

Проект должен создавать ярлык на рабочий стол и в процессе установки должна существовать возможность изменения папки установки проекта.


1. Основные концепции разработки приложения в трёхуровневой архитектуре


Курсовой проект состоит в разработке клиент-серверного приложения. Разработанное приложение, спроектировано исходя из концепции трёхуровневой архитектуры (OLTP-клиент-серверное Windows приложение) (рис. 1).


Рис. 1 - Модель трёхуровневой архитектуры


Рассмотрим первый уровень [1]:

Ui - user Interface (пользователь). Windows-форма с точки зрения реализации (класс - наследник класса Windows форм). События формы - механизм, в котором уровень Ui взаимодействует со следующим уровнем.

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

Третий уровень реализует методы, которые необходимы непосредственно для доступа к БД. Таким образом, создали класс и перенесли функциональность методов, которые включены в ADO.NET.

?? - операторы DML (операторы Select, Insert, Delete…).

Уровень бизнес-логики подразделяется на бизнес-компоненты (ВС) - те части, которые реализуют правила бизнес-логики.

Бизнес-потоки (BW) - используются для организации бизнес-компонент и бизнес-сущностей в некоторой последовательности выполнения или реализации.

Бизнес-сущности (ВЕ) - объекты, которые представляют собой данные из таблиц БД.

Результат Solution - контейнер для Visual Studio. Созданы классы, которые реализуют описанную выше структуру. Результатом проекта должно быть приложение готовое к запуску не из Visual Studio. Таким образом создан инсталляционный пакет.

Достоинства[2]:

по сравнению с клиент-серверной или файл-серверной архитектурой можно выделить следующие достоинства трёхуровневой архитектуры:

·масштабируемость;

·конфигурируемость - изолированность уровней друг от друга позволяет (при правильном развертывании архитектуры) быстро и простыми средствами переконфигурировать систему при возникновении сбоев или при плановом обслуживании на одном из уровней;

·высокая безопасность;

·высокая надежность;

·низкие требования к скорости канала (сети) между терминалами и сервером приложений;

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

Недостатки [2]:

·более высокая сложность создания приложений;

·сложнее в разворачивании и администрировании;

·высокие требования к производительности серверов приложений и сервера базы данных, а, значит, и высокая стоимость серверного оборудования;

·высокие требования к скорости канала (сети) между сервером базы данных и серверами приложений.


2. Проектное решение, реализующее модель реляционной БД


Реляционной базой данных называется база данных, состоящая из набора отношений. Схемой реляционной базы данных называется набор заголовков отношений, входящих в базу данных [3].

Целью разработки любой базы данных является хранение и использование информации о какой-либо предметной области. В РДБ для реализации этой цели имеются следующие инструменты: реляционная модель данных и язык SQL.

При разработке базы данных обычно выделяется несколько уровней моделирования, при помощи которых происходит переход от предметной области к реализации базы данных средствами конкретной СУБД:

·сама предметная область;

·модель предметной области;

·логическая модель данных;

·физическая модель данных;

·собственно база данных и приложения.

Предметная область - это часть реального мира, данные о которой необходимо отразить в базе данных.

Модель предметной области - это наши знания о предметной области. Более информативными при разработке баз данных являются описания предметной области, выполненные при помощи специализированных графических нотаций.

Модель предметной области описывает процессы, происходящие в предметной области, и данные, используемые этими процессами [4]. От того, насколько правильно смоделирована предметная область, зависит успех дальнейшей разработки приложений.


2.1 Логическая модель данных


Различают три уровня логической модели, отличающихся по глубине представления информации о данных:

·диаграмма сущность-связь (Entity Relationship Diagram, ERD);

·модель данных, основанная на ключах (Key Based model, KB);

·полная атрибутивная модель (Fully Attributed model, FA).

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

Модель данных, основанная на ключах, - это более подробное представление данных. Она включает описание всех сущностей и их первичных ключей, а также всех взаимосвязей между сущностями.


Рис. 2 - Диаграмма в нотации ERWIN в графическом виде для логического представления модели


2.2 Физическая модель данных


Физическая модель данных описывается на рисунке 3. Она описывает данные средствами конкретной реляционной СУБД.


Рис. 3 - Диаграмма в нотации ERWIN в графическом виде для физического представления модели


3. Диаграмма функциональных зависимостей


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

Вторая нормальная форма (2НФ) имеет место, когда отношение находится в 1НФ, и все неключевые атрибуты отношения функционально зависят от ключа отношения.

Отношение находится в третьей нормальной форме (3НФ) тогда и только тогда, когда оно находится во 2НФ и все не ключевые атрибуты взаимно независимы, т. е. если ни один из них не является функционально зависимым от другого.

Полная атрибутивная модель является наиболее детальным представлением структуры данных. Она представляет данные в третьей нормальной форме и включает все сущности, атрибуты и связи, это видно на основе рисунка 4.


Рис. 4 - Диаграмма функциональных зависимостей


4. Спецификация на разработку интерфейса


Рис. 5 - Form 1


На рис. 5:

в comboBox1происходит выбор судна благодаря выполнению хранимой процедуры:

PROCEDURE pStPr_11water_craft_idwater_craft

в comboBox2 происходит выбор груза благодаря выполнению хранимой процедуры:

ALTER procedure pStPr_2(@M int)tv.tovar_nazvanie from tovar tvjoin water_craft wt on.tip_id=wt.tip_idwt.water_craft_id=@M

в listBox1 - заносятся результаты выполнения запроса, выдаются данные о том, сколько груза указанного типа подлежит разгрузке в нашем порту для данного судна:

ALTER procedure pStPr_1(@N int, @M varchar(50))t.tip_nazvanie as sudno, c.kolichestvo, tv.Ediniza_izmer, p.[name] as kol from cargo cjoin water_craft wt on.water_craft_id=wt.water_craft_idjoin tip t on.tip_id=t.tip_idjoin tovar tv on.tovar_id=tv.tovar_idjoin polychatel p on.polychatel_id=c.polychatel_idwt.water_craft_id=@N and tv.tovar_nazvanie=@M


Рис. 6 - Form 2

На рисунке 6:

в textBox1 заносятся данные о номере судна, которое пришло в порт раньше остальных с помощью хранимой процедуры:

procedure pStPr_3water_craft_id from water_craftdate_pributiya=(select min(date_pributiya) from water_craft)

в textBox2 заносятся данные о типе судна, которое пришло в порт раньше остальных с помощью хранимой процедуры:procedure pStPr_4(@M int)t.Tip_nazvanie from tip tjoin water_craft wt on.Tip_ID=wt.Tip_IDwt.water_craft_ID=@M

в comboBox1 происходит выбор груза благодаря выполнению хранимой процедуры:

ALTER procedure pStPr_2(@M int)tv.tovar_nazvanie from tovar tvjoin water_craft wt on.tip_id=wt.tip_idwt.water_craft_id=@M

в listBox1 заносятся результаты выполнения запроса, выдается информация о том, сколько груза указанного вида подлежит разгрузке для каждого получателя с судна, которое пришло в порт раньше других:procedure pStPr_5(@M int, @N varchar(50))p.[Name], c.Kolichestvo from cargo cjoin polychatel p on.Polychatel_ID=p.Polychatel_IDjoin water_craft wt on.water_craft_id=wt.water_craft_idjoin tovar t on.tovar_id=t.tovar_id(wt.water_craft_id=@M and t.tovar_nazvanie=@N)


Рис. 7 - Form 3


На рисунке 7:

в comboBox1 происходит выбор получателя благодаря выполнению хранимой процедуры:

procedure pStPr_6[Name] from Polychatel

в listBox1 заносятся результаты выполнения запроса, выдается информация о том, сколько груза всех видов подлежит разгрузке для выбранного получателя со всех судов, упорядочив их по названию груза:

ALTER procedure pStPr_7(@N varchar(50))tv.Tovar_nazvanie, c.Kolichestvo, wt.water_craft_ID, t.Tip_nazvaniecargo cjoin water_craft wt on c.water_craft_ID=wt.water_craft_IDjoin tip t on wt.tip_id=t.tip_idjoin tovar tv on c.Tovar_ID=tv.Tovar_IDjoin polychatel p on c.Polychatel_ID=p.Polychatel_IDp.[Name]=@Nby tv.Tovar_nazvanie asc


Рис. 8 - Form 4


На рисунке 8:

в comboBox1 происходит выбор груза благодаря выполнению хранимой процедуры:procedure pStPr_8tovar_nazvanie from tovarby tovar_nazvanie

в listBox1 заносятся результаты выполнения запроса, выдается информация о получателях, для которых не прибыл груз заданного типа:

ALTER procedure pStPr_9(@N varchar(50))p.[Name] from Polychatel pjoin cargo c on.polychatel_id=c.polychatel_idjoin tovar tv on.tovar_id=tv.tovar_idtv.tovar_nazvanie=@N

На рисунке 9:

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

приложение серверный информационный интерфейс

Рис. 9 - Form 5


Рис. 10 - Form 6


На рисунке 10:

в comboBox1 происходит выбор номера типа судна благодаря выполнению хранимой процедуры (для транзакции №1 - прибытие судна в порт):

PROCEDURE pStPr_12tip_id from tip

в dataGridView1 происходит вывод всех данных таблицы water_craft из базы данных с помощью транзакции (происходит как обновление данных, так и их добавление, т.е. транзакция№1 и №2):

ALTER procedure pTran* from water_craft


5. Диаграммы классов, реализующих уровни презентации, бизнес - логики и базы данных приложения


Рис. 11 - Диаграмма классов. Уровень презентации


Рис. 12 - Диаграммы классов. Уровень БД и бизнес - логики


6. Словесное описание процесса выполнения транзакций


Рис. 13 - Form 6. Форма выполнения транзакции


В данной работе необходимо выполнить транзакции: прибытия судна в порт; убытие судна из порта.

Здесь участвует только таблица water_craft.

DML - команды выполняются в следующей последовательности: вначале выбираются данные из таблицы с помощью команды SELECT, затем происходит добавление записей с помощью команды INSERT, и последним действием происходит сохранение изменений в таблице с помощью команды UPDATE.

При загрузке формы вызывается метода Form6_Load. Все данные таблицы water_craft из базы данных загружаются в dataGridView1. Таблица состоит из девять столбцов: дата ухода, дата прихода, нагруженность, название порта, флаг, капитан, владелец, номер судна, номер типа. В таблице, загруженной в dataGridView1 можно проводить всякого рода изменения:

·чтобы изменить дату ухода судна из порта достаточно кликнуть на любой ячейке столбца даты ухода и произвести изменение;

·если же Вы хотите произвести изменение в какой-либо другой ячейке, нужно сначала нажать кнопку Clear. Если Вы производите изменение в столбцах с типом string, то при нажатии кнопки Clear ячейка станет пустой и изменение теперь можно производить;

·если изменения будут производиться в столбцах типа int или float, то при нажатии кнопки Clear, то в эти ячейки занесется цифра 0, после чего можно производить изменение;

·для изменения даты прихода нужно кликнуть на нужную ячейку этого столбца и произодить изменение станет возможно;

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

Обработка exception и «нелепых» ситуаций:

·если Вы ошибочно ввели неправильный формат влюбой ячейке, произойдет exception и появится сообщение, указыающее на ошибку типа;

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

·если же Вы ввели дату прихода позже даты прибытия, появится подсказка-сообщение, которое укажет Вам на невозможность этой ситуации;

·еще одна ситуация, где есть недопустимая ситуация - одна из ячеек не заполнена, тогда выведется сообщение, которое предлогает проверить введенные значения.

Чтобы добавить новых сведений о судне, достаточно правильно ввести все данные в новом поле таблицы и нажать кнопку Commit. Если же ошибки не было, то операция пройдет успешно и добавления будут сохранены. В этом случае мы переходим в блок finally, в котором благополучно все завершается. Таким же способом нужно производить и изменения в ячейках.

Если же ошибки произошли при выполнении транзакции, мы переходим в блок catch, в котором показывается одна из перечисленных ошибок и транзакция не выполняется, при этом происходит откат транзакции Rollback, произойдет очистка данных, которые были занесены в таблицу, но не были закреплены.

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

7. Инструкция пользователя по работе с приложением


Рис. 14 - Main_Form. Главная форма


На рисунке 14 показана главная форма входа в приложение:

Button1 - кнопка, при нажатии которой выполняется запрос №1. Происходит выдача данных о том, сколько груза указанного типа подлежит разгрузке в нашем порту для данного судна. На Form 1 в comboBox1 выбираем судно, а в comboBox2 выбираем груз. После этого в listBox1 выведется результат данного запроса.

Button2 - кнопка, при нажатии которой выполняется запрос №2. Выдача данных о том, сколько груза указанного вида подлежит разгрузке для каждого получателя с судна, которое пришло в порт раньше других судов. На Form 2 в textBox1 выводится номер судна, которое пришло в порт раньше всего, а в textBox2 - тип этого судна. В comboBox1 нужно выбрать интересующий нас груз и в listBox1 выведется количества груза заданного типа.

Button3 - кнопка, при нажатии которой выполняется запрос №3. Выдача данных о том, сколько груза всех видов подлежит разгрузке для данного получателя со всех судов, упорядочив их по названию груза. На Form 3 в comboBox1нужно выбрать получателя и результат запроса выведется в listBox1 в виде информации о получении груза - товара, количества, номера судна, типа судна.

Button4 - кнопка, при нажатии которой выполняется запрос №4. Найти получателей, для которых не прибыл груз заданного типа. На Form 4 в comboBox1 нужно выбрать груз, а результат занесется в listBox1.

Button5 - кнопка, при нажатии которой выполняется запрос №5. Найти коды грузов, их получателей и отправителей для тех грузов, которые погружены на суда, не подходящие по типу. На Form 5 listBox1 заносится результат запроса в виде номера груза, товара, типа судна, получателя и отправителя.- кнопка, при нажатии которой выполняются транзакции. Прибытие судна в порт и убытие из него. На Form 6 транзакция №1 заполняем таблицу новыми данными о суднах и нажимаем кнопку Commit. Транзакция №2 - выделяем ячейки столбца даты ухода и ставим нужную дату ухода. После этого нажимаем кнопку Commit.


8. Специальная часть «Инсталляционные файлы приложения»


Инсталляционный пакет - это набор файлов, требуемый для установки программы. Основной моей задачей было создание инсталляционного пакета для наших разработанных программ. Удобство его состоит в том, что можно переносить и устанавливать программы, разработанные в Visual Studio, на компьютеры, на которых VS не установлена. Это происходит благодаря наличию компонента Microsoft.NET Framework, который устанавливается совместно с Windows. Еще одно преимущество - сжатость информации, которая будет переноситься.

Самый первый шаг, который нужно сделать, поменять режим компиляции в программе, для которой мы будем создавать установочный пакет. В режиме компиляции Debug, при его запуске появляется папка bin\Debug, которая содержит, кроме готового exe-файла, отладочную информацию. Приложение, подлежащее распространению, должно состоять только из рабочих файлов, поэтому в списке Solution Configurations выбираем режим Release и снова компилируем приложение. При этом в проекте появится папка bin\Release с готовым приложением.

Пакеты установки можно создавать как непосредственно в текущем проекте приложения, так и создавать отдельный пакет, рисунок 15. Мы сделаем в текущем проекте. Кликаем правой кнопкой на Solution Proj_2 и создаем новый проект, тип проекта Setup and Deployment Projects, шаблон - Setup Project, название - Port_BD, рисунок 16.

В окне Solution Explorer щелкаем на названии проекта - Port_BD и затем переходим в окно его свойств, щелкая на вкладку Properties, рисунок 17, (или нажав клавишу F4) - именно так, а не по щелчку в пункте Properties контекстного меню. Дело в том, что в контекстном меню содержатся свойства самого проекта, а в окне Properties - свойства пакета установки, которые нам и нужно настроить.

Рис. 15 - Создание пакета для проекта установки


Рис. 16 - Создание пакета для проекта установки


Рис. 17 - Переход к свойствам проекта установки


В свойствах самого проекта можно указать название выходного файла (Output file name), тип сжатия (Compression) - та самая архивация, которой подвергают все большие программы и даже цифровую подпись (Authenticode signature), рисунок 18.


Рис. 18 - Свойства проекта установки

В свойствах пакета установки можно указать имя автора (в поле Author) и производителя (Manufacturer), сайт (ManufacturerUrl) и его поддержки, телефоны (SupportPhone), версия (Version) и другие настройки.

Для добавления сборок (в данном примере единственная сборка, которую необходимо добавить - основная исполняемая программа (Proj_2.exe) необходимо щелкнуть правой кнопкой мышки на проекте в Solution Explorer, либо выбрать команду меню Project/Add (Проект/Добавить), которая имеет четыре опции:

}Project Output - выходные данные проекта;

}File (Файл) - используется для добавления текстового файла readme или любого другого файла, не являющегося частью процесса сборки;

}Merge Module (Модуль слияния) - модуль слияния, созданный отдельно;

}Assembly (Сборка) - эту опцию следует использовать для выбора сборки, являющейся частью инсталляции.

В нашем случае выберем Assembly.

Появится окно Select Component, выбираем вкладку Browse, выбираем путь bin\Release имя файла Proj_2.exe. Результат операций показан на рисунке 19.


Рис. 19 - Подключение файла

Для подключения конфигурационных файлов нужно на вкладке Port_DB выбрать Add\File и в папке bin\Release выбрать файл Proj_2.exe.config.

Для добавления других файлов, например, файлы ресурсов, необходимо выбрать путь Add\ Project Output\Localized resources, после этого появится сборка ресурсов для проекта.

В свойствах папки Application Folder задаем путь в поле DefaultLocation, куда автоматически будет записан файл при установке, рисунок 20.


Рис. 20 - Путь установки файла


Переходим в папку bin/Release и выбираем файл Proj_2.exe. Добавим два ярлыка приложения в пакет - они будут появляться при установке программы на Рабочем столе и в меню "Пуск". Щелкаем правой кнопкой на имени добавленной сборки и выбираем пункт Create Shortcut to Proj_2.exe. Создадим два ярлыка и переименуем их, рисунок 21.


Рис. 21 - Создание ярлыков


Теперь "хватаем" мышью по очереди эти ярлыки и помещаем их в папки User's Desktop и User's Programs Menu, рисунок 22.


Рис. 22 - Переносим ярлыки


Переходим в папку Users Desktop и, выделив ярлык, открываем окно его свойств. В поле свойства Icon щелкаем на значение Browse из выпадающего списка, в появившемся окне снова щелкаем на кнопку Browse. В окне Select Item in Project в выпадающем списке "Look in:" выбираем значение Application Folder и щелкаем на ставшую доступной кнопку Add File…. Выбираем нужную нам иконку, в данном случай sailing-ship.ico и закрываем окна Select Item in Project и Icon. Проделываем то же самое для изображения иконки папки User's Programs Menu. Создадим иконку нашего файла. Для этого в Properties в поле Icon загружаем иконку.

В процессе установки будет появляться несколько диалоговых окон, созданных по шаблону. Изменим немного интерфейс этих окон и текст на них. Для этого щелкаем в окне Solution Explorer на кнопке User Interface Editor, рисунок 23.


Рис. 23 - Диалоговые окна


Для создания дополнительных диалоговых окон, необходимо на кнопке Start правой кнопкой мыши выбрать Add Dialog. И выбрать интересующее Вас окно, рисунки 24 и 25.

Выделяем форму Welcome и переходим к его свойствам. Свойство BannerBitmap позволяет добавлять баннер размером 497х69 пикселей на диалоговое окно. В поле значения этого свойства выбираем Browse - и перед нами появляется уже знакомое окно Select Item in Project, добавляем в это окно баннер Banner_port.bmp, рисунок 26. Переходим к надписям, которые будут располагаться на форме. В свойстве CopyrightWarning приводится текст предупреждения об авторских правах, оставим его без изменений - вы можете изменить его в своем проекте. В свойстве WelcomeText заменяем слова [ProductName]. Текст надписей оставим на английском языке - кириллица отображается некорректно.


Рис. 24 - Диалоговые окна


Рис. 25 - Диалоговые окна


Рис. 26 - Диалоговые окна


В свойствах BannerBitmap следующих форм InstallationFolder, Confirm Installation и Progress также можно установить баннер Bannersetup.bmp и, при желании, изменить уже существующий текст на вкладках на свой текст.

Устанавливаем режим Release и компилируем проект, рисунок 27. Переходим в папку Release и запускаем файл установки setup.exe. Данный проект был создан на основе источника [7].


Рис. 27 - Компиляция проекта


Заключение


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

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

В курсовом проекте подробно описаны спецификация на разработку интерфейса, словесное описание процесса выполнения транзакций, инструкция пользователя по работе с приложением.

В специальной части рассмотрено понятие инсталяционных файлов, их создание и применение.


Список литературы


1.Понятие многоуровневой модели. www.gotdotnet.ru/LearnDotNet/NETFramework/44742.aspx <http://www.gotdotnet.ru/LearnDotNet/NETFramework/44742.aspx>

.Трёхуровневая_архитектура - Википедия. http://ru.wikipedia.org/wiki/Трёхуровневая_архитектура

.Многоуровневая модель. <http://cad.ntu-kpi.kiev.ua/courses/sql-server/6.htm>

.Архитектура клиент-сервер. <http://www.glossary.ru/cgi-bin/gl_sch2.cgi?RAw)oylqyzwg!qrolty-xlwilw>

.Модели, базы данных и СУБД в информационных системах. <http://softsearch.ru/articles/2-004-read.shtml>

.Основные понятия. Техническая конференция «Корпоративные базы данных-2010» Москва, 22-23 апреля. <http://www.citforum.ru/database/dbguide/2-1.shtml>

.Создание пакета установки. <http://www.intuit.ru/department/pl/visualcsharp/9/7.html>

.Центр разработчиков.NET. <http://msdn.microsoft.com/ru-ru/library/50614e95.aspx>

9.Сеппа Д. Microsoft ADO.NET/Пер. с англ. - М.: Издательско-торговый дом «Русская Редакция», 2003. - 640 стр.


Содержание Введение 1. Основные концепции разработки приложения в трёхуровневой архитектуре 2. Проектное решение, реализующее модель реляционной БД

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ