アプリケーションを壊す前は、現在の名前空間は次のようになっています。
CompanyAbc.Core
CompanyAbc.AppXyz.Web
CompanyAbc.AppXyz.Business
CompanyAbc.Core名前空間には、当社のすべてのアプリケーションで使用される共通のコードが含まれています。例としては、「ClientMessage」と呼ばれるクラスがあります。これは、ある層から別の層にメッセージを運ぶためのコンテナとして使用します(たとえば、データ層でデータを保存するときに成功メッセージまたはエラーメッセージを抽象化して表示することをサポートします。 UI層)
現在、CompanyAbc.AppXyz.BusinessをWCFサービスにしています。私の質問はこれです:これらのベース/共通エンティティを「共有する」(または共有しない)ためのベストプラクティスは何ですか?
たとえば、次のようにしますか。
a)WCFとは関係ありませんが、CompanyAbc.Core名前空間のクラスに[DataContract]属性を直接追加します。
CompanyAbc.Core.Entities
ClientMessage.cs
また
b)CompanyAbc.Core名前空間からの正確なコピーであるデータ転送オブジェクトを作成しますか?
CompanyAbc.Core.Entities
ClientMessage.cs
CompanyAbc.AppXyz.Business.DataContracts
ClientMessageDto.cs
また
c)その他のオプション?
もう1つの複雑さは、これらのアセンブリを共有することを意図していることです。しかし、デカップリングを強制し、アセンブリ/ビジネスエンティティを共有しないために、あなたはすべてを狂わせて、このようなことをしますか?
CompanyAbc.Core
CompanyAbc.Core.Shared.Entities
ClientMessage.cs
CompanyAbc.AppXyz.Web
CompanyAbc.AppXyz.Web.Entities
ClientMessage.cs --> derives from the Core.Shared, or just duplicate code?
CompanyAbc.AppXyz.Business.Entities
ClientMessage.cs --> derives from the Core.Shared, or just duplicate code?
CompanyAbc.AppXyz.Business.DataContracts
ClientMessageDto.cs