質問

VBScript と ASP Classic に関していくつか質問があります。

  1. VBScript/ASP で MS SQL Server データベースにアクセスするための推奨される方法は何ですか?

  2. モデルをビューからコントローラーから分離することに関するベスト プラクティスは何ですか?

  3. VBScript または ASP について他に知っておくべきことはありますか?

お気づきでないかもしれませんが、私は VBScript コーディングの初心者です。番号 2 と 3 は、あまりにも一般的すぎる巨大な「ブラックホール」の質問のようなものであると認識しています。そのため、これら 2 つの質問について知っておくべきことすべてをここから学べるとは思わないでください。

役に立ちましたか?

解決

ADO は、VBScript/Classic ASP でデータベースにアクセスするための優れた方法です。

Dim db: Set db = Server.CreateObject("ADODB.Connection")
db.Open "yourconnectionstring -> see connectionstrings.com"
Dim rs: Set rs = db.Execute("SELECT firstName from Employees")
While Not rs.EOF
    Response.Write rs("firstName")
    rs.MoveNext
Wend
rs.Close

詳細はこちら: http://www.technowledgebase.com/2007/06/12/vbscript-how-to-create-an-ado-connection-and-run-a-query/

1 つの注意点は、レコードセット内の MEMO フィールドを返す場合は、一度に 1 つの MEMO フィールドのみを選択し、それがクエリの最後の列であることを確認してください。そうしないと問題が発生します。(参照: http://lists.evolt.org/archive/Week-of-Mon-20040329/157305.html )

他のヒント

最初の回答を見たとき、私は PC から離れざるを得ませんでしたが、それが非常に多くの人に承認されたことに今でも心を痛めています。これは、最悪の種類の ASP コードの恐ろしい例であり、サイトに SQL インジェクション可能であり、サイト全体でこのコードを使用し続けると、寿命のうちにハッキングされてしまう種類のものです。

これは、ASP コーディングの初心者にこの言語でのコーディングのプロフェッショナルな方法だと思われる可能性があるため、このような種類のコードではありません。

  1. コードにはデータベースへのユーザー名とパスワードが含まれているため、接続文字列を決して公開しないでください。代わりに UDL ファイルを使用するか、少なくとも他の場所で宣言してサイト全体で使用できる定数を使用してください。

  2. Web 環境でのあらゆる操作にインライン SQL を使用する正当な言い訳はもはやありません。ストアド プロシージャを使用します。セキュリティ上の利点はどれだけ強調してもしすぎることはありません。それが本当にできない場合は、次善のオプションとしてインラインパラメータを検討してください...インライン SQL を使用すると、サイトは SQL インジェクション、マルウェア インジェクションなどに対して無防備な状態になります。

  3. 変数の宣言が遅れると、コーディングがずさんになる可能性があります。「明示的なオプション」を使用して、関数の先頭で変数を宣言します。これは本当の意味というよりはベストプラクティスですが、続けるつもりで始めるのが最善です。

  4. これがどのようなタイプの接続であるかについてデータベースへのヒントはありません。読み取り専用ですか、それともユーザーがレコードを更新するのでしょうか?接続は最適化され、期待される内容が効果的に通知されれば、データベースは非常に効率的にロックを処理できます。

  5. データベース接続は使用後に閉じられず、レコードセット オブジェクトは完全には破棄されません。

多くの人が .NET への移行を勧めているにもかかわらず、ASP は依然として強力な言語です。適切なコーディング方法を実践すれば、維持しやすく、拡張性があり、高速な ASP サイトを作成できますが、利用可能なすべての方法を必ず使用する必要があります。コードを効率的にするには、適切なコーディング慣行と少しの事前の考慮を維持する必要があります。優れたエディターも役に立ちます。私の好みは、.NET 中心であると思われる最新の MS 製品よりも、ASP プログラマーにとって役立つと思う PrimalScript です。

また、「MEMO」フィールドはどこから来たのでしょうか?これは Access の命名法ですか、それとも MySQL ですか?MS-SQL では、このようなフィールドは 10 年間 TEXT フィールドまたは NTEXT フィールドと呼ばれてきたので質問します。

忘れずに にプログラムする プログラムではなく言語です。限られたツールセットを使用しているからといって、1999 年のようなプログラミングをする必要があるというわけではありません。

授業については JasonS の意見に同意します。確かに継承などはできませんが、簡単に偽造できます

Class Dog
    Private Parent

    Private Sub Class_Initialize()
        Set Parent = New Animal
    End Sub

    Public Function Walk()
        Walk = Parent.Walk
    End Function

    Public Function Bark()
        Response.Write("Woof! Woof!")
    End Function
End Class

私のプロジェクトでは、ASP ページには次のものが含まれます。INC-APP-Commonincludes.asp - これには、一般的なライブラリ (データベース アクセス、ファイル関数など) のようなものが含まれており、セキュリティを設定し、構成ファイル (接続文字列、ディレクトリの場所など) と共通クラス (ユーザー、アクセス許可など) が含まれています。 、など)すべてのページに含まれています。

