[deprecated]Oragon Architecture – Application Hosting – Criando uma nova aplicação baseada em Spring.Net
Publicado em: terça-feira, 22 de abr de 2014

[deprecated]

Olá, como vai você?

Por aqui tudo bem! No post anterior fiz um overview do Oragon Architecture Application Hosting, falando no que foi feito, agora vou demonstrar como hospedar aplicações baseadas em Spring.Net.

Criando o projeto

1) Criar um projeto Class Library

2) Referencie Oragon.Architecture, Oragon.Architecture.ApplicationHosting, Oragon.Architecture.ApplicationHosting.SpringFramework e Spring.Core

3) Programar uma classe qualquer que implemente IInitializingObject (do Spring.Net) e IDisposable. A necessidade dessas interfaces existe para garantir que você será chamado durante a inicialização da execução do container. Crie um factory também. Todo o código está abaixo.

using Spring.Context;
using Spring.Objects.Factory;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ApplicationHostingExample
{
	public class AutoStartAppExample : IInitializingObject, IDisposable
	{
		public void AfterPropertiesSet()
		{
			Console.WriteLine("AutoStartAppExample Start");
		}

		public void Dispose()
		{
			Console.WriteLine("AutoStartAppExample Stop");
		}
	}

	public class SpringFrameworkFactory : ISpringFrameworkFactory
	{
		public Spring.Context.IApplicationContext CreateContainer()
		{
			var applicationContext = Spring.Context.Support.ContextRegistry.GetContext();
			return applicationContext;
		}
	}
}

4) Criar as 2 configurações (Configuração do Serviço, e configuração do seu projeto)

4.1) XML de Configuração do Serviço ( ApplicationHostingExample.xml )

<?xml version="1.0" encoding="utf-8" ?>
<objects
	xmlns="http://www.springframework.net"
	xmlns:wcf="http://www.springframework.net/wcf"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:aop="http://www.springframework.net/aop"
	xmlns:nv="http://www.springframework.net/nvelocity"
	>

	<object name="ServiceDescriptor" type="Oragon.Architecture.ApplicationHosting.WindowsServiceHost, Oragon.Architecture.ApplicationHosting">
		<property name="Name" value="OragonArchitectureApplicationHostingExample" />
		<property name="FriendlyName" value="Oragon Architecture Application Hosting Example" />
		<property name="Description" value="Example of Simple way to deply business services" />

		<property name="WindowsServiceConfiguration">
			<object type="Oragon.Architecture.ApplicationHosting.WindowsServiceConfiguration, Oragon.Architecture.ApplicationHosting">
				<property name="StartMode" value="AutomaticallyDelayed" />
				<property name="IdentityType" value="NetworkService" />
				<property name="Dependences">
					<list element-type="String">
					</list>
				</property>
				<property name="StartTimeOut" value="01:00:00"/>
				<property name="StopTimeOut"  value="01:00:00"/>
			</object>
		</property>

		<property name="Applications">
			<list element-type="Oragon.Architecture.ApplicationHosting.ApplicationHost, Oragon.Architecture.ApplicationHosting">
				<object type="Oragon.Architecture.ApplicationHosting.SpringFramework.SpringFrameworkApplicationHost, Oragon.Architecture.ApplicationHosting.SpringFramework">
					<property name="Name" value="Application Hosting Example" />
					<property name="FriendlyName" value="Oragon Architecture Application Hosting Example" />
					<property name="Description" value="Example of Simple way to deply business services" />
					<property name="FactoryType" value="ApplicationHostingSpringNetExample.SpringFrameworkFactory, ApplicationHostingSpringNetExample"></property>
					<property name="ApplicationBaseDirectory" value="./bin/Debug/" />
					<property name="ApplicationConfigurationFile" value="./ApplicationHostingExample.config" />
				</object>
			</list>
		</property>
	</object>

</objects>

Note que temos no final do arquivo a seguinte configuração:

<property name="ApplicationBaseDirectory" value="./bin/Debug/" />
<property name="ApplicationConfigurationFile" value="./ApplicationHostingExample.config" />

Os paths definidos em ApplicationBaseDirectory e ApplicationConfigurationFile são baseados no path do XML atual. Isso significa que o arquivo ApplicationHostingExample.config está no mesmo diretório do arquivo ApplicationHostingExample.xml. O que implica que na configuração ApplicationBaseDirectory, temos sub-pastas Bin/Debug/ dentro da pasta que contém o arquivo ApplicationHostingExample.xml.

