Laden...

Forenbeiträge von t0ms3n Ingesamt 314 Beiträge

24.07.2017 - 09:59 Uhr

Erledigt, eine Drittanbieter DLL, welche von einem Projekt expliziert mitgeliefert wird, stand auf "Copy Always". Anscheinend wurde eine andere Version bereits mitgeliefert, sodass dies zu Konflikten geführt hat.

"Copy if newer" hat jedenfalls geholfen. Nun mal noch schauen welche Versionskonflikte dort auftreten.

24.07.2017 - 09:53 Uhr

Hallo zusammen,

ich habe eine ASP.NET Core Applikation. Diese habe ich bisher über WebDeploy bereitgestellt (VS2017). Dies schlägt nun seit Freitag plötzlich aus mir nicht erkennbaren Gründen fehl.

Fehlermeldung:
4>------ Publish started: Project: .........., Configuration: Debug Any CPU ------
Alle Buildübermittlungen in einem Build müssen Projektinstanzen aus derselben Projektsammlung verwenden.

4>Publish failed due to build errors. Check the error list for more details.
========== Build: 3 succeeded, 0 failed, 1 up-to-date, 0 skipped ==========
========== Publish: 0 succeeded, 1 failed, 0 skipped ==========

Probiert habe ich:

  • Clean / Rebuild
  • Löschen von bin und obj
  • Output verbosity mit Diagnostic hat mir auch keine weiteren Infos geliefert
  • WebDeploy Package anstelle von WebDeploy

Lokal kann ich die Applikation problemlos builden und auch starten. Eine andere ASP.NET Core Applikation lässt sich problemlos deployen.

10.07.2017 - 14:15 Uhr

DictionaryEntry ist eben so definiert, dass Key und Value vom Typ object sind.
Du kannst also entsprechend casten oder du nutzt einen geeigneteren Parametertypen wie z.B. KeyValuePair<string, Point[]> und statt der Hashtable ein Dictionary<string,Point[]>

12.06.2017 - 15:40 Uhr

Jede Spalte/Zeile/Zelle hat eine Visibility (?) Eigenschaft. Dort kannst Du eine Expression einfügen, welche entsprechend das Feld ein-oder ausblendet.

09.06.2017 - 14:12 Uhr

Die Exception sagt doch mehr als nur "DbUpdateConcurrancyException". Was steht denn drin?

29.05.2017 - 10:00 Uhr

Nun du musst also

  1. deine Daten sammeln
  2. nach der Auftragsnummer gruppieren
  3. die Daten jeder Gruppe ausgeben
  4. zwischen jeder Gruppe einen Zeilenumbruch erzeugen
19.05.2017 - 20:13 Uhr

Schönes Projekt, viel Spaß und Erfolg dabei!

16.05.2017 - 22:38 Uhr

Wann und wie aktualisiert du den Bericht denn?

12.05.2017 - 10:53 Uhr
 retVal.Artikel = this.Artikel.Select(artikel.GetExportObject() as ModelExportArtikel).ToList();  

Unter der Vorraussetzung, dass die Collection leer ist.

24.03.2017 - 14:24 Uhr

Das war ja auch ein Projekt, welches auf dem vorherigen aufsetzt. (kenne ich selber nicht)
Da dieses aber anscheinend die erwähnte Free Spire.XLS verwendet, hilft dir dies dann nicht, wenn dies dort fehlerhaft ist.

24.03.2017 - 14:10 Uhr

https://epplusexcel.codeplex.com/ mal geschaut? Ansonsten kannst Du natürlich zum Speichern weiterhin Interop nutzen, sollte insgesamt dennoch schneller sein.

24.03.2017 - 09:13 Uhr

Du kannst ggf. Open XML nutzen. Ich habe zuletzt EPPlus genutzt und damit gute Erfahrungen gemacht.

23.03.2017 - 14:26 Uhr

In deinem Eingangspost sagst Du, dass es bereits eine Liste von Koordinaten gibt. Wieso postest Du dann nun Code, der mit dem Bild arbeitet!?