Modules/ModuleName/page.vb.asp - ページの背後にあるコードのようなもの。ページ固有の BO、BLL、および DAL クラスが含まれ、ページに必要なデータの設定 / 送信されたフォーム データの受信など

Modules/ModuleName/Display/INC-DIS-Page.asp - page.vb.asp で設定されたデータを表示します。

いくつかのアイデアを反映し、私自身のアイデアをいくつか追加します。

1) データベースにアクセスする最良の方法は、データベースを VBScript からアクセスする何らかの種類の COM コンポーネントに抽象化することです。

2) 本当に必要な場合は、VBScript でコントローラーを作成し、ページ内でそれにアクセスすることもできます。これは、ASP.NET MVC や MonoRail で見られるフロント コントローラーではなく、ページ コントローラー パターンに似ています。

3) なぜ自分にこんなことをするのですか?この種の作業を行うために必要なツールのほとんどは、もう入手できません。

AX - Asp Xtreme Evolution は、ASP クラシック用の MVC フレームワークです

ASP 用のテスト フレームワークを作成する試みがいくつかあります。aspUnit は優れていますが、メンテナンスされなくなりました。

数か月前に自分で作る方法のサンプルを見ました。この例では、nUnit を使用して、自動テストのために Web サイトに対して関数を呼び出しました。外れたと思う ここ (回線が止まっていて確認できません)

2番目については、いくつかの選択肢があると思います...

1) VB6 などで開発された COM コンポーネントを使用して、ビジネス ロジックの一部を UI から分離できます。

2) VBScript でクラスを作成できます。継承の概念はなく、その他のより高度な機能が実装には含まれていませんが、ロジックをクラスにカプセル化することで、アプリの複雑さを軽減できます。これをチェックしてください: http://www.4guysfromrolla.com/webtech/092399-1.shtml

私は @Cirieno に同意します。彼が言及したすべての理由により、選択された回答を製品コードで使用するのは賢明ではありません。そうは言っても、ほんの少しの経験がある場合は、この回答が基本に関する良い出発点になります。

私の ASP の経験では、VB を使用してデータベース アクセス層を作成し、DLL にコンパイルし、VBScript 経由で DLL を参照することを好みました。ASP を介して直接デバッグするのは困難ですが、ASP コードからすべてのデータ アクセス コードをカプセル化するには良い方法でした。

vbscript/aspがまだ大丈夫だった日にさかのぼります。私は非常に複雑なdb envrionmentを備えたユーティリティ会社で働いていましたが、私はこのウェブサイトで誓いました。 http://www.connectionstrings.com/

@michealpryor 正しく理解しました

私は ASP の構築に行き詰まっており、あなたの痛みを感じています。

1) SQL Server に対してクエリを実行する最良の方法は、パラメータ化されたクエリを使用することです。これは、SQL インジェクション攻撃を防ぐのに役立ちます。

チュートリアル (私のブログではありません):
http://www.nomadpete.com/2007/03/23/classic-asp-what-is-still-alive-and-parametized-queries/

2) 特に ASP 向けの MVC については何も見たことがありませんが、よく理解するのに苦労しているものなので、間違いなく興味があります。私は通常、少なくともビューに似たものとコントローラーに似たものを別の関数に含めるように努めます。おそらく、別々のファイルにコードを記述し、サーバー側のインクルードを使用してそれらをすべて結合することができると思います。

3) おそらく、より多くの機能が組み込まれた言語を使用していると思われます。最初は、いくつかのものが欠けているように見えるかもしれませんが、多くの場合、慣れているよりもはるかに多くのコード行を記述するだけの問題です。

また、データベースアクセスのために、Michaelが上記で述べたことと同様の機能を持つGetSingleRecord、GetRecordset、UpdateDatabaseという一連の関数があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top