Лабораторная работа 7 (ПКРПСиБД LAB7 Машеров Д.Е.)

Посмотреть архив целиком

Национальный исследовательский институт

Московский Энергетический Институт (Технический Университет)

Институт автоматики и вычислительной техники

Кафедра Прикладной математики









Лабораторная работа №7

по дисциплине «Проектирование крупных распределенных программных систем и баз данных»

тема: «Разработка приложения с событийно-управляемой архитектурой с применением NServiceBus»



Выполнил:

Машеров Д.Е.

Проверил:

к.т.н., доц. Куриленко И.Е.











Москва

2012 г.

NServiceBus

NServiceBus – популярный фреймворк для интеграции сервисов и разработки распределённых приложений. NServiceBus использует службы очереди сообщений Microsoft (Microsoft Message Queuing Services, MSMQ) для транспорта сообщений.

Создание приложения.

В программе созданы три библиотек классов:

  1. EncryptedData. Реализует сообщение, с зашифронными данными

  2. Client. Отправляет сообщение.

  3. Server. Принимает сообщение.

  1. Сообщения

Класс сообщения определяется с помощью маркерного интерфейса IMessage.

public class EncryptedData : IMessage

{

public WireEncryptedString Secret1 { get; set; }

public WireEncryptedString Secret2 { get; set; }

}

  1. Клиент


В файл конфигурации добавляется новая секция конфигурации RijndaelEncryptionServiceConfig и конфигурация <RijndaelEncryptionServiceConfig Key="gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6"/>

xml version="1.0"?>

<configuration>

<configSections>

<section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core"/>

<section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core"/>

<section name="RijndaelEncryptionServiceConfig" type="NServiceBus.Config.RijndaelEncryptionServiceConfig, NServiceBus.Core"/>

configSections>


<MsmqTransportConfig ErrorQueue="error" NumberOfWorkerThreads="1" MaxRetries="5"/>


<UnicastBusConfig>

<MessageEndpointMappings>

<add Messages="Messages" Endpoint="Server"/>

MessageEndpointMappings>

UnicastBusConfig>


<RijndaelEncryptionServiceConfig Key="gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6"/>


<appSettings>

appSettings>


<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>startup>configuration>



Файл клиента:

public class EndpointConfig : IConfigureThisEndpoint, AsA_Client {}


public class SecurityConfig : IWantCustomInitialization

{

public void Init()

{

Configure.Instance.RijndaelEncryptionService();

}

}


public class Runner : IWantToRunAtStartup

{

public void Run()

{

Console.WriteLine("Напечатайте \"stop\", чтоб закончить работу");

while (Console.ReadLine() != "stop")

{

Console.WriteLine("Введите сообщения");

string secret1 = Console.ReadLine();

string secret2 = Console.ReadLine();


Bus.Send<EncryptedData>(m =>

{

m.Secret1 = secret1;

m.Secret2 = secret2;

});

}

Stop();

}


public void Stop()

{

}


public IBus Bus { get; set; }

}

  1. Сервер:

Конфигурация

xml version="1.0"?>

<configuration>

<configSections>

<section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core"/>

<section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core"/>

<section name="RijndaelEncryptionServiceConfig" type="NServiceBus.Config.RijndaelEncryptionServiceConfig, NServiceBus.Core"/>

configSections>


<MsmqTransportConfig ErrorQueue="error" NumberOfWorkerThreads="1" MaxRetries="5"/>

<UnicastBusConfig DistributorControlAddress="" DistributorDataAddress="" />

<RijndaelEncryptionServiceConfig Key="gdDbqRpqdRbTs3mhdZh9qCaDaxJXl+e6"/>

<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>startup>

configuration>


Файл сервера

public class EndpointConfig : IConfigureThisEndpoint, AsA_Server, IWantCustomInitialization

{

public void Init()

{

Configure.With()

.StructureMapBuilder()

.RijndaelEncryptionService();

}

}


public class Handler : IHandleMessages<EncryptedData>

{

public void Handle(EncryptedData message)

{

Console.Out.WriteLine("Secret1: " + message.Secret1);

Console.Out.WriteLine("Secret2: " + message.Secret2);

}

}



Пример работы



Приложение клиента:

Приложение сервера:



Литература:

  1. Доклад «Обзор возможностей NserviceBus» http://www.techdays.ru/videos/2295.html

  2. Сайт NServiceBus http://nservicebus.com/








Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.