Ein passendes Vorgehen, wenn Du eine Richtung haben möchtest, hat OlafSt ja bereits genannt.

23.03.2017 - 10:55 Uhr

Also anhand der Skizze könnte ich nun nicht erkennen, dass der letzte Punkt eine andere X-Koordinate hat 😃

Bevor Du dir Gedanken über die Geschwindigkeit machst, sollte erstmal das korrekte Ergebnis raus kommen.

09.03.2017 - 09:07 Uhr

Danke für eure Antworten.

Mit einem freien Trainer haben wir vor einiger Zeit nicht so gute Erfahrungen gemacht, wobei es hier eben sicherlich genauso wie mit den fertigen Dienstleistern ist. Man kann Glück mit dem Trainer haben oder eben aber auch nicht.

Über welchen Weg findet ihr entsprechende freie Trainer, wenn ihr es nicht gerade selber seid?

Tutorials, Videos und Artikel/Blogs sind natürlich gut.
Ich finde jedoch, dass es gerade beim Einstieg wichtig ist, dass man auch konkrete Fragen zur Praxis anbringen kann. Vor allem wenn man sich vorher entsprechend schon mit der Thematik auseinander setzt, ergeben sich diese ja meist zwangsläufig.

08.03.2017 - 11:21 Uhr

Hallo zusammen,

wir sind derzeit auf der Suche nach einer Schulung im Bereich der Entwicklung von Restful Schnittstellen mit .NET. Die Teilnehmer bringen dabei wenig bis keine Erfahrung im Web-Bereich mit. Würdet ihr darauf achten, dass diese bereits auf ASP.NET Core basiert?

Ich habe dazu folgende Schulungen gefunden, welche auf den ersten Blick das Themengebiet sinnvoll abdecken:

http://www.gfu.net/schulung-aspnet-web-api-einstieg-praxis-s1621.html

https://www.ppedv.de/Schulung/Kurse/ASPNET-WebAPI-Http-REST-Hypermedia-MVC-VisualStudio-CSharp-Seminar-Training

http://www.dotnet-akademie.de/Seminare/ASPNET_WebAPI_REST_Services_mit_ASPNET_Core/8873

Kann jemand etwas zu den Schulungsanbietern sagen?
Hat ggf. jemand sogar bereits eine dieser Schulungen besucht?
Kann jemand eine Schulung für diese Thema von einem anderen Anbieter empfehlen?

Viele Dank
t0ms3n

06.01.2017 - 09:47 Uhr

Du erstellst nicht nur eine neue Instanz des Views sondern auch des ViewModels. Erstelle das ViewModel nur, wenn es noch nicht erstellt wurde.

08.12.2016 - 16:04 Uhr

Dein Code bricht nie ab. Die foreach bewirkt genau nichts.
Das continue wirkt sich lediglich auf deine foreach aus.


private void SpawnObjects(GameObject planet, GameObject[] prefabs, float objectCount, float distanceToPlanet)
    {
            List<Bounds> objectsBoundsList = new List<Bounds>();
            for (int i = 0; i < objectCount; i++)
            {
                    GameObject spawnObject = prefabs[Random.Range(0, prefabs.Length)];
                    Vector3 spawnPos = calculator.CalcPointOnSphere(distanceToPlanet);
                    Bounds tempSpawnBounds = new Bounds(spawnPos, spawnObject.GetComponent<Renderer>().bounds.size);
                    bool isColliding = false;
                    foreach (Bounds objectBounds in objectsBoundsList)
                    {
                            if (objectBounds.Intersects(tempSpawnBounds))
                            {
                                    isColliding  =true;
                                    break;
                            }
                    }
                    if(isColliding)
                         continue;

                    GameObject objectToSpawn = (GameObject)Instantiate(spawnObject, spawnPos, Quaternion.identity);
                    objectsBoundsList.Add(new Bounds(objectToSpawn.transform.position, objectToSpawn.GetComponent<Renderer>().bounds.size));
            }
    }

Alternativ die ganze Foreach durch ein Any(...) ersetzen.

31.08.2016 - 13:47 Uhr

Hallo malignate,

damit hier überhaupt Feedback kommt 😃
Ich muss gestehen ich kann mir das Ganze noch nicht so richtig vorstellen bzw. wie es auf der Applikationsseite aussieht.

Verstehe ich Projekt 1 so richtig?
Es werden verschiedene Module, für übliche Themen wie z.B. Lokalisierung, entwickelt. Für diese Module stellt dein Projekt eine entsprechende UI (welche der Verwender irgendwo hosted?) bereit, um z.B. die jeweiligen Übersetzungen vorzunehmen. Dazu reicht es wenn die gewünschte Applikation deinem Modul eine entsprechende Implementierung für eben diese CRUDs des Moduls liefert?

22.08.2016 - 10:44 Uhr

Unabhängig davon ist preis_solo[0] nicht der Preis sondern "CHF". Das wird deine Formatexception erklären.

11.08.2016 - 11:08 Uhr

Wo genau liegt denn dein Problem? Das die Tabellen ein unterschiedliches Schema haben ist erstmal egal.

Du musst jedoch ein Kriterium haben, welches einen Datensatz in beiden Tabellen als zusammengehörig/gleich definiert.

Danach sollte es für dich problemlos möglich sein die Tabelle 3 zu erstellen. Dort sollte es dann ja reichen über beide Tabellen zu iterieren und prüfen ob der Datensatz bereits in Tabelle 3 vorhanden ist. Falls nicht hinzufügen, falls schon ggf. Datensatz anreichern oder eben einfach ignorieren.

11.08.2016 - 09:08 Uhr

Das schließe ich nicht aus. Dann etwas mehr zur tatsächlichen Problemstellung die mich zu der Frage führte:

Ich habe in einer bestehender Implementierung einen Service ItemHistoryCollector. Dieser hat die Aufgabe Historieneinträge zu sammeln und zu speichern. Zusätzlich gibt es nun also einen weiteren Service welcher einen beliebigen Prozess abbildet z.B. Anlegen eines Auftrags. Im Rahmen dieser Prozesse sollen eben auch entsprechend Historieneinträge erzeugt werden, dazu würde der ItemHistoryCollector verwendet werden. Tatsächlich gespeichert werden sollen diese aber nur, wenn die Gesamtaktion erfolgreich war.

In der Theorie also: Beide nutzen die gleiche Datenbankverbindung, der Service zur Prozessabbildung beginnt eine Transaktion und Comitted diese eben acuh wieder.

10.08.2016 - 13:52 Uhr

Hmmm, also doch mit Container als Beispiel. (im Beispiel genutzt SimpleInjector)


var container = new Container();
// Es ginge zwar auch über eine Hybrid LifeTime, aber wie dann der Service3 zu injecten ist, konnte ich noch nicht raus finden. Dafür ist ja ein entsprechendes container.BeginExecutionContextScope() notwendig.
//container.Options.DefaultScopedLifestyle = new ExecutionContextScopeLifestyle();
//container.Register<MyUnitOfWork>(Lifestyle.CreateHybrid(() => container.GetCurrentExecutionContextScope() != null, Lifestyle.Scoped, Lifestyle.Transient));

container.Register<MyUnitOfWork>();
container.Register<MyService1>();
container.Register<MyService2>();
container.Register<MyService3>( () => MyService3Factory.CreateNew(container.GetInstance<MyUnitOfWork>()));

var instance1 = container.GetInstance<MyService1>();
var instance2 = container.GetInstance<MyService2>();
var instance3 = container.GetInstance<MyService3>();

Zusätzlich noch die Factory für MyService3.


public static class MyService3Factory
{
    public static MyService3 CreateNew(MyUnitOfWork unitOfWork)
    {
        return  new MyService3(new MyService1(unitOfWork), new MyService2(unitOfWork));
    }
}

10.08.2016 - 10:09 Uhr

Hallo zusammen,

