关注@servicestack或查看文档,使用Stackoverflow或客户论坛进行支持。
查看最新功能的发行说明,或查看serviceStack.net/features以获取概述。
ServiceStack是一种简单,快速,通用和高度生产力的全网络和Web服务框架,经过深思熟虑,旨在通过基于消息的设计来降低人造复杂性并促进远程服务的最佳实践,从而最大程度地使用它,可以最大程度地利用,可以利用集成的服务网关来创建松散耦合的模块化模块化的模块化型架构。 ServiceStack服务可通过一系列内置快速数据格式(Inc. JSON,XML,CSV,JSV,ProTobuf,Wire和MSGPACK)以及用于肥皂端点的XSD/WSDL,用于肥皂端点和兔子MQ,Redis MQ和Amazon SQS MQ主机。
它的设计和简单焦点提供了一套无与伦比的生产力功能套件,可以在没有代码的情况下声明地启用,从创建完全可查询的Web API,只有单个键入的请求DTO,并带有自动查询,可以为每个主要的RDBMS提供支持自动批次批次的请求的内置支持,或者轻松地允许使用丰富的HTTP缓存和无用的服务来实现所有现有的服务。
您的相同服务还可以作为ServiceStack的智能剃须刀视图中的控制器,从而减少了为Web和单页应用程序提供服务的努力,以及能够使用ServiceStack的实时服务器事件提供即时交互体验的丰富桌面和移动客户端。
ServiceStack Services还为消费者最大化生产率,为消费者提供即时的端到端键入API,而无需代码 - 代码,从而为.NET到.NET Web服务提供了最有生产力的开发体验。
ServiceStack now integrates with all Major IDE's used for creating the best native experiences on the most popular platforms to enable a highly productive dev workflow for consuming Web Services, making ServiceStack the ideal back-end choice for powering rich, native iPhone and iPad Apps on iOS with Swift, Mobile and Tablet Apps on the Android platform with Java, OSX Desktop Applications as well as targeting the most popular .NET PCL platforms including Xamarin.ios,Xamarin.android,Windows Store,WPF,Winforms和Silverlight:
直接在Visual Studio中为C#,Typescript,F#和VB.NET提供即时本机键入API,直接在Windows上使用Xamarin.ios和Xamarin.android,在Visual Studio中为最流行的.NET平台提供了最流行的.NET平台。
使用Xamarin.ios和Xamarin.Android提供C#本机类型,以使用OSX上的Xamarin Studio开发iOS和Android移动应用程序。 ServiceStackxs插件还提供了丰富的Web服务开发经验,开发客户端应用程序,并在Linux上开发了Mono
在SWIFT中提供即时的本机键入API,包括通用服务客户端,从而直接从Xcode内部提供了高度生产的工作流程和轻松消费Web服务的Web服务!
在Java和Kotlin中提供即时的本机键入API,其中包括惯用的Java通用服务客户端,支持Sync和异步请求,通过利用Android的异步异型,以启用富含服务的本机Java或Kotlin移动应用程序在Android Platform上创建富含服务的本机Java或Kotlin移动应用程序 - 直接从Android Dutio室内!
ServiceStack Idea插件可直接从Intellij的插件存储库中安装,并可以与Intellij Java Maven项目无缝集成,以生成类型的API,以快速而轻松地从纯交叉平台Java或Kotlin客户端使用远程Servicestack Web服务。
Java Add Add Servicestack参考提供的无与伦比的生产率也可以在Eclipse Marketplace的ServiceStackeCeCeclipse IDE插件中获得,可在Eclipse Marketplace中安装,可将添加Servicestack参考与Eclipse Java Maven项目深入整合,促进Java开发人员轻松地添加和更新其Evolvant Endervand Servicestack Web Services的参考。
除了我们受支持的IDE列表不断增长之外,Servicestack-CLI跨平台命令行NPM脚本也使构建服务器,自动化任务和您喜欢的文本编辑器的命令行跑步者可以轻松添加和更新ServiceStack参考!
此示例也可以作为独立集成测试提供:
//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 ) ;
}
}无需代码,可以在服务器DTO上重复使用:
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 = 0相同的代码也与Android,iOS,Xamarin.Forms,UWP和WPF客户端一起使用。
f#和vb.net可以重复使用相同的.NET服务客户端和DTO
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 ;
} ) ;使用Angular HTTP客户端使用打字稿定义:
this . http . get < GetCustomersResponse > ( createUrl ( '/customers' , request ) ) . subscribe ( r => {
this . results = r . results ;
} ) ; $ . getJSON ( baseUri + "/customers" , function ( r ) {
var results = r . results ;
} ) ;这就是创建和消费简单的启用数据库REST Web服务所需的所有应用程序代码!
如果您安装了Nuget,则最简单的入门方法是:
Nuget上的最新V4+是带有免费配额的商业版本。
示例项目,用例,演示,入门模板的确定列表
自2013年9月以来,ServiceStack源代码可根据GNU AFFERO通用公共许可/FOSS许可例外提供,请参见源中的LICENT.TXT。还提供替代商业许可,请参阅https://servicestack.net/pricing有关详细信息。
贡献者需要在审查任何代码之前批准贡献者许可协议,请参阅贡献文档以获取更多详细信息。所有贡献都必须包括验证所需行为的测试。
ServiceStack包含以下大库的源代码,以提供其某些核心功能。每个图书馆均根据其各自的许可发布:
关注@servicestack和 +ServiceStack以获取项目更新。
非常感谢Github和ServiceStack的所有贡献者:
类似的开源.NET项目用于开发或访问Web服务包括: