0

ASP.NETMVC4とSQLServerを使用するSaasアプリケーションに取り組んでいます。データレイヤー(EF5を使用)、サービスレイヤー(RESTfulサービスのみが可能)、DTOレイヤー、およびWebUIレイヤーを計画しています。後で、私はこのアプリケーションをAndroidとiPhoneの両方のモバイルプラットフォームに拡張することを計画しています...多分Windowsタブレット。

通常、ビジネスルールが含まれているドメインオブジェクト用に別のレイヤーを作成します。しかし、私の場合、それを行った場合、Androidの場合はルールを再度複製する必要があります...そしてiphoneの場合も同様です。そのため、サービスレイヤー自体にビジネスルールを含めることを考えていました。しかし、何らかの理由でそれが正しくないと感じています。

これに関する提案はありますか?

4

3 に答える 3

2

プレゼンテーション層はそれが何であるかでなければなりません..単なるプレゼンテーション層。あなたのビジネスルールはそこにあるべきではありません。DTOがクライアント(Android、iPhone、Webなど)にフィードするオブジェクトになることを理解しているため、ビジネスオブジェクトをUIに転送する必要はありません。ビジネスレイヤーをサーバー側で分離し、クライアントが表示する必要のあるデータを取得するためだけにそれを使用できるようにします。

私の提案は、プレゼンテーション層をビジネスルールにとらわれないようにすることです。このアプローチを使用すると、ソリューションがスケーラブルになり、拡張が容易になります。関心の分離を適用する良い方法です。

それを言うと..異なるプラットフォーム間でDTOを共有する方法について心配するかもしれません。プレゼンテーション層でさまざまなプログラミング言語とテクノロジを使用することを計画しているため、プレゼンテーション層に.NETオブジェクトをフィードしないことが最善のアプローチだと思います。JSONとRESTは、問題に対して非常にうまく機能する可能性があります。Asp.netWebApiを使用してjsonオブジェクトを操作することをお勧めします。Objective-c、Java、およびJavascript(Web UI用)は、この種のオブジェクトで機能します。

于 2012-09-21T07:19:58.807 に答える
1

あなたはサービスレイヤーを持っていると言いました。ビジネスロジックはその背後にある必要があります。

Business layer -> (shared business objects) -> service layer -> (shared DTOs) -> presentation layers

プレゼンテーションレイヤーがMVC4、Android、iPhoneなどの場合。これらはすべて同じDTOを共有できますが、シリアル化は異なります。

于 2012-09-21T10:11:33.370 に答える
0

パフォーマンスの観点からは、各プラットフォームのルールを複製することが(異なるデバイス間の処理を分離するため)進むべき道ですが、メンテナンス、一貫性などの観点からは、ビジネスルールをワークフロー内/並列に配置する必要がありますサービス層に。

http://msdn.microsoft.com/en-us/library/ee658103.aspx

于 2013-11-22T18:25:37.230 に答える