2010-12-11 32 views
3

新しい開発者として、ベストプラクティスを使用してC#コードを開発するための命名規則と構造規則によって完全に混乱しています。.net開発コードの構造 - 制御器、サービス、リポジトリおよびコンテキスト

私が開発している各ドメインにはおそらく適用可能ですが、多くの異なるオープンソースプロジェクトのコードを見てきましたが、共通のテーマがあるようです。成功したプロジェクトは、メンテナンスと拡張性のための構造を十分に考えています。

コンテキスト、サービス、リポジトリおよびコントローラという用語は頻繁に使用されており、これらは解釈が可能かどうか、また何が、どこで、どのように使用されるかについてのコンセンサスやコンベンションがあるのだろうかと思いました。

eコマースプラットフォームでは、注文サービス、注文コンテキスト、顧客リポジトリ、製品コントローラなどがあります。これらの名前に基づいて何をすべきですか?コントローラはサービスとは異なる何かをしますか?あなたはいつ文脈を使うべきですか?名前空間の規則はありますか?あなたが初心者の開発者を養子にしたスプーンを試してみようとすると、頭がおかしい。

品質の高いコードを開発するには、実際にどのようなソフトウェア/ツールを検討する必要がありますか?ユニットテスト、継続的統合、Resharper、Mockingツール、DOIコンテナ、nHibernate

私は熟練したWeb開発者から拡張性のある、品質の高い、テスト可能なコードを開発することができるようになるブログ/書籍を知っていません。著者の前提に大きな違いがあります。あなたは初心者またはソフトウェアアーキテクトのいずれかです。

私はソフトウェアアーキテクトであることを長期的に目指すジュニア開発者からの挑戦を望んでいます。私はそれがパターンとプラクティスに関するものだと認識していますが、トレーニング資料はどこにありますか?私は自分で働くので、他人から学ぶ機会はありません。

ありがとう

答えて

0

ユニットのテストにはNUnitがあります。 継続的インテグレーションのためにはCruiseControl.net Moock、またはRhinoMockがありますので個人的に私はMoqをより簡単で簡単に学ぶことができます。 DIについては、NinjectとStructure Mapがあり、他のいくつかは、私はStructureMapを好む。これらは私が使用したもので、通常は複数のオプションがあります。

あなたはASP.NET MVCにあなたを取得します良い本にしたい場合は、リポジトリのパターンのような、およびテスト可能なコードの開発に共通のデザインパターンは、私がPro ASP.NET MVC 2あなたが話している命名規則については

、これをお勧めします多くの人々が.NETでDDDを使用しているか部分的に使用しています。詳細はhereです。

1

回答には完璧な解決策はないと思います。私は自分自身も混乱させた。しかし、仕事と学校での私の経験で、私は自分のルールを作った。たぶん、あなたが聞いたことについての手がかりを与えるでしょう。

MVCデザインパターンについて既に知っているとします。 Modelはビジネスのロジックとデータベースのことを処理しようとしています。ビューは画面に表示したいものです。そしてコントローラは、ユーザの要求に応答し、どのビューとモデルをロードすべきかを決定することである。

私は通常、それを達成するためにいくつかのフォルダ(名前空間)を作成して自分のモデルを編成しました。ここに私のモデルです:

  • リポジトリ:クエリのみ、 挿入、更新を行うと、単一 テーブル(インタフェースとを実装)を削除します。
  • サービス: リポジトリに基づくテーブル、 ログインとログアウト、およびデータベースアクセスに関係しない の組み合わせ。
  • クラス:宣言されたオブジェクトです。
  • Utils:スタティック関数はリポジトリからリダイレクトされ、Viewによって呼び出すことができます。

多分あなたを共有することができます!

+0

+1私は共有します! 'Model'フォルダに' Partials'、 'Providers'、' Repositories'、 'Views'があります。 'Partials'は部分ビューに渡す基本モデルと拡張モデルを含んでいます。 'Providers'はあなたの' Services'と同じです。私はその名前が好きです。 'リポジトリ'はあなたの 'リポジトリ'と同じです。 'Views'には、ビューに渡す基本モデルと拡張モデルが含まれています。スタンドアロンクラスとデータコンテナ(EF、L2S、nHibernateなど)は、「モデル」のルートオブジェクトです。 – Gup3rSuR4c

関連する問題