- •1. Вводная часть
- •2. Знакомство со средой разработки на примере создания простого консольного приложения
- •3. Модификация консольного приложения
- •4. Публикация
- •5. О приложении к Лабораторной работе № 1
- •Лабораторная работа № 2: Создание простого приложения Windows Forms
- •Создание простого приложения Windows Forms
- •Модификация приложения Windows Forms
- •Завершающая часть
- •2. Создание простого приложения Windows Forms
- •3. Модификация приложения Windows Forms
- •4. Завершающая часть
- •5. О приложении к Лабораторной работе № 2
- •3. Лабораторная работа № 3: Windows Forms и использование некоторых элементов управления Лабораторная работа № 3: Windows Forms и использование некоторых элементов управления
- •Вводная часть
- •О приложении к Лабораторной работе № 3
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms
- •4. Модификация приложения Windows Forms: элемент управления MenuStrip
- •5. Модификация приложения Windows Forms: элемент управления Button
- •6. Модификация приложения Windows Forms: элемент управления ToolTip
- •7. Модификация приложения Windows Forms: элемент управления ComboBox
- •8. Модификация приложения Windows Forms: элемент управления WebBrowser
- •9. Модификация приложения Windows Forms: добавляем исходный код
- •10. Завершающая часть
- •11. О приложение к Лабораторной работе № 3
- •4. Лабораторная работа № 4: Windows Forms — работа с формами Лабораторная работа № 4: Windows Forms — работа с формами
- •Вводная часть
- •О приложении к Лабораторной работе № 4
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms
- •4. Модификация приложения Windows Forms: добавление новой формы
- •5. Модификация приложения Windows Forms: динамическое связывание параметров двух форм и передача параметра через прямой доступ к элементу формы
- •6. Модификация приложения Windows Forms: динамическое связывание параметров двух форм и передача параметра через передачу метода в конструктор формы
- •7. Модификация приложения Windows Forms: динамическое связывание параметров двух форм и передача параметра через класс делегата
- •8. Модификация приложения Windows Forms: динамическое связывание параметров двух форм и передача параметра через свойства
- •9. Завершающая часть
- •10. О приложении к Лабораторной работе № 4
- •5. Лабораторная работа № 5: Windows Forms — элементы управления Лабораторная работа № 5: Windows Forms — элементы управления
- •Вводная часть
- •О приложении к Лабораторной работе № 5
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms
- •4. Модификация приложения Windows Forms: динамическое добавление и уничтожение элемента управления
- •5. Модификация приложения Windows Forms: стандартные диалоговые окна
- •6. Модификация приложения Windows Forms: открытие файла, сохранение файла и работа с текстом
- •7. Модификация приложения Windows Forms: прочее
- •8. Завершающая часть
- •9. О приложении к Лабораторной работе № 5
- •Лабораторная работа № 6: SolidWorks — работа с SolidWorks
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: eDrawings 2012
- •4. Модификация приложения Windows Forms: организация работы с SolidWorks через приложение
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 6
- •Лабораторная работа № 7: SolidWorks — использование SwCSharpAddin, работа с макросом и шаблоном детали
- •2. Создание приложения SwCSharpAddin
- •3. Модификация приложения SwCSharpAddin: макрос отрисовки болта
- •4. Модификация приложения SwCSharpAddin: построение через шаблон детали
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 7
- •8. Лабораторная работа № 8: Создание простого приложения Windows Foundation Presentation Лабораторная работа № 8: Создание простого приложения Windows Foundation Presentation
- •Вводная часть
- •О приложении к Лабораторной работе № 8
- •1. Вводная часть
- •2. Создание приложения Windows Foundation Presentation
- •3. Модификация приложения Windows Foundation Presentation
- •4. Модификация приложения Windows Foundation Presentation: добавление нового элемента из библиотеки компонентов wpf
- •5. Модификация приложения Windows Forms: расширение функциональности приложения и работа с оформление
- •6. Модификация приложения Windows Foundation Presentation: различные возможности wpf
- •7. Модификация приложения Windows Foundation Presentation: немного о стилях и шаблонах
- •8. Завершающая часть
- •9. О приложении к Лабораторной работе № 8
- •Лабораторная работа № 9: Создание приложения-презентации Windows Foundation Presentation
- •2. Создание приложения Windows Foundation Presentation
- •3. Модификация приложения Windows Foundation Presentation
- •4. Модификация приложения Windows Foundation Presentation: работа с решением в Expression Blend
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 9
- •Лабораторная работа № 10: Работа с базами данных — xml и ole
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: odbc
- •4. Модификация приложения Windows Forms: ole
- •5. Модификация приложения Windows Forms: xml
- •6. Завершающая часть
- •7. О приложении к Лабораторной работе № 10
- •Лабораторная работа № 11: Динамическая связь приложений через библиотеку классов
- •2. Удалённый объект: создание библиотеки классов удалённого объекта
- •3. Клиент: создание приложения Windows Forms
- •4. Сервер: создание консольного приложения
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 11
- •Лабораторная работа № 12: Автоматизация Microsoft Office Word
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: создание и заполнение нового документа Microsoft Word
- •4. Модификация приложения Windows Forms: работа с шаблонами
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 12
- •Лабораторная работа № 13: Автоматизация Microsoft Office Excel
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: создание и заполнение нового документа Microsoft Excel
- •4. Модификация приложения Windows Forms: чтение данных с документа Microsoft Excel
- •5. Модификация приложения Windows Forms: прочие возможности Microsoft Excel
- •6. Завершающая часть
- •7. О приложении к Лабораторной работе № 13
- •Лабораторная работа № 14: Простой растровый редактор
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: подготовка интерфейса редактора
- •4. Модификация приложения Windows Forms: функциональность растрового редактора
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 14
- •15. Лабораторная работа № 15: Векторный редактор изображений Лабораторная работа № 15: Векторный редактор изображений
- •Вводная часть
- •О приложении к Лабораторной работе № 15
- •1. Вводная часть
- •2. Создание решения, приложения Windows Forms и библиотеки классов
- •3. Модификация приложения Windows Forms: подготовка интерфейса редактора и добавление файлов ресурсов
- •4. О будущей функциональности векторного редактора изображений
- •5. Модификация приложения Windows Forms: подготовка библиотеки классов
- •6. Модификация приложения Windows Forms: функциональность векторного редактора
- •7. Завершающая часть
- •8. О приложении к Лабораторной работе № 15
- •Лабораторная работа № 16: Windows Communication Foundation
- •2. Создание приложения wcf:
- •3. Модификация приложения wcf: приложение-клиент для wcf-службы
- •4. Создание приложения Windows Forms: сервер чата на wcf
- •5. Создание приложения Windows Forms: клиент чата на wcf
- •6. Завершающая часть
- •7. О приложении к Лабораторной работе № 16
- •Лабораторная работа № 17: Знакомство с Silverlight
- •2. Создание приложения Silverlight:
- •3. Модификация приложения Silverlight: первые шаги и полноэкранный режим
- •4. Модификация приложения Silverlight: простой проигрыватель mp3-файлов
- •5. Модификация приложения Silverlight: работа с анимацией
- •6. Завершающая часть
- •7. О приложении к Лабораторной работе № 17
- •Лабораторная работа № 18: Знакомство с asp.Net
- •2. Создание веб-приложения asp.Net
- •3. Модификация веб-приложения asp.Net: реализация различной функциональности
- •4. Модификация веб-приложения asp.Net: ajax
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 18
- •Вводная часть
- •О приложении к Лабораторной работе № 19
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: подготовка интерфейса и добавление TabControl
- •4. Модификация приложения Windows Forms: вкладка «Просто фон!»
- •5. Модификация приложения Windows Forms: вкладка «Объекты и градиент»
- •6. Модификация приложения Windows Forms: вкладка «Мой монитор сломался!»
- •7. Модификация приложения Windows Forms: вкладка «Векторные часы»
- •8. Модификация приложения Windows Forms: вкладка «Огонь!!!»
- •9. Модификация приложения Windows Forms: вкладка «Дождик»
- •10. Завершающая часть
- •11. О приложении к Лабораторной работе № 19
- •Лабораторная работа № 20: Inventor — работа с Inventor
- •Вводная часть
- •О приложении к Лабораторной работе № 20
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: запуск и завершение приложения Inventor
- •4. Модификация приложения Windows Forms: создание новых документов
- •5. Модификация приложения Windows Forms: доступ к элементам документов Inventor
- •6. Завершающая часть
- •7. О приложении к Лабораторной работе № 20
- •Лабораторная работа № 21: Знакомство с языком f# (Эф-шарп) на примере простого приложения для командной строки
- •Вводная часть
- •О приложении к Лабораторной работе № 21
- •1. Вводная часть
- •2. Основные положения при работе с f#
- •3. Создание приложения «Учебник по f#»
- •4. Создание консольного приложения
- •5. О приложении к Лабораторной работе № 21
- •Лабораторная работа № 22: Различные примеры на f#
- •2. Создание приложения «Приложение f#»
- •3. Модификация приложения f#: match
- •4. Модификация приложения f#: создание форм и рисование объектов на форме
- •5. Модификация приложения f#: работа с базой данных Microsoft Access
- •6. О приложении к Лабораторной работе № 22
- •23. Дополнительная лабораторная работа № 1
- •24. Дополнительная лабораторная работа № 2
- •25. Дополнительная лабораторная работа № 3
- •Вводная часть
- •1. Вводная часть
- •2. Создание приложения Windows Foundation Presentation
- •3. Модификация приложения Windows Foundation Presentation: добавление ресурсов
- •4. Модификация приложения Windows Foundation Presentation: добавление исходного кода
- •5. Модификация приложения Windows Foundation Presentation: оформление элемента ListBox
- •6. Завершающая часть
- •7. О приложении к данной работе
4. Создание приложения Windows Forms: сервер чата на wcf
Чат. Наиболее простое и часто встречающее приложение на WCF для демонстрации возможности технологии удалённого «общения». Так как WCF требует нечто что должно выполнять функции «хоста», то самым простым решением станет создание приложение-сервера, которое будет запускать и останавливать сервис для работы множества (2 и более) приложений-клиентов. Каждое приложение-клиент будет реализовывать удалённый клиент чата — попросту одного пользователя в чате. Средой для связи (сервер-клиент) выступит localhost (локальная машина), но можно использовать и адрес удалённого сервера, например в локальной сети. Ключевым адресом является адрес сервера.
Теперь о нашем приложении:
Приложение будет простой формой с двумя кнопками, одним GroupBox и одним статическим текстовым полем. Одна кнопка будет запускать сервер, вторая останавливать. В Label будет заноситься результат выполнения запуска или остановки.
Открываем снова Visual Studio и создаём пустое решение (Файл -> Создать -> Новый проект). Выбираем Другие типы проектов -> Решение Visual Studio -> Новое решение. Имя выбираем как LWP16:
Рис. 4. 1. Вводим данные нового пустого решения
Жмём ОК. Было добавлено решение, но пока без проектов. Создаём новый проект в текущем решении. Для этого выполним следующие действия: Файл -> Создать -> Проект. В окне открывшемся окне «Создать проект», в поле Решение, выберем: Добавить в решение. В качестве проекта выберем Приложение Windows Forms. Имя будет: LWP16-ChatServer. Жмём ОК. Получим следующее:
Рис. 4. 2. Обозреватель решений: состав проекта приложения Windows Forms сформированного средой разработки
Сразу же добавим необходимую библиотеку. Должен быть выбрать текущий проект в обозревателе решений (LWP16-ChatServer). Выполним Проект -> Добавить ссылку... -> в окне Добавить ссылку переходим на вкладку .NET и ищем System.ServiceModel:
Рис. 4. 3. Добавить ссылку: добавляем новую ссылку на библиотеку System.ServiceModel
Переименуем форму в обозревателе решений (ПКМ на иконке формы -> Переименовать). Новое имя формы будет LWP16MainServer. После переименования, автоматически изменится свойство (Name) формы.
Теперь изменим свойства формы LWP16MainServer:
Text |
изменим с Form1 на Чат на WCF (C#) :: Сервер |
^ Поменяем заголовок формы (то, что отображается в шапке приложения слева).
MaximizeBox |
изменим с True на False |
^ Уберём кнопку Развернуть.
Icon |
изменим изображение (иконку) приложения |
^ Необходим файл значка *.ico.
FormBorderStyle |
> изменим с Sizable на FixedDialog |
^ Сделаем окно «неизменяем» по размерам.
Size |
изменим со значений 290; 290 на 300; 125 |
^ Поменяем размер формы.
Расставим элементы с панели инструментов как показано на рисунке ниже:
Рис. 4. 3. Расстановка элементов на форме приложения-сервера
Свойства элементов следующие:
Button:
(Name): |
B_Start |
Text: |
Запуск |
Button:
(Name): |
B_Stop |
Text: |
Остановка |
GroupBox:
(Name): |
GB_1 |
Text: |
Серверные операции |
Label:
(Name): |
StatusLabel |
Text: |
Состояние сервера |
Событие Click кнопки Запуск:
private void B_Start_Click(object sender, EventArgs e)
{
try
{
cprs = new CustomPeerResolverService(); // Инициалазируем службу узлов
cprs.RefreshInterval = TimeSpan.FromSeconds(5); // Время в секундах обновления таблицы записей распознователя одноранговых узлов
host = new ServiceHost(cprs); // Передаём серверу службу узлов
cprs.ControlShape = true; // Инициализируем совместное использование ссылок
cprs.Open(); // Открываем службу
host.Open(TimeSpan.FromDays(1)); // Запускаем сервер на период одного дня
StatusLabel.Text = "Сервер WCF успешно запущен!";
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
B_Start.Enabled = false;
B_Stop.Enabled = true;
}
}
Событие Click кнопки Остановка:
private void B_Stop_Click(object sender, EventArgs e)
{
try
{
cprs.Close();
host.Close();
StatusLabel.Text = "Сервер WCF успешно остановлен!";
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
B_Start.Enabled = true;
B_Stop.Enabled = false;
}
}
Отредактируем код файла формы LWP16MainServer.cs. Подключим библиотеки в начале файла:
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.PeerResolvers;
Найдём:
public partial class LWP16MainServer : Form
{
Добавим после:
private CustomPeerResolverService cprs; // Объекта базовой реализации настраиваемой службы распознователя одноранговых узлов
private ServiceHost host; // Объект сервера для службы
Метод LWP16MainServer():
public LWP16MainServer()
{
InitializeComponent();
B_Stop.Enabled = false;
}
Теперь нужно сконфигурировать сервер, для этого воспользуемся стандартный App.Config. Так как при создании приложения Winfows Forms файл конфигурации не создаётся, то нужно создать его самостоятельно. Должен быть выбрать текущий проект в обозревателе решений (LWP16-ChatServer). Выполним Проект -> Добавить новый элемент... (Ctrl+Shift+A). В открывшемся окне выберем Файл конфигурации приложения. Имя оставим неизменным.
Откроем новый добавленный файл App.config и вставим в файл следующий XML-код:
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<services>
<service name="System.ServiceModel.PeerResolvers.CustomPeerResolverService">
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:5433/LWP16_ChatServer"/>
</baseAddresses>
</host>
<endpoint address="net.tcp://localhost:5433/LWP16_ChatServer" binding="netTcpBinding" bindingConfiguration="TcpConfig" contract="System.ServiceModel.PeerResolvers.IPeerResolverContract">
</endpoint>
</service>
</services>
<bindings>
<netTcpBinding>
<binding name="TcpConfig">
<security mode="None"></security>
</binding>
</netTcpBinding>
</bindings>
</system.serviceModel>
</configuration>
Здесь основные значения содержатся в поле:
<add baseAddress="net.tcp://localhost:5433/LWP16-ChatServer"/>
Строчкой выше указывается локальный адрес и порт. Вместо localhost можно использовать реальный IP-адрес. Следующая строка:
<endpoint address="net.tcp://localhost:5433/LWP16-ChatServer" binding="netTcpBinding" bindingConfiguration="TcpConfig" contract="System.ServiceModel.PeerResolvers.IPeerResolverContract">
</endpoint>
Обратим внимание на привязку netTcpBinding.
Эта привязка создаёт стек связи времени выполнения по умолчанию, использующий режим безопасности транспорта, протокол TCP для доставки сообщений, а также кодирование двоичных сообщений. Эта привязка является должным предоставляемым системой выбором Windows Communication Foundation для взаимодействия через интрасеть.
Конфигурация по умолчанию для привязки netTcpBinding быстрее, чем конфигурация, предоставляемая привязкой wsHttpBinding, но она предназначена только для взаимодействия WCF с WCF. Режим безопасности настраивается с помощью дополнительного атрибута securityMode. Использование WS-ReliableMessaging настраивается с использованием дополнительного атрибута reliableSessionEnabled. Но по умолчанию надежный обмен сообщениями отключен. В общем случае системные привязки по протоколу HTTP, такие как wsHttpBinding и basicHttpBinding, настроены на включение основных возможностей по умолчанию, в то время как привязка netTcpBinding по умолчанию отключает возможности, так что для получения поддержки, например для спецификаций WS-*, необходимо специально их включить. Это означает, что используемая по умолчанию конфигурация для TCP быстрее при обмене сообщениями между конечными точками, чем конфигурация по умолчанию для привязок HTTP.
Привязка задается в файлах конфигурации клиента и службы (App.config). Тип привязки указывается в атрибуте binding элемента <endpoint>. Если необходимо настроить привязку netTcpBinding и изменить некоторые из ее параметров, необходимо определить конфигурацию привязки. Конечная точка должна ссылаться на конфигурацию привязки с атрибутом bindingConfiguration. Для нашего случая атрибут имеет привязку к имени TcpConfig:
<binding name="TcpConfig">
<security mode="None"></security>
</binding>
Компилируем приложение (Release) и запускаем. Запускаем и останавливаем сервер. Не должно быть никаких ошибок при нажатии кнопок:
Рис. 4. 4. Модифицированное приложение Windows Forms: работа сервера чата после запуска