2011-07-18 12 views
1

1つのサービスですべてのDTOリソースを継承する方法?ServiceStack - シングルリスタートサービスですべてのDTOリソースを継承する

例えばセイ、

私は、リソースクラスを持っている:

[RestService("/getstudentname", "GET,POST,PUT,OPTIONS")] 
public class RestResourcename 
{ 
public string Name { get; set; } 
} 

[RestService("/getstudentID", "GET,POST,PUT,OPTIONS")] 
public class CNextRestResourceid 
{ 
public string Name { get; set; } 
} 

私は私のサービスクラスがあります。このサービスでは、別のDTOクラスを継承する 1.Howを???????? 2.私はこれのために別のクラスを作成する必要がありますか?

public class CnextRestService : RestServiceBase<RestResourcename> 
{ 
public override object OnGet(RestResourcename request) 
{ 
    return request; 
} 
} 

あなたはRESTを使用している場合(RestServiceBaseから継承してIE)が

答えて

2

はいServiceStackは、各Webサービス用に別のクラスを持っていることが必要です.......この問題で私を提案して下さいあなたは、同じリソースと同じWebサービスで(別名リクエスト)DTO、例えば上の複数のHTTP動詞を実装できます。

public class CustomersService : RestServiceBase<Customers> 
{ 
    OnGet(){...} 
    OnPost(){...} 
    OnDelete(){...} 
    OnPut(){...} 
} 

これを使用すると、次のHTTPアクションのための複数の実装を提供することができます:

GET /customers 
GET /customers/1 
POST /customers 
PUT /customers/1 
DELETE /customers/1 

SOAPを使用する場合、SOAPはHTTP POSTのみをサポートするため、各Webサービスごとに1 RPCメソッドに制限されますが、

これを行うための最善の方法は、ServiceBaseから継承し、HTTP動詞またはエンドポイントがサービスを呼び出すために使用されたのにかかわらず呼び出されますラン()メソッドを実装することです。

これは、Webサービスごとに1つのMETHODに制限する必要があることを意味します。これを行う必要があります:

public class GetCustomersService : ServiceBase<GetCustomers> {...} 
public class PostCustomersService : ServiceBase<PostCustomers> {...} 
public class DeleteCustomersService : ServiceBase<DeleteCustomers> {...} 
public class PutCustomersService : ServiceBase<PutCustomers> {...} 
関連する問題