Folgen Sie @Servicestack oder sehen Sie sich die Dokumente an, verwenden Sie Stackoverflow oder die Kundenforen zur Unterstützung.
Sehen Sie sich die Versionshinweise für die neuesten Funktionen an oder finden Sie servicestack.net/Features für einen Überblick.
Servicestack ist ein einfaches, schnelles, vielseitiges und hochproduktives Web- und Web-Dienste-Framework, das sorgfältig angeworben ist, um die künstliche Komplexität zu verringern und die Best-Practices für Remote-Dienste mit einem messagebasierten Design zu fördern, das maximale Wiederverwendung ermöglicht, die ein integriertes Service-Gateway für die Erstellung von locker-klopfenden modularisierten Service-Architekturen nutzen kann. Servicestack-Dienste sind über eine Reihe integrierter schneller Datenformate (Inc. JSON, XML, CSV, JSV, Protobuf, Wire und MSGPack) sowie XSD/WSDL für SOAP-Endpunkte und Rabbit MQ, Redis MQ und Amazon SQS-MQS-Hosts konsumierbar.
Der Fokus für Design und Einfachheit bietet eine beispiellose Reihe von Produktivitätsfunktionen, die ohne Code deklarativ aktiviert werden können, indem sie vollständig abgefragbare Web-APIs mit einer einzigen typisierten Anforderung mit automatischer Abfrage erstellen, die alle großen RDBMs für die integrierte Unterstützung für automatische Batched-Anfragen oder mühelos zu ermöglichen, um Rich-HTTP-Caching zu ermöglichen.
Dieselben Dienste dienen auch als Controller im Smart Razor-Aufrufe von Servicestack, wobei die Bemühungen, sowohl Web- als auch einzelne Seiten-Apps sowie ein reichhaltiges Desktop- und mobile Clients zu servieren, die sofortige interaktive Erlebnisse mithilfe der Echtzeit-Serverereignisse von Servicestack bieten können.
Servicestack-Dienste maximieren auch die Produktivität für Verbraucher, die eine sofortige, von End-to-End-Typ-Typ-API anbieten, ohne dass der Code-Gen die produktivste Entwicklungserfahrung für die Entwicklung von .NET in .NET-Webdienste ermöglicht.
Servicestack integriert sich jetzt in alle wichtigen IDEs, die für die Erstellung der besten nativen Erlebnisse auf den beliebtesten Plattformen verwendet werden, um einen hochproduktiven Entwickler-Workflow für den Verzehr von Webdiensten zu ermöglichen, wodurch Servicestack die ideale Back-End-Auswahl für die Auswahl reichhaltiger iPhone- und iPad-Apps auf iOS-Apps mit Swift-, Mobile und Tablet-Apps auf der und der PLAGS-Plattform mit JAVA, OSX-Desktopikationen sowie von JAVA, OSX-Desktop-Applikationen sowie von JAVA, OSX Desktopics sowie auf. Xamarin.ios, xamarin.android, Windows Store, WPF, WinForms und Silverlight:
Bereitstellung von sofortigen nativen typisierten APIs für C#, TypeScript, F# und VB.NET direkt in Visual Studio für die beliebtesten .NET -Plattformen, einschließlich iOS und Android, unter Verwendung von xamarin.ios und xamarin.android unter Windows.
Bereitstellung von C# Native Typen Support für die Entwicklung von iOS- und Android -mobilen Apps mit Xamarin.ios und Xamarin.android mit Xamarin Studio unter OSX. Das Servicestackxs -Plugin bietet außerdem ein reichhaltiges Web -Service -Entwicklungserlebnis zur Entwicklung von Client -Anwendungen mit Mono, die unter Linux entwickelt werden
Bereitstellung einer sofortigen nativen typisierten API in Swift, einschließlich Generika -Service -Clients, die einen hochproduktiven Workflow und mühelosen Verbrauch von Webdiensten aus nativen iOS- und OSX -Anwendungen ermöglichen - direkt in Xcode!
Bereitstellung einer sofortigen nativen typisierten API in Java und Kotlin, einschließlich idiomatischer Java Generic Service -Clients, die SYNC- und ASYNC -Anforderungen unterstützen, indem die Asynctasks von Android nutzt, um die Erstellung von dienstenreichen und reaktionsschnellen nativen Java- oder Kotlin -mobilen Anpassungen auf der Android -Plattform zu ermöglichen - direkt von Android Studio!
Das Servicestack Idea-Plugin ist direkt aus dem Plugin-Repository von Intellij installiert und ermöglicht eine nahtlose Integration in Intellij Java Maven-Projekte, um eine typisierte API zu generieren, um schnell und mühelos Remote-Servicestack-Webdienste aus reinen plattformübergreifenden Java- oder Kotlin-Kunden zu konsumieren.
Die von Java addiertes Servicestack -Referenz angebotene nicht übereinstimmende Produktivität ist auch im ServicestackeClipse -IDE -Plugin erhältlich, das vom Eclipse Marketplace installiert werden kann, um eine tiefgreifende Integration von ADD -Servicestack -Referenz mit Eclipse Java Maven -Projekten zu ermöglichen, um Java -Entwickler mühelos hinzuzufügen und die Referenzen der Referenzen ihrer Evolving -Remote -Servicestack -Dienste zu aktualisieren.
Zusätzlich zu unserer wachsenden Liste der unterstützten IDEs erleichtert die servicestack-cli-plattformübergreifenden Befehlszeilen-NPM-Skripte für Build-Server, automatisierte Aufgaben und Befehlszeilen-Läufer Ihrer bevorzugten Textredakteure, um Servicestack-Referenzen einfach hinzuzufügen und zu aktualisieren!
Dieses Beispiel ist auch als eigenständiger Integrationstest erhältlich:
//Web Service Host Configuration
public class AppHost : AppSelfHostBase
{
public AppHost ( )
: base ( "Customer REST Example" , typeof ( CustomerService ) . Assembly ) { }
public override void Configure ( Container container )
{
//Register which RDBMS provider to use
container . Register < IDbConnectionFactory > ( c =>
new OrmLiteConnectionFactory ( ":memory:" , SqliteDialect . Provider ) ) ;
using ( var db = container . Resolve < IDbConnectionFactory > ( ) . Open ( ) )
{
//Create the Customer POCO table if it doesn't already exist
db . CreateTableIfNotExists < Customer > ( ) ;
}
}
}
//Web Service DTO's
[ Route ( "/customers" , "GET" ) ]
public class GetCustomers : IReturn < GetCustomersResponse > { }
public class GetCustomersResponse
{
public List < Customer > Results { get ; set ; }
}
[ Route ( "/customers/{Id}" , "GET" ) ]
public class GetCustomer : IReturn < Customer >
{
public int Id { get ; set ; }
}
[ Route ( "/customers" , "POST" ) ]
public class CreateCustomer : IReturn < Customer >
{
public string Name { get ; set ; }
}
[ Route ( "/customers/{Id}" , "PUT" ) ]
public class UpdateCustomer : IReturn < Customer >
{
public int Id { get ; set ; }
public string Name { get ; set ; }
}
[ Route ( "/customers/{Id}" , "DELETE" ) ]
public class DeleteCustomer : IReturnVoid
{
public int Id { get ; set ; }
}
// POCO DB Model
public class Customer
{
[ AutoIncrement ]
public int Id { get ; set ; }
public string Name { get ; set ; }
}
//Web Services Implementation
public class CustomerService : Service
{
public object Get ( GetCustomers request )
{
return new GetCustomersResponse { Results = Db . Select < Customer > ( ) } ;
}
public object Get ( GetCustomer request )
{
return Db . SingleById < Customer > ( request . Id ) ;
}
public object Post ( CreateCustomer request )
{
var customer = new Customer { Name = request . Name } ;
Db . Save ( customer ) ;
return customer ;
}
public object Put ( UpdateCustomer request )
{
var customer = Db . SingleById < Customer > ( request . Id ) ;
if ( customer == null )
throw HttpError . NotFound ( "Customer '{0}' does not exist" . Fmt ( request . Id ) ) ;
customer . Name = request . Name ;
Db . Update ( customer ) ;
return customer ;
}
public void Delete ( DeleteCustomer request )
{
Db . DeleteById < Customer > ( request . Id ) ;
}
}Kein Code-Gen erforderlich, kann über den Server-DTOS wiederverwenden:
var client = new JsonServiceClient ( BaseUri ) ;
//GET /customers
var all = client . Get ( new GetCustomers ( ) ) ; // Count = 0
//POST /customers
var customer = client . Post ( new CreateCustomer { Name = "Foo" } ) ;
//GET /customer/1
customer = client . Get ( new GetCustomer { Id = customer . Id } ) ; // Name = Foo
//GET /customers
all = client . Get ( new GetCustomers ( ) ) ; // Count = 1
//PUT /customers/1
customer = client . Put (
new UpdateCustomer { Id = customer . Id , Name = "Bar" } ) ; // Name = Bar
//DELETE /customers/1
client . Delete ( new DeleteCustomer { Id = customer . Id } ) ;
//GET /customers
all = client . Get ( new GetCustomers ( ) ) ; // Count = 0Der gleiche Code funktioniert auch mit Android-, iOS-, Xamarin.Forms-, UWP- und WPF -Clients.
F# und VB.NET können die gleichen .NET-Service-Clients und DTOs wiederverwenden
const client = new JsonServiceClient ( baseUrl ) ;
const { results } = await client . get ( new GetCustomers ( ) ) ; let client = JsonServiceClient ( baseUrl : BaseUri )
client . getAsync ( GetCustomers ( ) )
. then {
let results = $0 . results;
} JsonServiceClient client = new JsonServiceClient ( BaseUri );
GetCustomersResponse response = client . get ( new GetCustomers ());
List < Customer > results = response . results ; val client = JsonServiceClient ( BaseUri )
val response = client.get( GetCustomers ())
val results = response.results var client = new JsonServiceClient ( BaseUri );
var response = await client. get ( GetCustomers ());
var results = client.results; $ . getJSON ( $ . ss . createUrl ( "/customers" , request ) , request , ( r : GetCustomersResponse ) => {
var results = r . results ;
} ) ;Verwenden von TypeScript -Definitionen mit einem Winkel -HTTP -Client:
this . http . get < GetCustomersResponse > ( createUrl ( '/customers' , request ) ) . subscribe ( r => {
this . results = r . results ;
} ) ; $ . getJSON ( baseUri + "/customers" , function ( r ) {
var results = r . results ;
} ) ;Dies ist der gesamte Anwendungscode, der zum Erstellen und Konsum eines einfachen, datenbank-fähigen REST-Webdienstes erforderlich ist!
Wenn Sie Nuget installiert haben, ist der einfachste Weg, um zu beginnen::
Die neueste V4+ auf Nuget ist eine kommerzielle Veröffentlichung mit kostenlosen Quoten.
Die endgültige Liste von Beispielprojekten, Anwendungen, Demos, Startervorlagen
Seit September 2013 ist der Servicestack Source Code unter GNU Affero General Public Lizenz/FOSS -Lizenzausnahme erhältlich. Siehe Lizenz.txt in der Quelle. Eine alternative kommerzielle Lizenzierung ist ebenfalls verfügbar. Weitere Informationen finden Sie unter https://servicestack.net/pricing.
Mitwirkende müssen die Lizenzvereinbarung von Mitwirkenden genehmigen, bevor ein Code überprüft wird. Weitere Informationen finden Sie in den beitragenden Dokumenten. Alle Beiträge müssen Tests enthalten, die das gewünschte Verhalten überprüfen.
Servicestack enthält den Quellcode der großen Bibliotheken unten für einige seiner Kernfunktionen. Jede Bibliothek wird unter ihrer jeweiligen Lizenz veröffentlicht:
Folgen Sie @Servicestack und +Servicestack für Projektupdates.
Ein großes Dankeschön an Github und alle Mitwirkenden von Servicestack:
Ähnliche Open -Source -.NET -Projekte zum Entwickeln oder Zugriff auf Webdienste umfassen: