<rsd version="1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns="http://archipelago.phrasewise.com/rsd">
  <service>
    <engineName>MyGet</engineName>
    <engineLink>http://www.myget.org/</engineLink>
    <dc:identifier>https://www.myget.org/F/nugety-core/</dc:identifier>
    <dc:owner>thinkabout</dc:owner>
    <dc:creator>thinkabout</dc:creator>
    <dc:title>Nugety for Microsoft .NET provides support for the Modular Composition of both Web and Native applications.</dc:title>
    <dc:description># Nugety for .NET Core

Nugety for Microsoft .NET Core provides support for the **Modular Composition** of both Web and Native applications. It employs a Provider Model for the [discovery](https://github.com/thinkabouthub/NugetyCore/wiki/Module-Discovery) of modules which are then [loaded](https://github.com/thinkabouthub/NugetyCore/wiki/Load-Module) into the [Assembly Load Context](https://github.com/thinkabouthub/NugetyCore/wiki/Assembly-Load-Context). Nugety is best suited to ASP.NET Core or any application which employs an IoC container such as [Autofac](https://autofac.org), [Castle](http://www.castleproject.org/container/index.html), [Spring.Net](http://www.springframework.net/) or [Unity](http://unity.codeplex.com/). An IoC container will allow the modules to interact while still maintaining the all important **Seperation of Concerns**.
 
## Build Status
&lt;a href="https://www.myget.org/"&gt;&lt;img src="https://www.myget.org/BuildSource/Badge/nugety-core?identifier=b22965e9-f0b4-4e47-a73e-6f1e3a7b906f" alt="nugety-core MyGet Build Status" /&gt;&lt;/a&gt;

# So why use Nugety?

This question is best answered by the likes of **Martin Fowler** in his blog post [Sacrificial Architecture](http://martinfowler.com/bliki/SacrificialArchitecture.html). The most effective way of adhering to the principal of Sacrificial Architecture is through Modular Architecture. Modular architecture encourages the logical and physical Separation of Concerns allowing functionality to be easily upgraded or replaced without having to recompile and deploy.

In comparison to monolithic composition of components and assemblies which is arguably an anti-pattern, Modular design is now actively encouraged by Microsoft and is a fundamental principal of ASP.NET Core. 

Nugety allows all related aspects of a feature, including Services, Components and Static Files to be registered with the host application. [NugetyCore](https://github.com/thinkabouthub/NugetyCore) will also load each [Module Initializer](https://github.com/thinkabouthub/NugetyCore/wiki/Module-Initializer) assembly and their dependencies via a module specific [Assembly Load Context](https://github.com/thinkabouthub/NugetyCore/wiki/Assembly-Load-Context). This will help in the Separation of Concerns and in minimising any leakage between modules.

[More details](https://github.com/thinkabouthub/NugetyCore/wiki/Use-Cases) are available on the wiki.

# How do I get started?
Our [Getting Started](https://github.com/thinkabouthub/NugetyCore/wiki/getting-started/) tutorial walks you through integrating Nugety with a simple ASP.NET Core app and gives you some starting points for learning more.

## Get Packages

You can get Nugety by [grabbing the latest NuGet packages](https://www.nuget.org/packages?q=nugetycore). If you're feeling adventurous, [continuous integration builds are on MyGet](https://www.myget.org/gallery/nugety-core).

[Release notes](https://github.com/thinkabouthub/NugetyCore/wiki/release-notes) are available on the wiki.

## Get Help

**Need help with Nugety?** We're ready to answer your questions on [Stack Overflow](http://stackoverflow.com/questions/tagged/nugety). Alternatively ask a question [here](https://github.com/thinkabouthub/NugetyCore/issues).

##Super-duper quick start

[Create a Module assembly](https://github.com/thinkabouthub/NugetyCore/wiki/create-module/), [get Module](https://github.com/thinkabouthub/NugetyCore/wiki/get-module/) using `NugetyCatalog` and then [load Module Initialiser](https://github.com/thinkabouthub/NugetyCore/wiki/load-module/).

```C#
var modules = new NugetyCatalog()
	.FromDirectory()
	.GetModules&lt;IModuleInitializer&gt;().Load();
```

[Set File Name Filter Pattern for Module Initialiser Assembly](https://github.com/thinkabouthub/NugetyCore/wiki/SetFileNameFilterPattern/):

```C#
var modules = new NugetyCatalog()
	.Options.SetFileNameFilterPattern("*module*.dll")
	.FromDirectory()
	.GetModules&lt;IModuleInitializer&gt;().Load();
```

[Set Module Name Filter Pattern for Modules to load](https://github.com/thinkabouthub/NugetyCore/wiki/SetModuleNameFilterPattern/):

```C#
var modules = new NugetyCatalog()
	.Options.SetModuleNameFilterPattern("*Development*")
	.FromDirectory()
	.GetModules&lt;IModuleInitializer&gt;().Load();
```

[Set root Modules Directory](https://github.com/thinkabouthub/NugetyCore/wiki/Module-Discovery). The default root directory is "Nugety".

```C#
var modules = new NugetyCatalog()
	.FromDirectory("DevelopmentModules")
	.GetModules&lt;IModuleInitializer&gt;().Load();
```

[Set Modules to be resolved](https://github.com/thinkabouthub/NugetyCore/wiki/get-module/). The default behaviour is for all modules found in the root Nugety Modules Directory to resolve.

```C#
var modules = new NugetyCatalog()
	.GetModules&lt;IModuleInitializer&gt;("swagger", "autho").Load();
```

**[Intrigued? Check out our Getting Started walkthrough!](https://github.com/thinkabouthub/NugetyCore/wiki/getting-started/)**

## Project

**There is a growing number of application integration libraries that make using Nugety with your application a snap.**

- [NugetyCore](https://www.nuget.org/packages?q=nugetycore) - Core Nugety API [this repo](https://github.com/thinkabouthub/NugetyCore).
- [NugetyCore.AspNetCore](https://www.nuget.org/packages?q=nugetycore.aspnetcore) - ASP.NET integration for Nugety [this repo](https://github.com/thinkabouthub/NugetyCore).
- [Nugety.Autofac](https://www.nuget.org/packages?q=nugety.autofac) - Support for Nugety as Autofac modules [this repo](https://github.com/thinkabouthub/NugetyCore).
- [NugetyCore.Nuget](https://www.nuget.org/packages?q=nugety.nuget) - Support for Nuget as Nugety source [this repo](https://github.com/thinkabouthub/NugetyCore).</dc:description>
    <homePageLink>https://www.myget.org/Feed/Details/nugety-core/</homePageLink>
    <apis>
      <api name="nuget-v3-packages" blogID="" preferred="false" apiLink="https://www.myget.org/F/nugety-core/api/v3/index.json" />
      <api name="nuget-v2-packages" blogID="" preferred="true" apiLink="https://www.myget.org/F/nugety-core/api/v2/" />
      <api name="nuget-v1-packages" blogID="" preferred="false" apiLink="https://www.myget.org/F/nugety-core/api/v1/" />
    </apis>
  </service>
</rsd>