Ich habe SignalR
in mehreren meiner Projekte Echtzeit-Messaging-Funktionen verwendet. Es scheint zuverlässig zu funktionieren und ist sehr einfach zu erlernen.
Zumindest für mich ist die Versuchung, die Entwicklung eines Web-API-Dienstes aufzugeben und SignalR
für alles zu verwenden.
Ich bin der Meinung, dass dies durch durchdachtes Design erreicht werden könnte, und wenn dies der Fall wäre, würde dies bedeuten, dass weit weniger Client-Code erforderlich wäre. Wichtiger noch, es würde bedeuten, dass es eine einzige Schnittstelle zu Diensten geben würde und keine geteilte Schnittstelle, und im schlimmsten Fall könnte man dies verkabeln, ohne darüber nachzudenken, wann Dinge gerendert werden usw.
Also, ich würde gerne wissen:
- Gibt es einen anderen Grund, SignalR anstelle aller Webdienste außer der Leistung nicht zu verwenden?
- Ist die Leistung von SignalR so hoch, dass dies keinen Sinn ergibt?
Es war lange mein Traum, serverseitige Objekt- und Dienstdefinitionen in clientseitigen Dienstzugriffscode zu übersetzen, ohne etwas Dummes node.js
. Wenn ich beispielsweise ein interessantes Objekt InterestingObject
und einen Dienst für CRUD
das Objekt InterestingObjectService
definiere, kann ich eine Standard-URL-Route für den Dienst definieren, z. B. "/ {Dienstname} / {Methodenname}". Für den Zugriff muss ich jedoch noch Client-Code schreiben der Service. Da das Objekt vom Client zum Server und zurück übertragen wird, gibt es keinen praktischen Grund dafürUm das Objekt explizit im clientseitigen Code zu definieren, sollte auch keine explizite Definition der Routen zur Ausführung von CRUD-Operationen erforderlich sein. Ich bin der Meinung, dass es eine Möglichkeit geben sollte, all dies zu standardisieren, sodass es möglich ist, einen Client unter der Annahme zu schreiben, dass der Dienstzugriff vom Client auf den Server und zurück so transparent funktioniert, als würde ich WinForms oder Java schreiben Applet oder native App oder was hast du.
Wenn SignalR gut genug ist, um anstelle eines herkömmlichen Webdienstes verwendet zu werden, ist dies möglicherweise ein praktikabler Weg, um dies zu erreichen. SignalR enthält bereits Funktionen, mit denen der Hub wie der von mir beschriebene Service funktioniert, sodass ich einen Common-Base-Service (CRUD) definieren kann, der alle diese Funktionen ohne weitere Überlegungen bietet. Dann könnte ich den Zugriff auf den Dienst fast für selbstverständlich halten und mir den Ärger ersparen, Code neu zu schreiben, um auf etwas zuzugreifen, auf das per Konvention zugegriffen werden kann - und vor allem die Zeit, die ich für das Schreiben von Code aufwenden müsste, um zu definieren, wie dieser aktualisiert wird das DOM.
Nachdem ich meinen Artikel gelesen habe, bin ich der Meinung, dass es etwas unsinnig sein könnte. Bitte fragen Sie mich, wenn Sie Fragen dazu haben, worauf ich hinaus will. Grundsätzlich möchte ich, dass der Service-Zugang so transparent wie möglich ist.