3

これは、実装の問題ではなく設計の問題です。データベースへの VB.NET フロント エンドがあります。現在の設計では、メタ データのテーブルごとにテーブルを使用して、「フロント エンドで SQL を使用しない」ポリシーを適用しています。STORED PROC スパゲッティ コードがわずかに散らばっているため、私たちが行っていることはハード コーディングよりも悪いと考えています。テーブルの完全修飾名を作成するために使用される動的 SQL が多数あります。これらは、たとえばフラット テキスト ファイルの実際のロードを処理する別の STORED PROC に送り返されます。

    ID DATA_TABLE_NAME DATA_TABLE_SCHEMA PTR_TABLE_NAME PTR_TABLE_SCHEMA
    1  datatable            DBO            datatable_ptr       DBO

したがって、データ テーブル名とテーブル ポインターを取得し、データベース .dbo.datatable のような完全な名前を送信する VB.NET フロント エンドのクラスにマッシュアップするクラスがあります。これは、database.dbo.datable_ptr にマップされ、フラット テキスト ファイルをロードするためのグローバル一時テーブル。さて、誰かがこの厄介なメタデータの小さなテーブルに行を追加し、それが VB.NET フロントエンドを破壊しました! これを行うためのより良い方法が必要ですが、私はより良い一般的な解決策を考え出すのに十分な経験がありません.

プログラマーは、コードの読みやすさと保守性を維持しながら、T-SQL と VB.NET を使用したコードの再利用と汎用プログラミングをどのように強調するのでしょうか? より実行可能な解決策を教えてくれるデザイン パターンやクック ブックに関する推奨事項はありますか?

4

1 に答える 1

1

提案された解決策を開始する前に、まずいくつかのことを開示する必要があると思います。

1) 私はプロのプログラミング経験が 2 年強しかありません。
2) 私は、毎日使用するデータベースの経験しかないため、近視眼的です。
3) 私は 1 つの (そして現在の) vb.Net/TSQL 会社としか仕事をしたことがありません。

そうは言っても、次のことを考えると、これが私がすることです:

1) あなたのマネージャーは、何らかの定量化可能な進捗状況を見たいと思うでしょう。2)この問題にアプローチする方法 (この提案されたソリューションが提供するもの) について、定量化可能な進歩を容易にする実用的な方法
を探しています。 3) 「フロントエンドで SQL を使用しない」という哲学を維持する必要があります。 4) スケーラブルなものが必要なので、35 以上のアプリが 75 以上のアプリになっても問題ありません。


解決策:
1. SQL がフロント エンドで許可されているかのように新しいデータベースを作成します (つまり、「必要なもの」)。
2. フロントエンド (SQL を持つことはできません) とデータベースの間の仲介者として機能する Web サービスを作成します。これにより、問題が分離されます。データベース構造は、エンド ユーザーから 2 回削除されるため、難読化する必要はありません。

方法:
1) 最初に、動的 SQL を「そのまま」Web サービスに移動できます。スパゲッティの一部が翻訳される間、そこにとどまることができます。これを「マスター機能」または「古いやり方」と呼ぶことができます。
2) 申請ごとにチーム リーダーを任命します (または 5 件の申請ごとに 1 人のリーダーなど)。彼らの責任は、Web サービスの一部を作成する際の連絡係として行動することです。彼らが必要とするテーブルと、Web サービスを作成するときに必要な形式を知る必要があります。
3) アプリケーションを 1 つずつ処理します
   。A) 必要なデータベース テーブルをセットアップします
   。B) これらのテーブルとフロント エンドを接続する Web サービスを作成します。
   C) フロントエンドから Web サービスにアクセスするための関数呼び出しを作成します。最初に、新しいデータベース テーブルとやり取りする新しい関数を試してから、現在のようにデータベースとやり取りするマスター関数を試します。

アプリケーションが「パーソナライズされた」Web サービス機能を利用するように切り替えられると、マスター機能はますます少なくなるはずです (つまり、スパゲッティ ストアド プロシージャの使用を徐々に停止します)。また、Web サービスの作成 (最終的にはアプリケーションと同じくらい多くの貢献者が存在する可能性があります) が分散化されるため、作業は潜在的にかなり迅速に進む可能性があります。実行中であっても、全体としての操作は通常どおり行うことができるはずです。

于 2013-06-19T16:56:27.250 に答える