ich sitze gerade gedanklich vor dem Problem, wie die korrekte Injizierung von Abhängigkeiten aussieht, wenn diese Abhängigkeiten wiederum Abhängigkeiten teilen sollen. Das Stichwort hier ist sicherlich der Scope, aber dessen Verwendung ist mir nicht klar. Konkret geht es um die gemeinsame Nutzung einer Unit und somit auch die gemeinsame Verwendung von Transaktionen.

Als Beispiel könnten folgende Klassen dienen:


 class MyUnitOfWork
{
    public Guid Id { get; set; }

    public MyUnitOfWork()
    {
        Id = Guid.NewGuid();
    }
}

public class MyService1
{
    private readonly MyUnitOfWork _myUnitOfWork;

    public MyService1(MyUnitOfWork myUnitOfWork)
    {
        _myUnitOfWork = myUnitOfWork;
    }
}

public class MyService2
{
    private readonly MyUnitOfWork _myUnitOfWork;

    public MyService2(MyUnitOfWork myUnitOfWork)
    {
        _myUnitOfWork = myUnitOfWork;
    }
}

public class MyService3
{
    private readonly MyService1 _service1;
    private readonly MyService2 _service2;

    public MyService3(MyService1 service1, MyService2 service2)
    {
        _service1 = service1;
        _service2 = service2;
    }
}

Eine Verwendung ohne Container etc. könnte also so aussehen:


var instance1 = new MyService1(new MyUnitOfWork());
var instance2 = new MyService2(new MyUnitOfWork());

var sharedUnit = new MyUnitOfWork();
var instance3 = new MyService3(new MyService1(sharedUnit),  new MyService2(sharedUnit));

Allerdings muss hier der Aufrufende wissen, dass dies so sein muss, was letztlich auch nicht gewollt ist. Wie verbirgt MyService3 also, dass die beiden Abhängigkeiten eine geteilte Instanz von MyUnitOfWork haben sollen?

Edit: Titel von Verwendung von Scopes mit DI geändert. Denke dies ist ohne Bezug zu Container etc. erstmal treffender

08.08.2016 - 15:24 Uhr

Du kannst mit if/else beispielsweise prüfen, ob etwas passieren soll, wenn ein Kriterium wahr ist.


if(    (a >= 1 && a <= 30)
    && (b >= 15 && b <= 20)
    && (c >= 10 && c <= 30)
{ 
   XXX();
}

01.08.2016 - 13:43 Uhr

Ist Windonws-Forms nicht falsch?

Ich würde glaube eher einen Converter nutzen. Alternativ kann auch das Template überschrieben werden. Am Bespiel eines Labels siehe hier: Underscores not displayed in WPF

01.08.2016 - 12:11 Uhr

Du musst die Underscores escapen.
Das solltest Du durch doppelte Unterstriche erreichen.

01.08.2016 - 11:59 Uhr

Nun, wenn Result.Shots leer ist, dann ist ja auch klar warum nichts angezeigt wird 😃.

Hast Du mal mit dem Debugger geschaut, was je nach Situation passiert?

01.08.2016 - 09:02 Uhr

Klingt für mich nach einem Problem beim Zeichnen des Spalteninhalts. Greifst Du dort irgendwie ein?

Wie kommen denn die Daten ins Grid beim Aktualisieren? Arbeitest Du hier entsprechend mit Bindings und INotifyPropertyChanged?

01.08.2016 - 01:30 Uhr

Ich habe das Sample nun einmal überholt und einige der genannten Punkte einfließen lassen. Die SPA ist aktuell eher weniger lauffähig. Diese ist noch auf die DAL Entities ausgelegt und wirdim Laufe der Woche angepasst.

Grundsätzlich sollten folgende Punkte eingeflossen sein:

  • Die API liefert nun nicht mehr die DAL-Entities aus. Stattdessen werden die QueryOptions soweit nötig ausgewertet und entsprechend an den BLL weitergereicht. Die Projektion zwischen DAL und BLL findet dort dann unter Verwendung von AutoMapper statt.
  • Die Validation ist in den BLL übergegangen
  • Die Interfaces/Modelles sind sofern sinnvoll in eigene Projekte (.Contracts) ausgelagert worden
29.07.2016 - 15:51 Uhr

Was ist aus dem demnächst geworden? 😃 Wir steigen demnächst auf Sharepoint 2016 um. Falls Du dafür Tester benötigst, kannst Du dich gerne bei mir melden.

29.07.2016 - 09:10 Uhr

Nimm doch einfach einen Konstruktor mit 3 Parametern? 😃

28.07.2016 - 14:46 Uhr

Beispiel DI:
Der DAL muss nichts einem DI bekannt machen. Was auch?
Der DAL gibt nur bekannt: das sind meine DAL Interfaces und das sind potentielle Implementierungen.

Mein gedanklicher Fehler liegt darin, dass für mich der Layer entscheidet (weiß) welche Implementierung er wie benötigt. Und die Applikation eben nur sagen muss: "Okay, ich möchte diesen BLL nutzen.".

Im Sinn der Composite Root wäre hier die Verantwortliche Applikation ja die WebApi. Durch die Nutzung von MEF wollte ich eigentlich erreichen, das die WebApi keine Referenz auf z.B. den DAL benötigt.
Wie sähe denn das Register-Projekt aus? Einfach alles referenzieren und entsprechend initialisieren klingt mir zu einfach ^^. Das würde allerdings helfen, dass die WebApi selbst keine Kenntniss vom DAL hat.

Übrigens sind bei Dir teilweise Interfaces und Implementierung im gleichen Projekt.
Macht i.d.R. wenig sinn.

Hmm, ja vermutlich merkt man diesen Nutzen erst dann, wenn man unterschiedliche Implementierungen in unterschiedlichen Projekten für die Interfaces hat.

25.07.2016 - 11:32 Uhr

Du hast ein EdmModel für die unterschiedlichen Schichten? Das klingt für mich nun allerdings zu mindestens merkwürdig 😃.

22.07.2016 - 11:37 Uhr

Ihr stürzt mich in das Land der Tränen 😄

22.07.2016 - 11:27 Uhr

Hmm, ggf. kannst Du etwas über WebConfig-Transform machen, aber ob damit neue Einträge erreicht werden können, kann ich nicht sagen.

22.07.2016 - 11:01 Uhr

... alles weitere kann ich nicht mehr ansehen, da Du offensichtlich mitten im Beitrag das Repository gelöscht hast und ich jetzt einen Fehler 404 erhalte 😉

Sorry, sollte nun wieder da sein, wollte etwas am initalen Commit anpassen. Da ich kein Git Profi bin erschien mir dies so am einfachsten 😃.

Du gibst Entitäten durch OData raus.

Genau das würde ich gerne vermeiden, aber dabei habe ich selbst noch nicht eine für kleinere Projekte aufwandsgerechte Möglichkeit gefunden (dazu auch die offene Frage von mir).

Wenn ich Projekte wie "Common" oder "Helper" oder "Util...

Und diese noch granularer aufteilen? Ich sehe diese immer also Projekte, welche in allen Teilen der Applikation verwendet werden.

Danke für das Feedback bis hier her!

22.07.2016 - 10:01 Uhr

Ich habe darauf keine Antwort für dich, da ich mir weiterhin die gleiche Frage stelle. Eben auch nicht nach dem ob es generell möglich ist, sondern wie es für kleinere Anwendungen mit vertretbarem Aufwand möglich ist.

Ich habe im Rahmen von [Review] Best Practices/Architektur anhand von Bespielprojekt (WebApi + OData + EF + SPA (Aurelia)) auch mit AutoMapper etc. experimentiert und finde, dass dieser viele Punkte ganz gut lösen kann.

(auch wenn Abt immer wieder erwähnt, dass man diesen nicht nutzen soll und auch entsprechende Links dazu liefert. Ich fand allerdings nicht, dass diese noch vollständig zutreffen, da AutoMapper mittlerweile auch eine Projektions-Extension mitbringt.)

Um allerdings die harte Bindung an deinen DAL zu verlieren, kannst du die Entities auf jeden Fall in eine eigene DLL auslagern.

21.07.2016 - 11:52 Uhr

In deiner Quell und Zieldatei ist die Anzeige falsch, aber im Programm selbst korrekt?
Das klingt für mich eher danach, dass das Encoding in der Ein- und Ausgabedatei nicht korrekt gesetzt ist.

19.07.2016 - 15:09 Uhr

Wenn die Daten von X Anwendungen auf die selbe Basis zugreifen müssen, muss man dann entweder die Trennung von spezifschen Daten in der DB vornehmen, also die zusätzlichen Teile in gesonderten Tabellen speichern oder eben redundante Daten halten.
Erstes wäre noch sinnvoll letztes aber unsinn und eben redundanz.

Ich erwähnte ja bereits Eingangs die Möglichkeit dies über entsprechende zusätzliche Tabellen im Kern abzulegen, aber auf jeden Fall eine Key/Value Tabelle vermeiden würde.

Aber ja, abhängig davon von wem und wie die zusätzlichen Informationen genutzt werden, würde ich diese nicht zwangsläufig in der Kerndatenbank halten wollen. Ob man diese nun replizieren möchte oder nur die Ids entsprechend vorhält oder dies über Views abbildet sei mal dahin gestellt.

(Ich schieße hier ja nicht aus, dass es hier sinnvoll ist alle Daten in der Kerndatenbank zu haben.)

19.07.2016 - 11:46 Uhr

Hmmm ...

Einige der Entitäten des neuen Kerns müssen in den Applikationen erweitert werden.
So hat ein Verein (auf den generell aus allen Applikationen zugegriffen werden soll), in einigen Anwendungen noch weitere Eigenschaften wie z. B. ob es Mitglied einer bestimmten Organisation ist.

Klingt für mich nicht danach. Ich habe es so verstanden, dass alle Applikationen auf die Basisdaten eines Vereins zugreifen. Manche dieser Applikation benötigen weitere Vereinsinformationen (Zuordnung zu Organisation).

Sofern mehrere Applikationen diese Erweiterungen benötigen, muss man natürlich aufpassen, dass die Daten nicht über diverse Datenbanken verteilt werden (oder sich dessen zumindstens bewusst sein). In diesem Fall würde ich dies wohl auch in der "Kerndatenbank" aufnehmen.

Aber soetwas kann/ist ja auch immer eine Fall zu Fall Unterscheidung. Die Zuordnung eines Vereins kann ja durchaus in der Kerndatenbank stehen (genauso wie die Verwaltung der Organisationen). In dem Fall würde ich es auch nicht als Zusatz zu einer bestimmten Applikation sehen, sondern als Teil des Kerns. Es ist ja auch niemals notwendig, dass jede Applikation das komplette Model versteht/nutzt.

Im Gegensatz dazu würde ich solche erweiternde Eigenschaften die gefühlt doch sehr anwendungsspezifisch sind wie z.B. DarfAntraegeErstellen nicht im Kern sehen.

19.07.2016 - 09:41 Uhr

Das wäre der Applikation doch völlig egal, wieso sollte diese aktualisiert werden müssen?

Sofern ihr diese Gefahr seht, wieso wollt ihr überhaupt diese Daten die zu unterschiedlichen Applikationen gehören in einer Datenbank zusammenwerfen? Sollte eure Kernkomponente sich auch nicht nur um den Kern kümmern und nicht Teile diverser Applikationen abbilden?

18.07.2016 - 20:06 Uhr

Wieso nicht einfach als Table_App_Extensions welche die Erweiterungen der Applikation für eine bestimmte Tabelle enthält? (bzw. Table_Extensions wenns in ner eigenen Datenbank ist) Dort einfach per Key referenzieren und fertig?

Ein KeyValue stelle ich mir relativ schwierig vor, wenn ein Datensatz mehrere zusätzliche Werte enthält.

18.07.2016 - 15:07 Uhr

Genauso wie du sie von Liste 1 in Liste 2 bekommst, bekommst du sie auch wieder von 2 nach 1. Oder wo genau liegt dein Problem?

14.07.2016 - 09:18 Uhr

Hallo Coffeebean,

POST -> Wo? Diese sollten alle ein Created mit der Entity zurückgeben. Aber stimmt die Location war noch etwas.

Du sagst auch im Body. Also nicht die erstellte Entity zurückgeben, sondern einfach nur die Location?
Im Fall des ApplicationController also in der Richtung:


            string location = $"/odata/Applications({application.Id})";
            // Mit Entity
            return Created(location, application);
            // Oder Location auch im Body
            return Created(location, location);

ASP.NET Core ist das SPA Projekt. Das war eigentlich nicht nötig, ich hatte initial allerdings die API mit EF Core und ASP.NET Core begonnen. Dies hatte bis zu einem gewissen Punkt auch gut funktioniert 😃.

14.07.2016 - 00:49 Uhr

Hallo zusammen,

da gefühlt in letzter Zeit doch diverse Fragen (auch von mir z.B. Entity Framework-Klassen und Darstellung in der View) bzgl. APIs (und ähnliches) gekommen sind, habe ich ein Projekt zu erstellen, welches die Themen WebApi/OData auffasst.
In vielen der Antworten wird ja entsprechend auf WebApi / REST / OData hingewiesen.
Bei den allermeisten Beispielen die ich selbst dazu bisher jedoch gefunden und bearbeitet habe, hörten diese sehr oft nach den Grundzügen auf und basierten auf den denkbar einfachsten Datenmodellen.

Das eigentliche Projekt habe ich auf GitHub bereitgestellt, sodass interessierte daran mitwirken können. (vielleicht kann es noch jemand Anhängen, der nicht an die 256KB Grenze gebunden ist!?).

Zum Projekt selbst sei gesagt:

  • Das Thema ist eine minimale Applikationsverwaltung bestehend aus Applikation, Applikationsversionen und Applikationsverwaltern.
  • Es fehlt noch sehr an Kommentaren, diese werde ich morgen Abend versuchen nachzubessern.
  • Gerade der SPA Teil ist doch eher Neuland, hier gibt es sicherlich viel Optimierungspotential. Ich bin mir bewusst, dass dort nicht jede Funktion komplett ausprogrammiert ist. Diese soll hauptsächlich jedoch auch nur dazu dienen, die WebApi zu konsumieren.

Offene Fragen:

  • Im OData Bereich ist es mir weiterhin rätselhaft, wie es möglich ist, dort nicht die Entitäten der Datenbank zu nutzen und trotzdem die OData Funktionalitäten zu erhalten
  • Ich habe versucht die Verarbeitung der Requests in die BLL auszulagern. Wie handhabt ihr dies bei z.B. Patch? Nutzt ihr nicht das Delta zum Patchen oder übergebt ihr dieses in den BLL hinein?
  • Wie wird in z.B. der SPA ein Batching umgesetzt, sodass erst beim Speichern der Applikation auch hinzugefügte/entfernte Manager verarbeitet werden?

Schön fände ich es, wenn dort sogar Verbesserungen/Best Practices eingearbeitet werden, sodass man dies hin und wieder als Orientierung nutzen kann.

Auf jeden Fall freue ich mich über jedes aufgedeckte Pitfall!

Ich bin mir nicht sicher, ob CodeReview der richtige Ort ist...irgendwie aber schon. Web-Entwicklung selbst fand ich auch nicht so richtig passend. Alternativ könnte es auch unter Projekte oder Smalltalk laufen 😃.

12.07.2016 - 16:47 Uhr

Als Tipp noch... Zur Ermittlung deines Outputpfades solltest Du z.B. mit Path.GetDirectoryName arbeiten und danach mit Path.Combine.

11.07.2016 - 19:26 Uhr

Und was sagt die Fehlermeldung?

08.07.2016 - 16:01 Uhr

In dem PDF zur API (4.3.1.1) steht doch entsprechend drin, wie du dich zu authentifizieren hast.
Bezog sich auf die SmartFeeds WebService Url.

08.07.2016 - 09:03 Uhr

Sind halt echt keine guten Basis-Vorlagen für Echtanwendungen.

Kannst Du Beispiele/Projekte empfehlen die dies erfüllen?