2

私は.net 3.5の新しいプロジェクトに取り組んでいます。

現在、クライアントはストアド プロシージャを使用しており、代わりに LINQ to SQL を使用したいと考えています。彼らがストアド プロシージャを使用する主な理由は、更新が簡単であると信じているためです。特別なアクセス許可を使用していないなど、変更したくないだけで LINQ to SQL 経由でストアド プロシージャを使用することを正当化できます。

LINQ to SQL への変更を簡単に展開できるソリューションを彼らに提示できれば、彼らは考えを変えることにもっとオープンになるかもしれません。

そのため、ビルドプロセス中に作成されるさまざまなアセンブリを更新する方法について、asp.net プロジェクト (mvc ではない) に興味があります。

たとえば、すべての LINQ コードが System.DataAccess プロジェクトにあり、それが運用環境にデプロイされると、製品のバグが LINQ で識別されます。変更された DataAccess プロジェクト (または、prod のデプロイ以降に大幅な変更が加えられたプロジェクト) をデプロイするだけでどれだけ難しいか。

状況に役立つかどうかわからないことの1つは、実際に変更があったかどうかに関係なく、ビルドがあるたびにすべてのプロジェクトでビルド番号が更新されるため、プロジェクトのバージョン番号を見るだけで再デプロイが必要なプロジェクトを決定するのに十分ではありません。

ビルドを変更できるかどうかさえわからないので、変更されたプロジェクトのバージョンだけが更新されますか?

したがって、基本的には、そこにあるさまざまなパッチ適用プロセスと、長所と短所 (つまり、iis のリセットが必要など) に興味があります。

乾杯

4

2 に答える 2

0

SQL ストアド プロシージャと LINQ-SQL は相互に排他的ではありません。

一般に、複雑で貪欲でリソースを大量に消費する操作では、依然として SQL ストアド プロシージャ (複雑なサブクエリ/データベース ロジックに依存する INSERT 操作など) を使用し、それらを LINQ-SQL キャンバスにドラッグします。

パッチ適用に関しては、これらのストアド プロシージャに SQL Server で直接パッチを適用できます。また、署名が変更されない限り (params/return 型)、LINQ-SQL クラスを再コンパイルする必要はありません。

特定のアセンブリからバージョン番号を更新するという点では、理想的ではありません。非常に乱雑になり、問題を引き起こす可能性さえあります (厳密な命名)。

すべての DB ロジック/LINQ/CRUD 操作を 1 つのアセンブリ (DAL) に配置する必要があります。

本当に LINQ ロジックを分離し、これらのアセンブリの独立した展開を有効にしたい場合は、ソリューションを Web/アプリ サーバーに分割することを検討する必要がありますか? つまり、アプリケーション サーバーでこれらの操作を公開する LINQ DAL アセンブリとファサードのようなアセンブリを用意し、別の Web サーバーで Web サイトを公開します。

アーキテクチャに応じて、ASMX/WCF/.NET Remoting のいずれかを使用して、Web/アプリ サーバー間の呼び出しを容易にすることができます。(WCF はクロスドメインでは機能しません)。

そうは言っても、LINQ-SQL クラスが適切に処理されていれば (単純な LINQ CRUD 操作、ビュー、ストアド プロシージャが適切に組み合わされている)、前述のように、アプリケーションに影響を与えることなくストアド プロシージャに簡単にパッチを適用することができます。

于 2010-06-25T01:13:44.783 に答える
0

どちらにも長所と短所があります。

SQL Stored Proc は高速で効率的です。コードで実行できるものよりもはるかに高速に実行されるストアド プロシージャを使用して重い SQL 操作を実行できますが、それは別のレイヤーです。

LINQ は、変更が発生したときにそれほど多くのメンテナンス作業を必要としません。コーディングするのは簡単です。

どの方法でも、IIS をリセットする必要はまったくありません。リリースごとにアセンブリ ファイルのバージョンを更新することをお勧めします (そのアセンブリのコードを変更する場合のみ)。バージョンをアップグレードするのは面倒で不要です。

どちらもパッチ適用は簡単です。LINQの方が簡単だと思います。テーブル構造が変更された場合、ストアド プロシージャとそれらのストアド プロシージャを使用する関数を変更する必要はありません。これは簡単な変更スクリプトです。新しいバージョンでテストしているため、DBML は既に更新されているはずです。それからデプロイです。

LINQ と部分データ クラスは常に同じアセンブリにあるので、簡単に DDL をリリースできます。

于 2010-06-24T15:30:01.657 に答える