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

[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:blablablaOragon.Architecture.ApplicationHosting.HostProcess.exe console debug -serviceconfigurationfile "D:BlablablaOragon.ArchitectureExamplesApplicationHostingExampleApplicationHostingExample.xml"

O resultado é

console

Era só isso que eu queria demonstrar!

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

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.