ServiceStack を使用して Web サービス API を実装し始めています。可能な限り例とベスト プラクティスに従うようにしていますが、そう簡単ではない場合もあります (多くのサンプルは、新しい API 設計に従うようにまだ更新されていないようです)。
私が現在持っているものは次のようなものです:
MyApp.ServiceInterface
サービス/メソッドの実装を含むという名前のアセンブリMyApp.ServiceModel
要求と応答の型、および DTO を含むという名前のアセンブリ
アセンブリには、MyApp.ServiceModel
たとえば次のものがあります。
namespace MyApp.ServiceModel
{
public abstract class ResponseBase
{
public ResponseStatus ResponseStatus { get; set; } // for error handling
}
[Route("/products/{Id}")] // GET: products/123
[Route("/products")] // GET: products?Name=...
public class ProductRequest : IReturn<ProductResponse>
{
public int Id { get; set; }
public string Name { get; set; }
}
public class ProductResponse : ResponseBase
{
public Types.Product Product { get; set; }
}
}
namespace MyApp.ServiceModel.Types
{
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
// ...
}
}
質問:
- リクエスト タイプに名前を付けるさまざまな方法を見てきました (例:
GetProduct
、ProductRequest
または単にProduct
)。推奨されるアプローチは何ですか? - 命名は、サービスが REST サービスであるかどうかによって何らかの形で異なりますか?
MyApp.ServiceModel.Requests
リクエストとレスポンスのタイプを別々の (サブ) 名前空間 (例えばと)に入れるのは良い考えでしょMyApp.ServiceModel.Responses
うか?- 実装を含むアセンブリに名前が付けられているのはなぜですか(より適切
ServiceInterface
ではありません)。ServiceImplementation