3

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; }
        // ...
    }
}

質問:

  • リクエスト タイプに名前を付けるさまざまな方法を見てきました (例: GetProductProductRequestまたは単にProduct)。推奨されるアプローチは何ですか?
  • 命名は、サービスが REST サービスであるかどうかによって何らかの形で異なりますか?
  • MyApp.ServiceModel.Requestsリクエストとレスポンスのタイプを別々の (サブ) 名前空間 (例えばと)に入れるのは良い考えでしょMyApp.ServiceModel.Responsesうか?
  • 実装を含むアセンブリに名前が付けられているのはなぜですか(より適切ServiceInterfaceではありません)。ServiceImplementation
4

1 に答える 1