estrutura

 

4.2) Criar xml de configuração da aplicação ( ApplicationHostingExample.config ) semelhante ao que encontramos abaixo:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
	<configSections>
		<sectionGroup name="spring">
			<section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/>
			<section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core"/>
		</sectionGroup>
	</configSections>
	<spring>
		<context>
			<resource uri="config://spring/objects"/>
		</context>
		<objects xmlns="http://www.springframework.net" xmlns:wcf="http://www.springframework.net/wcf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.net/aop">

			<object name="OragonTeste" type="ApplicationHostingSpringNetExample.AutoStartAppExample, ApplicationHostingSpringNetExample">
			</object>
			
		</objects>
	</spring>
	
	<runtime>
		<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
			<dependentAssembly>
				<assemblyIdentity name="Common.Logging" publicKeyToken="af08829b84f0328e" culture="neutral" />
				<bindingRedirect oldVersion="0.0.0.0-2.2.0.0" newVersion="2.2.0.0" />
			</dependentAssembly>
		</assemblyBinding>
	</runtime>
</configuration>

Pronto!!!

Simples né?!

Agora para executar você vai precisar do executável Oragon.Architecture.ApplicationHosting.HostProcess.exe, em qualquer lugar da sua máquina. Agora não precisa estar junto com a aplicação. Você poderia por exemplo ter esse executável em uma pasta Tools de seu projeto.

Com essa definição, o arquivo ApplicationHostingExample.config, precisa estar na mesma pasta ApplicationHostingExample.xml enquanto bin/debug/ são pastas dentro da pasta que os contém.

Para executar sua aplicação será necessário chamar via linha de comando o HostProcess.exe como demonstro abaixo

C:\blablabla\Oragon.Architecture.ApplicationHosting.HostProcess.exe console debug -serviceconfigurationfile "D:\Blablabla\Oragon.Architecture\Examples\ApplicationHostingExample\ApplicationHostingExample.xml"

O resultado é

console

Era só isso que eu queria demonstrar!

Essa é uma aplicação baseada em Spring.Net.

Luiz Carlos Faria

Mensagem do Autor

Espero que goste desse post. Não deixe de comentar e falar o que achou. 

Se acha que esse post pode ajudar alguém que você conheça, compartilhe!

 

Eventos passados

setembro 2020
agosto 2020
julho 2020
Nenhum evento encontrado!
Carregar Mais

Publicidade

Assine

0 comentários

Enviar um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Lives

Fique de olho nas lives

Fique de olho nas lives no meu canal do Youtube, no Canal .NET e nos Grupos do Facebook e Instagram.

Aceleradores

Existem diversas formas de viabilizar o suporte ao teu projeto. Seja com os treinamentos, consultoria, mentorias em grupo.

Agenda & Eventos

agosto

setembro 2020

outubro
DOM
SEG
TER
QUA
QUI
SEX
SAB
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
Events for 1st setembro
Sem Eventos
Events for 2nd setembro
Sem Eventos
Events for 3rd setembro
Sem Eventos
Events for 4th setembro
Sem Eventos
Events for 5th setembro
Sem Eventos
Events for 6th setembro
Sem Eventos
Events for 7th setembro
Sem Eventos
Events for 8th setembro
Sem Eventos
Events for 9th setembro
Sem Eventos
Events for 10th setembro
Sem Eventos
Events for 11th setembro
Sem Eventos
Events for 12th setembro
Sem Eventos
Events for 13th setembro
Sem Eventos
Events for 14th setembro
Sem Eventos
Events for 15th setembro
Sem Eventos
Events for 16th setembro
Sem Eventos
Events for 17th setembro
Sem Eventos
Events for 18th setembro
Sem Eventos
Events for 19th setembro
Sem Eventos
Events for 20th setembro
Sem Eventos
Events for 21st setembro
Sem Eventos
Events for 22nd setembro
Sem Eventos
Events for 23rd setembro
Sem Eventos
Events for 24th setembro
Sem Eventos
Events for 25th setembro
Events for 26th setembro
Sem Eventos
Events for 27th setembro
Sem Eventos
Events for 28th setembro
Sem Eventos
Events for 29th setembro
Sem Eventos
Events for 30th setembro
Sem Eventos
Share This