0

以前に一部作業していた現在のシステムを書き直す予定です。私はこれを学習演習として行っています。以下は、古いシステム、新しいシステムの基本的なアーキテクチャ、従うべきいくつかのベストプラクティス、達成したい目標、および私の質問の説明です。

古いシステムについて説明し
ます。1。SQLServerデータベース(正規化されていません)
2。Palmアプリケーション(データベースにデータを入力するため)
3。Webサービス1(Palmアプリケーションはデータベースに入力するためにデータを送信します)
4。Webアプリケーション(データベースにデータを入力してください)-私はこれを作成しました
5. Webサービス2(Webアプリケーション1はデータベースに入力するためにデータを送信します)-私はこれを作成しました
6. Webサイト(データを直接CRUDしてレポートを印刷するため)

新しいシステムのアーキテクチャの概念について説明し
ます。1。UIWebアプリケーションソリューション-古いWebサイトを置き換えます。
2.UIWebアプリケーションソリューション-古いWebアプリケーションとPalmアプリケーションを置き換えます。
3. Webサービスソリューション(WCFを使用)-古いWebサービス1とWebサービス2を置き換えます
。4。ビジネスオブジェクトソリューション-ビジネスオブジェクト、データアクセスソリューションへのコード呼び出し、およびビジネスロジックソリューションへのコード呼び出しがここに配置されます。
5.ビジネスロジックソリューション-ビジネスルールはここに配置されます。
6.データアクセスソリューション-データベースとの間でデータを取得するためのコードがここに配置されます。
7.データ転送オブジェクトソリューション-次のように情報を転送するために使用されます。 7.1。 Webサービスソリューションとの間のUIソリューション。
7.2。 ビジネスオブジェクトソリューションとの間のWebサービスソリューション。
7.3。 データアクセスソリューションとの間のビジネスオブジェクトソリューション。

新しいシステムのベストプラクティスの概念を説明しましょう。1。Web
サービスソリューションの単体テスト。
2.ビジネスオブジェクトソリューションの単体テスト。
3.ビジネスロジックの単体テスト。
4.データアクセスソリューションの単体テスト。
5.単一責任の原則
6.オープン/クローズの原則
7.リスコフの置換の原則
8.インターフェースの分離の原則
9.依存性逆転の原則

新しいシステムの目標
デザインパターン、WCF、TDD、Rhino Mocks、Expression Blend 3、Visual Studio 2010、TFSを学びながら、システム全体に統合テストをラップした単体テストをラップしたクリーンなコードを生成できることを願っています。 2010.また、このシステムを、Railsなどの将来の新しい言語を学習するためのリファレンスとして使用したいと思います。

質問
1.私がレイアウトしたものに基づいて、誰かが私のアーキテクチャに問題を抱えていますか?より良いアイデアはありますか?
2.記載されていない、従うべき特定のベストプラクティスはありますか?
3.従うべきではない、私がリストした特定のベストプラクティスはありますか?

お時間をいただきありがとうございます!

4

4 に答える 4

4

さて、私はあなたのシステムのサイズについて何も知りませんが、まず第一に、あなたが2番目のシステム効果に遭遇しないことを確認してください。

于 2010-01-06T22:02:57.820 に答える
1

さらに優れた「学習」(そしてより現実的な)プロジェクトを見つけるでしょう。システムを使用してリファクタリングし、品質を向上させます。常にゼロから始めるので、多くの場合、より良い学習体験です。

システムを改善/リファクタリングできることは、グリーンフィールドプロジェクトとしてのはるかに一般的な日常のソフトウェア開発者の要件だと思います。

于 2010-01-09T00:53:57.620 に答える
0

まず第一に、あなたのアプローチはクールだと思います。時間と予算はありますか?ビジネスの人々の仕事はおそらくあなたに言うことです:あなたはそうではありません。今ではもう少し深刻になります。あなたがする必要があるのは、アーキテクチャの観点から、システムを段階的にクリーンにすることです。チームメンバーに、これらのことが彼らの生活を楽にすることを納得させてください(あなたが一人ではないことを願っています)。変更前に作成された単体テストは、ビジネス要件を破ることなく維持するのに役立ちます。あなたの計画は素晴らしいですが、ビッグバンでそれを達成することはできないのではないかと心配しています。これは私が10^100年しか知らない限り起こります。良い仕事をしてください!

于 2010-01-06T22:44:32.783 に答える
0

アーキテクチャの主な目的は要件をサポートすることであるため、この特定のインスタンスの要件/ユースケースを知らなければ、アーキテクチャが優れているかどうかはわかりません。

そうは言っても、基本的には3層の階層化アプリケーションについて説明しましたが、これは通常、賢明なアプローチです。ただし、これほど多くのソリューションに分割することはありませんでした(UI、ビジネス、およびデータレイヤーソリューションに個別のプロジェクトが含まれていました)。

「データ転送ソリューション」が必要な理由がわかりません。レイヤー間でデータを渡すために別のライブラリが必要なのはなぜですか。彼らは自分たちでスタックを下って、ある人から別の人に電話をかけることができるはずです。

于 2010-01-06T22:32:52.160 に答える