アプリケーションには 2 つのプロジェクトがあります。
- Web UI プロジェクト (aspx ページ)。
- WCF プロジェクト。
これらのセクションは両方とも、同じ BL および DAL レイヤーをさらに呼び出します。アーキテクチャは次のとおりです。
ウェブ プロジェクト:
WCF プロジェクト (REST を使用します):
上記のビジネス オブジェクトと DTO の例:
public class User
{
public int UserID { get; set; }
public string UserName { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class UserDTO
{
public int UserID { get; set; }
public string UserName { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
WCF REST レイヤー用に別のデータ転送オブジェクト UserDTO.cs を用意する価値はありますか? Web プロジェクト、BL、DAL で使用されているビジネス オブジェクトとして User.cs が既にあります。さらに、WCF REST レイヤーでは、入力 prams だけに DTO を使用しています。
public MyResponse CreateUser(User user)
{
このメソッドから、マッパーを介して DTO をビジネス オブジェクト (つまり、UserDTO から User.cs オブジェクト) に変換し、DTO ではなくビジネス オブジェクトのみを受け入れる BL レイヤーに渡します。つまり、WCF がビジネス オブジェクトを BL および DAL に渡す時点から、UI がビジネス オブジェクトを BL および DAL 層に渡すのとまったく同じように動作します。
2 つの個別のデータ転送オブジェクトを使用すると、実質的に利点がありますか? この質問をしたのは、IMO は冗長であり、Web プロジェクトと WCF プロジェクトの両方に 1 つのデータ転送オブジェクト、つまりビジネス オブジェクトを使用する必要があるためです。