2011-07-18 5 views
1

静的メソッドから完全に構成されたデータアクセスレイヤークラスを見つけました。このクラスは、例えばC#でのクラス設計 - DAL

public class DataAccessLayer 
{ 
Public static PersonDetails GetDetails(int iPersonID); 
{ 
//implementation 
} 
Public static bool SaveDetails(PersonDetails objPerson); 
{ 
//implementation 
} 

} 

用のWebアプリケーション

によって消費されたことは、このようなコードを書くことをお勧めします。静的メソッドを使用すると、パフォーマンスが少し向上するということは理解できますが、複数のユーザーがページを呼び出すと同時実行エラーが発生しますか?

+1

これが良い方法であるかどうかは、コーディング基準によって異なります。 @Paddyが指摘したように、オブジェクト間で読み書きができない場合は、特にストアドプロシージャをラップする場合(これは静的アダプタと呼ばれます)、このコードは本質的に問題ありません。 –

答えて

2

このようなコードを書くことをお勧めしますか?

私のチームでは発作が激しく、非常に多くの良い練習を破ります。誰かが私の競技者に向かって何かを書くことをお勧めします。

静的メソッドを使用すると、パフォーマンスがわずかに向上することがわかります。

0.000000000000000000001%?

ただし、複数のユーザーがページを呼び出すと、これによって同時実行エラーが発生しますか?

方法の書き方によって異なります。しかし、オブジェクト指向に違反すると、依存関係の注入がより困難になり、トランザクションコーディネータの下で適切なトランザクション境界を使用することが難しくなり、単体テスト/モックを行うことが困難になります。

+0

私は画像を得る:) –

+0

受け入れられた編集 - 私のスペルはすみませます、ごめんなさい。 – TomTom

2

データアクセスメソッドの実際のコードがどのように書かれているかによって、並行性の問題が発生することがあります(トランザクションの使用、データソースの同時性チェックに使用されるフィールドなど) 。

+0

この場合のコードは比較的単純で、多くの同時ユーザーは見えません。しかし、静的メソッドを使用してこれらのようなケースを実装するのが良いオブジェクト指向の練習であるかどうか疑問に思っていましたか? –

0

アプリケーションで が終了したため、 ガベージコレクタがすべてのオブジェクトをクリーンアップするため、静的変数はスタンドアロンアプリケーションでは無効になります。

しかし、これをWebアプリケーションで使用している場合、Webサーバーが終了するまでアプリケーションは になりません。あなたがウェブブラウザを閉じても、 あなたのウェブサーバは近くにありません。サーバーをシャットダウンすると、 変数はもう消えません。

関連する問題