ПКРПСиБД LAB7 Бочаров И.А. (548672)
Текст из файла
Национальный исследовательский институт
Московский Энергетический Институт (Технический Университет)
Институт автоматики и вычислительной техники
Кафедра Прикладной математики
Лабораторная работа №7
по дисциплине:
Проектирование крупных распределенных программных систем и баз данных
тема: «Разработка приложения с событийно-управляемой архитектурой с применением NServiceBus »
Выполнил:
Бочаров Иван Андреевич
Проверил:
к.т.н., доц. Куриленко Иван Евгеньевич
Москва
2012 г.
NServiceBus
NServiceBus является популярным фреймворком для интеграции сервисов и разработки распределенных приложений.
Автор – архитектор и исследователь Udi Dahan.
В качестве основного транспорта используется MSMQ (Microsoft Message Queue), который обеспечивает транзакционность, надежную пересылку и дисковое хранение сообщений.
Шина NServiceBus является виртуальной сущностью, полученной в результате взаимодействия сервисов вместе. Это означает, что в каждом процессе присутствует своя сущность шина, обеспечивающая отправку и получение сообщений.
Рис. 1 Схематическое изображение шины
Шаблоны обмена сообщениями
-
Однонаправленное сообщение (One-way)
-
Запрос/ответ (RPC)
-
Дуплексный обмен (Full-duplex)
-
Издатель/подписчик (Pub/Sub)
Исходный код
Message.cs
using System;
namespace MyMessages
{
[Serializable]
public class EventMessage : IMyEvent
{
public Guid EventId { get; set; }
public DateTime? Time { get; set; }
public string Text { get; set; }
}
public interface IMyEvent
{
Guid EventId { get; set; }
DateTime? Time { get; set; }
string Text { get; set; }
}
}
Subscriber1.cs
using System;
using log4net;
using MyMessages;
using NServiceBus;
namespace Subscriber1
{
public class EventMessageHandler : IHandleMessages
{
public void Handle(EventMessage message)
{
Console.WriteLine(string.Format("Получено сообщение с идентификатором {0}.", message.EventId));
Console.WriteLine(string.Format("Тело сообщения: {0}.", message.Text));
Console.WriteLine(string.Format("Время сообщения: {0}.", message.Time));
Console.WriteLine("==========================================================================");
}
}
}
MyPublisher.cs
using System;
using MyMessages;
using NServiceBus;
namespace MyPublisher
{
public class ServerEndpoint : IWantToRunAtStartup
{
public IBus Bus { get; set; }
public void Run()
{
Console.WriteLine("Для выхода введите EXIT");
string key;
while ((key=Console.ReadLine()) != "EXIT")
{
var eventMessage = new EventMessage();
eventMessage.EventId = Guid.NewGuid();
eventMessage.Time = DateTime.Now;
eventMessage.Text = key;
Bus.Publish(eventMessage);
Console.WriteLine("Опубликовано сообщение с идентификатором {0}.", eventMessage.EventId);
Console.WriteLine("==========================================================================");
}
}
public void Stop()
{
Console.WriteLine("Рассылка сообщений прекращена");
}
}
}
App.config для подписчиков
App.config для публикатора
publicKeyToken="af08829b84f0328e" culture="neutral" /> newVersion="2.0.0.0"/> EndpointConfig.cs using NServiceBus; namespace Subscriber1 { class EndpointConfig : IConfigureThisEndpoint, AsA_Server,IWantCustomInitialization { public void Init() { Configure.With() .DefiningEventsAs(t => t.Namespace != null && t.Namespace.StartsWith("MyMessages"));} } }Разработанное приложение
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.