@servicestack을 팔로우하거나 문서를보고, stackoverflow 또는 고객 포럼을 사용하여 지원을 받으십시오.
최신 기능에 대한 릴리스 노트를 보거나 개요는 servicestack.net/features를 참조하십시오.
Servicestack은 인공 복잡성을 줄이고 원격 서비스를 홍보하기 위해 신중하게 아프게 된 단순하고 빠르고 다재다능하며 생산성이 뛰어난 전체 기능성 웹 및 웹 서비스 프레임 워크로, 메시지 기반 디자인을 통해 원격 서비스를 홍보 할 수 있도록 원격 서비스를 홍보 할 수 있습니다. Servicestack 서비스는 SOAP 엔드 포인트 및 토끼 MQ, Redis MQ 및 Amazon SQS MQ 호스트 용 XSD/WSDL뿐만 아니라 내장 된 빠른 데이터 형식 (INC. JSON, XML, CSV, JSV, Protobuf, Wire 및 Msgpack)을 통해 소비 할 수 있습니다.
디자인 및 단순성 초점은 모든 주요 RDBM을 지원하는 자동 쿼리를 사용하여 단일 쿼리 가능한 웹 API를 작성하여 모든 주요 RDBM을 지원하는 단일 쿼리 웹 API를 작성하여 코드없이 선언적으로 활성화 할 수있는 비교할 수없는 생산성 기능 제품군을 제공합니다.
동일한 서비스는 Servicestack의 Smart Razor View의 컨트롤러 역할을하여 Servicestack의 실시간 서버 이벤트를 사용하여 즉각적인 대화 형 경험을 제공 할 수있는 풍부한 데스크톱 및 모바일 클라이언트뿐만 아니라 웹 및 단일 페이지 앱을 모두 제공하려는 노력을 줄입니다.
Servicestack Services는 또한 코드-그네없이 즉시 엔드 투 엔드 유형 API를 제공하는 소비자의 생산성을 최대화하여 .NET에서 .NET 웹 서비스를 개발하기위한 가장 생산적인 개발 경험을 가능하게합니다.
Servicestack은 이제 가장 인기있는 플랫폼에서 최고의 기본 경험을 만드는 데 사용되는 모든 주요 IDE와 통합되어 웹 서비스를 소비하기위한 매우 생산적인 DEV 워크 플로우를 가능하게하여 Servicestack은 JAVA, OSX 데스크 앱을 사용하여 Swift, Mobile 및 Tablet Apps를 통해 IOS에서 IOS에서 풍부한 기본 iPhone 및 iPad 앱을 구축하기위한 이상적인 백엔드 선택을 제공합니다. Xamarin.ios, Xamarin.Android, Windows Store, WPF, Winforms 및 Silverlight :
Windows에서 Xamarin.ios 및 Xamarin.Android를 사용하여 iOS 및 Android를 포함하여 가장 인기있는 .NET 플랫폼 용 C#, TypeScript, F# 및 VB.NET 용 인스턴트 유형 API를 직접 제공합니다.
OSX의 Xamarin Studio와 함께 Xamarin.ios 및 Xamarin.Android를 사용하여 iOS 및 Android 모바일 앱 개발을 지원하는 C# 기본 유형을 제공합니다. Servicestackxs 플러그인은 또한 리눅스에서 모노 개발을 통해 클라이언트 애플리케이션을 개발하는 풍부한 웹 서비스 개발 경험을 제공합니다.
Xcode 내에서 직접적으로 IOS 및 OSX 응용 프로그램에서 고도로 생산적인 워크 플로우와 웹 서비스를 쉽게 소비 할 수있는 일반 서비스 클라이언트를 포함하여 SWIFT에서 즉각적인 기본 유형 API를 제공합니다!
Android의 Asynctasks를 활용하여 Android 플랫폼에서 서비스가 풍부하고 반응이 좋은 자바 또는 Kotlin 모바일 앱을 안드로이드 스튜디오 내에서 직접 생성하여 Android의 Asynctasks를 활용하여 동기화 및 Async 요청을 지원하는 관용 Java Generic Service 클라이언트를 포함하여 Java 및 Kotlin에서 즉각적인 기본 유형 API를 제공합니다.
Servicestack Idea Plugin은 Intellij의 플러그인 저장소에서 직접 설치할 수 있으며 Typed API를 생성하기 위해 Intellij Java Maven 프로젝트와 완벽하게 통합되어 순수한 크로스 플랫폼 Java 또는 Kotlin 클라이언트에서 원격 서비스 스택 웹 서비스를 빠르고 쉽게 소비 할 수 있습니다.
Java Add Servicestack Reference에서 제공하는 비교할 수없는 생산성은 Eclipse Marketplace에서 설치할 수있는 Servicestackeclipse IDE 플러그인에서도 제공되어 Eclipse Java Maven 프로젝트와 함께 Servicestack 참조의 추가 통합을 제공하여 Java 개발자가 Evolicestack Web Services의 참조를 쉽게 추가하고 업데이트 할 수 있도록합니다.
지원되는 IDE의 성장 목록 외에도 Servicestack-Cli Cross-Platform Command-Line 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 ) ;
}
}Code-Gen이 필요하지 않으며 서버 DTOS를 통해 재사용 할 수 있습니다.
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 ;
} ) ;각도 HTTP 클라이언트와 함께 TypeScript 정의 사용 :
this . http . get < GetCustomersResponse > ( createUrl ( '/customers' , request ) ) . subscribe ( r => {
this . results = r . results ;
} ) ; $ . getJSON ( baseUri + "/customers" , function ( r ) {
var results = r . results ;
} ) ;이것이 간단한 데이터베이스 지원 REST 웹 서비스를 작성하고 소비하는 데 필요한 모든 응용 프로그램 코드입니다!
Nuget을 설치 한 경우 시작하는 가장 쉬운 방법은 다음과 같습니다.
Nuget의 최신 V4+는 무료 할당량이있는 상업용 릴리스입니다.
예제 프로젝트, 사용 사례, 데모, 스타터 템플릿의 결정적인 목록
2013 년 9 월 이후 Servicestack 소스 코드는 GNU Affero General Public License/Foss 라이센스 예외에서 사용할 수 있습니다. 소스의 License.txt를 참조하십시오. 대체 상용 라이센스도 제공됩니다 (자세한 내용은 https://servicestack.net/pricing을 참조하십시오.
기고자는 코드를 검토하기 전에 기고자 라이센스 계약을 승인해야합니다. 자세한 내용은 기고 문서를 참조하십시오. 모든 기여에는 원하는 동작을 확인하는 테스트가 포함되어야합니다.
Servicestack에는 일부 핵심 기능에 대한 Great Libraries의 소스 코드가 포함됩니다. 각 라이브러리는 해당 라이센스에 따라 릴리스됩니다.
프로젝트 업데이트를 위해 @Servicestack 및 +Servicestack을 팔로우하십시오.
Github와 Servicestack의 모든 기고자들에게 큰 감사를드립니다.
웹 서비스를 개발하거나 액세스하기위한 유사한 오픈 소스 .NET 프로젝트에는 다음이 포함됩니다.