Dieses Pattern kann genutzt werden, um Baumähnliche Strukturen abzubilden.

Als Beispiel habe ich hier eine kleine Firmenstruktur implementiert.
Die Klasse des CompositePattrns

namespace CompositePattern
{
    interface IMitarbeiter
    {
        string Bezeichnung();
    }
 
    class Chef : IMitarbeiter
    {
        public virtual string Bezeichnung()
        {
            return "Ich bin der Chef und mache alles anders.";
        }
    }
 
    class Teamleiter : Chef, IMitarbeiter
    {
        public override string Bezeichnung()
        {
            return "Ich bin der 1. Honk vom Chef";
        }
    }
 
    class Teamleiter2 : Chef, IMitarbeiter
    {
        public override string Bezeichnung()
        {
            return "Ich bin der 2. Honk vom Chef";
        }
    }
 
    class Gruppenleiter : Teamleiter, IMitarbeiter
    {
        public override string Bezeichnung()
        {
            return "Ich bin der Gruppenleiter vom 1. Honk";
        }
    }
 
    class GruppenMitarbeiter : Gruppenleiter, IMitarbeiter
    {
        public new string Bezeichnung()
        {
            return "Ich bin GruppenMitarbeiter des Gruppenleiter´s vom 1. Honk und darf aufräumen.";
        }
    }
 
    
}

Und hier noch die Programmklasse

using System;
using System.Collections.Generic;
 
namespace CompositePattern
{
    class Program
    {
        static void Main(string[] args)
        {
 
            IMitarbeiter grpMitarbeiter = new GruppenMitarbeiter();
            IMitarbeiter grpLeiter = new Gruppenleiter();
            IMitarbeiter teamleiter = new Teamleiter();
            IMitarbeiter teamleiter2 = new Teamleiter2();
            IMitarbeiter chef = new Chef();
 
            List<imitarbeiter> objMitarbeiter = new List<imitarbeiter>();
 
 
            objMitarbeiter.Add(grpMitarbeiter);
            objMitarbeiter.Add(grpLeiter);
            objMitarbeiter.Add(teamleiter2);
            objMitarbeiter.Add(teamleiter);
            objMitarbeiter.Add(chef);
 
 
            IColor txtWeiss = new Weiss();
            txtWeiss.Draw();
             
            foreach (IMitarbeiter obj in objMitarbeiter)
            {
                //obj.Bezeichnung();
                Console.WriteLine(obj.GetType() + "\n> " + obj.Bezeichnung());
            }
 
            Console.ReadLine();
        }
    }
}
 
</imitarbeiter></imitarbeiter>

Und so sieht es aus:

Composite Pattern

Neuste Einträge

Synology Docker Image

Projekt vorbereiten und veröffentlichen

Dockerfile erstellen

dotnet publish -c Release -o ./publish

 

 

Lege im selben NAS-Verzeichnis eine Datei Dockerfile an:

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
COPY publish/ ./
EXPOSE 80
ENTRYPOINT ["dotnet", "MeinProjekt.dll"]

Passe den Namen der DLL an dein Projekt an.

Optional: HTTPS-Zertifikat erzeugen

dotnet dev-certs https -ep ./aspnetapp.pfx -p <Passwort>

 

Docker-Image auf dem NAS bauen

ssh admin@<NAS-IP>
cd /volume1/docker/meinprojekt
sudo docker build -t meinprojekt:latest .

Container starten

sudo docker run -d -p 8080:80 --name meinprojekt meinprojekt:latest

 

Reverse Proxy einrichten (optional)

Im DSM unter Systemsteuerung > Anwendungsportal > Reverse Proxy:

  • Quelle: https://meinprojekt.de → Ziel: http://localhost:8080

  • SSL-Zertifikat zuweisen

 

Wiederverwendbare Struktur

docker/
├── meinprojekt/
│   ├── Dockerfile
│   ├── publish/
│   └── configs/
├── https/
└── keys/