メッセージベースのデザインにビジネスロジックを配置するためのベストプラクティスは何ですか?(ServiceStack)メッセージベースのアーキテクチャにおけるビジネスロジックの場所
私のapiを構築するためにservicestackを使用しています。
The wikiは、サービスを処理するサービスの代わりにRequiredRole
属性をメッセージに配置する例を示しています。
ある意味、この[RequiredRole]
/[Authenticate]
はメッセージに添付されているビジネスロジック/セキュリティです。
具体例
私はDeleteAddress
メッセージ追加することになり、たとえば
言った:
public class DeleteAddress : IReturn<bool>
{
public int AddressId { get; set; }
}
をしかし、これはするために適切に私がリンクされているのAddressId ManageAllAddressesまたはその管理者の役割、権限のいずれかを確認したい確保このユーザーに(おそらく、セッション中、多分dbコールを通して)。
どうすればこのようなことになるのですか?
命題
次のコードは、良い習慣ですし、もしそうならどのように私はそれを実装するのでしょうか?私たちはあなたが適用するすべての操作にまたは個々のメソッドに適用するためにどちらかのサービスクラスに注釈を付けることができた代わりに、あなたのサービスの実装クラスに注釈を付けることをお勧めしたいので
[RequiredRole("Admin")]
[RequiredPermission("ManageAllAddresses ")]
[RequiredAddressLinkedToAccount]
public class DeleteAddress : IReturn<bool>
{
public int AddressId { get; set; }
}
wx上の古いドキュメントのポインタの場合は、一致するように更新します – mythz