Skip to content

Commit c15bf2e

Browse files
committed
Merge branch 'feature/OnTopic.All' into develop
Previously, most implementations maintain a dependency on multiple OnTopic packages—often including `OnTopic`, `OnTopic.AspNetCore.Mvc`, `OnTopic.Data.Caching`, `OnTopic.Data.Sql`, and `OnTopic.ViewModels`. Each time there's an upgrade, every one of these packages must be updated to the latest version. This can be tedious and, in some cases, error prone (e.g., if `OnTopic` isn't updated first, subsequent updates may fail due to a mismatch in their dependency versions). The `OnTopic.All` metapackage mitigate this issue. It presents a single dependency which, in turn, pulls in each of the above packages. It is opinionated: It assumes that implementors will want to use e.g. Microsoft SQL Server for the data storage, and the stock view models for their views. Of course, implementors that have specialized requirements can still depend on individual packages as needed.
2 parents dc1b927 + 9da53fa commit c15bf2e

5 files changed

Lines changed: 77 additions & 5 deletions

File tree

OnTopic.All/OnTopic.All.csproj

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>netcoreapp3.1</TargetFramework>
5+
</PropertyGroup>
6+
7+
<PropertyGroup>
8+
<AssemblyTitle>OnTopic Library Metapackage</AssemblyTitle>
9+
<Company>Ignia</Company>
10+
<Product>OnTopic</Product>
11+
<Description>
12+
Includes all core packages associated with the OnTopic Library, excluding the OnTopic Editor. Reference this package as a
13+
shorthand for establishing a reference to each of the individual packages.
14+
</Description>
15+
<Copyright>©2021 Ignia, LLC</Copyright>
16+
<OutputPath>bin\$(Configuration)\</OutputPath>
17+
<Authors>Ignia</Authors>
18+
</PropertyGroup>
19+
20+
<ItemGroup>
21+
<PackageReference Include="GitVersion.MsBuild" Version="5.6.6">
22+
<PrivateAssets>all</PrivateAssets>
23+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
24+
</PackageReference>
25+
</ItemGroup>
26+
27+
<ItemGroup>
28+
<ProjectReference Include="..\OnTopic.AspNetCore.Mvc\OnTopic.AspNetCore.Mvc.csproj" />
29+
<ProjectReference Include="..\OnTopic.Data.Caching\OnTopic.Data.Caching.csproj" />
30+
<ProjectReference Include="..\OnTopic.Data.Sql\OnTopic.Data.Sql.csproj" />
31+
<ProjectReference Include="..\OnTopic.ViewModels\OnTopic.ViewModels.csproj" />
32+
<ProjectReference Include="..\OnTopic\OnTopic.csproj" />
33+
</ItemGroup>
34+
35+
</Project>

OnTopic.All/README.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# OnTopic Metapackage
2+
The `OnTopic.All` metapackage includes a reference to the core OnTopic libraries that most implementations will require. It is recommended that implementers reference this package instead of referencing each of the OnTopic packages individually, unless they have a specific need to customize which packages are referenced.
3+
4+
[![OnTopic.Data.Caching package in Internal feed in Azure Artifacts](https://igniasoftware.feeds.visualstudio.com/_apis/public/Packaging/Feeds/46d5f49c-5e1e-47bb-8b14-43be6c719ba8/Packages/3dfb3a0a-c049-407d-959e-546f714dcd0f/Badge)](https://igniasoftware.visualstudio.com/OnTopic/_packaging?_a=package&feed=46d5f49c-5e1e-47bb-8b14-43be6c719ba8&package=3dfb3a0a-c049-407d-959e-546f714dcd0f&preferRelease=true)
5+
[![Build Status](https://igniasoftware.visualstudio.com/OnTopic/_apis/build/status/OnTopic-CI-V3?branchName=master)](https://igniasoftware.visualstudio.com/OnTopic/_build/latest?definitionId=7&branchName=master)
6+
![NuGet Deployment Status](https://rmsprodscussu1.vsrm.visualstudio.com/A09668467-721c-4517-8d2e-aedbe2a7d67f/_apis/public/Release/badge/bd7f03e0-6fcf-4ec6-939d-4e995668d40f/2/2)
7+
8+
### Contents
9+
- [Scope](#scope)
10+
- [Installation](#installation)
11+
12+
## Scope
13+
The `OnTopic.All` metapackage maintains a reference to the following packages:
14+
- [`OnTopic`](../OnTopic/README.md): The core OnTopic library.
15+
- [`OnTopic.AspNetCore.Mvc`](../OnTopic.AspNetCore.Mvc/README.md): The ASP.NET Core implementation, with support for both ASP.NET Core 3.x and ASP.NET Core 5.x.
16+
- [`OnTopic.Data.Caching`](../OnTopic.Data.Caching/README.md): An `ITopicRepository` decorator for caching the topic graph in memory.
17+
- [`OnTopic.Data.Sql`](../OnTopic.Data.Sql/README.md): An `ITopicRepository` implementation for persisting topic data in a SQL Server database.
18+
- [`OnTopic.ViewModels`](../OnTopic.ViewModels/README.md): A set of reference view models and binding models mapping to the out-of-the-box schema for the standard content types.
19+
20+
## Installation
21+
Installation can be performed by providing a `<PackageReference /`> to the `OnTopic.All` **NuGet** package.
22+
```xml
23+
<Project Sdk="Microsoft.NET.Sdk.Web">
24+
25+
<ItemGroup>
26+
<PackageReference Include="OnTopic.All" Version="5.0.0" />
27+
</ItemGroup>
28+
</Project>
29+
```
30+
31+
> *Note:* This package is currently only available on Ignia's private **NuGet** repository. For access, please contact [Ignia](http://www.ignia.com/).

OnTopic.AspNetCore.Mvc.Host/OnTopic.AspNetCore.Mvc.Host.csproj

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,7 @@
1515
</ItemGroup>
1616

1717
<ItemGroup>
18-
<ProjectReference Include="..\OnTopic.AspNetCore.Mvc\OnTopic.AspNetCore.Mvc.csproj" />
19-
<ProjectReference Include="..\OnTopic.Data.Caching\OnTopic.Data.Caching.csproj" />
20-
<ProjectReference Include="..\OnTopic.Data.Sql\OnTopic.Data.Sql.csproj" />
21-
<ProjectReference Include="..\OnTopic.ViewModels\OnTopic.ViewModels.csproj" />
22-
<ProjectReference Include="..\OnTopic\OnTopic.csproj" />
18+
<ProjectReference Include="..\OnTopic.All\OnTopic.All.csproj" />
2319
</ItemGroup>
2420

2521
</Project>

OnTopic.sln

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OnTopic.TestDoubles", "OnTo
3232
EndProject
3333
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OnTopic.Data.Sql.Database.Tests", "OnTopic.Data.Sql.Database.Tests\OnTopic.Data.Sql.Database.Tests.csproj", "{D7FE876D-A75F-4493-8283-B316271FD5AE}"
3434
EndProject
35+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OnTopic.All", "OnTopic.All\OnTopic.All.csproj", "{5AE0A248-0243-4E41-B6AB-CB8ACB5A6E04}"
36+
EndProject
3537
Global
3638
GlobalSection(SolutionConfigurationPlatforms) = preSolution
3739
Debug|Any CPU = Debug|Any CPU
@@ -81,6 +83,10 @@ Global
8183
{D7FE876D-A75F-4493-8283-B316271FD5AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
8284
{D7FE876D-A75F-4493-8283-B316271FD5AE}.Debug|Any CPU.Build.0 = Debug|Any CPU
8385
{D7FE876D-A75F-4493-8283-B316271FD5AE}.Release|Any CPU.ActiveCfg = Release|Any CPU
86+
{5AE0A248-0243-4E41-B6AB-CB8ACB5A6E04}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
87+
{5AE0A248-0243-4E41-B6AB-CB8ACB5A6E04}.Debug|Any CPU.Build.0 = Debug|Any CPU
88+
{5AE0A248-0243-4E41-B6AB-CB8ACB5A6E04}.Release|Any CPU.ActiveCfg = Release|Any CPU
89+
{5AE0A248-0243-4E41-B6AB-CB8ACB5A6E04}.Release|Any CPU.Build.0 = Release|Any CPU
8490
EndGlobalSection
8591
GlobalSection(SolutionProperties) = preSolution
8692
HideSolutionNode = FALSE

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,12 @@ In addition, OnTopic is optimized for multi-client/multi-device scenarios since
2020
### Extensible
2121
Fundamentally, OnTopic is based on structured schemas ("Content Types") which can be modified via the editor itself. This allows new data structures to be introduced without needing to modify the database or creating extensive plugins. So, for example, if a site includes job postings, it might create a `JobPosting` content type that describes the structure of a job posting, such as _job title_, _job description_, _job requirements_, &c. By contrast, some CMSs—such as WordPress—try to fit all items into a single data model—such as a _blog post_—or require extensive customizations of database objects and intermediate queries in order to extend the data model. OnTopic is designed with extensibility in mind, so updates to the data model are comparatively trivial to implement.
2222

23+
2324
## Library
2425

26+
### Metapackage
27+
- **[`OnTopic.All`](OnTopic.All/README.md)** The metapackage includes a reference to all of the core libraries discussed below under [Domain Layer](#domain-layer), [Data Access Layer](#data-access-layer), and [Presentation Layer](#presentation-layer). It is recommended that most implementations rely on this, instead of including package references for individual libraries.
28+
2529
### Domain Layer
2630
- **[`OnTopic.Topics`](OnTopic/README.md)**: Core domain model including the `Topic` entity and service abstractions such as `ITopicRepository`.
2731

0 commit comments

Comments
 (0)