当社の製品の1つには、複数のWCFサービスが含まれており、そのビジネスレイヤーはすべて、NoSqlデータベース(mongodb)へのアクセスを提供する同じデータアクセスレイヤーの上にあります。
WCF WCF WCF
| | |
BL BL BL
| | |
Data Access Layer <-- PageInfoResult currently defined here
|
mongodb
PageInfoResult
各サービスには、データベースに直接格納されている特定のタイプ()を受け入れるか返す1つ以上のメソッドが含まれているため、クラスPageInfoResult
はDALでBsonシリアル化属性(mongodbの場合)とデータコントラクトシリアル化属性の両方で定義されます。 (WCFの場合)。
例:
[DataContract]
public class PageInfoResult
{
[BsonId]
[DataMember]
public string PageUrl { get; set; }
[BsonElement("status")]
[DataMember]
public int HttpStatusCode { get; set; }
[BsonElement("score")]
[DataMember]
public int OurProprietaryPageScore { get; set; }
[BsonElement("data")]
[DataMember]
public SomeOtherClass OtherData { get; set; }
// ... other properties ...
}
したがって、具体的な質問は次のとおりです。
- 各WCFサービスを再定義してから、DALのデータモデルにグラフ化する必要がありますか、それともDALをモデルが定義される唯一の場所にすることができますか?
- 各サービスがDAL内の各モデルを再定義する必要がある場合、サービスモデルはデータモデルから継承する必要がありますか(またはその逆)?
より一般的な意味で:
- 非常に類似した(または同一の)サービスおよびデータモデルを定義するための適切なオブジェクト指向アプローチは何ですか?
- スキーマとスキーマレスデータベース(MsSqlとMongoDB)を扱う場合のアプローチに違いはありますか?