VisualBasic の将来
WebForms (Web フォーム)、Web サービス (Web サービス)、およびバージョンに含まれる言語の改善
この記事の読者は、Visual Basic にすでに精通しているユーザーです。
概要: Microsoft Visual Basic の次のバージョンには、Web フォーム、Web サービス、およびオブジェクト指向構文の改善という 3 つの主な改善点があります。 WebForm を使用すると、経験豊富な Visual Basic ユーザーは、現在スタンドアロン プログラムを作成するのと同じくらい簡単にネットワーク アプリケーションを開発できます。 Web サービスでは、SOAP インターフェイスを介して、インターネットにアクセスできる場所ならどこにでも、設計したコンポーネントを展開できます。さらに、オブジェクト指向言語のいくつかの重要な改善により、継承、ポリモーフィズム、オーバーロードなど、Visual Basic コードが C と同じくらい柔軟になりました。この点については、Steve Ballmer の「次世代 VisualBasic に関する VBITSkeynote」を参照してください。
isualBasic には多くの改良が加えられました。しかし、私がこのプログラムの当初から気に入っている点の 1 つは、基本的には 1991 年当時と同じ方法でプログラムを作成できることです。もちろん、そのソフトウェア パッケージは当時に比べて大幅に強化されていますが、これらの改良は一般に補足的なものであり、プログラミング ツール自体の目的を曖昧にするものではありません。この目的は、Visual Basic をより簡単かつ高速に設計、作成するために使用されます。優れたオブジェクト指向アプリケーションをデバッグします。
Visual Basic 6.0 の現在のバージョンでは、堅牢なネットワーク指向アプリケーションを構成するための簡素化された手段として WebClasses が導入されています。実際、WebClass は、一般的なツールを通じてプログラムをインターネットに移植するための多数の方法を提供します。 (ネットワーク下での Visual Basic 6.0 のスケーラビリティの詳細については、Ted Pattison の「Advanced Basics Column」(1999 年 10 月に Microsoft Internet Developer によって発行) を参照してください)
最近、Visual Basic の次のバージョンで計画されている新しい改善点について知る機会がありました。主な改善はストレージ容量で、開発者が利用できるストレージ容量が 3 倍になりました。 Visual Basic の次のバージョンでは、Visual Studio® 環境に WebForms と呼ばれる機能が搭載される予定です。 WebForms は、新しいコンポーネントベースのネットワーク ソリューションを表します。 Web サービスは、標準のネットワーク プロトコルを通じて中間層のイベント処理機能を公開する、新しい XML ベースのソリューションになります。同時に、Visual Basic 言語には開発者が長い間要求してきたいくつかの構造が含まれ、Visual Basic が C および Java ユーザーに馴染みのあるオブジェクト指向プログラミングの習慣と一致するようになります。
これらの改善点は、Visual Basic の次のベータ版で発表される予定です。ここではコードの一部を紹介しますが、完全な解決策ではありません。それで、今何を心配する必要がありますか?これらの新機能を活用することを決意していれば、簡単です。これらの具体的な方法でプログラムを設計し、Visual Basic の次のバージョンにスムーズに移行するための最良の実践的な演習を得ることができます。たとえそうでなかったとしても、この記事の最後に示した原則に従って将来のプログラムを編成する限り、失うものは何もありません。
VisualStudioWebフォーム
Visual Basic の次のバージョンは Visual Studio 開発環境の一部となり、Web 開発者に WebForm の新しい概念が導入される可能性があります。 WebForm の概念を導入する目的は、Visual Basic のランダム アクセス機能を拡張して、ますます広範囲に影響を与えるネットワーク プログラムの作成に Visual Basic を適用できるようにすることです。 Visual Studio で任意の言語を使用している開発者は、この Visual Studio WebForms を共有できます。
WebForms ページは、WebForms ページのビジュアル インターフェイスを実装する HTML ファイルと、WebForms ページ イベントを処理するソース ファイルの 2 つの部分で構成されます。 Visual Basic 環境に基づく現在の開発の 3 分の 1 はネットワーク指向であるため、Microsoft はこの分野の機能をさらに強化する予定です。 Visual Basic の次のバージョンでは、現在 Visual Basic を使用してフォームを生成しているのと同じ方法で Web フォームを設計できます。 Web コントロールのツールボックスが表示されます。コントロールを HTML エディターに直接ドラッグ アンド ドロップして使用できます。必要なのは、コントロールのプロパティを設定し、適切なコードを記述することだけです。 (図 1 を参照)。要約すると、これらのタスクは、Visual Basic を使用してフォームを生成するのと同じように実行できます。 IntelliSense®、WYSIWYG 形式に完全に準拠したフォーム デザインとコンパイルされたコードが得られます。したがって、Visual Basic を使用してアプリケーションを作成する方法を知っていれば、WebForms を使用すると、作業方法をまったく変えることなく Web 開発者になることができます。
図 1Web フォームの構築 4 つのステップ
WebForms はサーバー上で実行され、HTML 形式のフォームのみをユーザーに送信します。 ActiveServerPage(asp) と同様に、これは特定のブラウザーでも Web フォームベースのアプリケーションでもありませんが、プロセス全体もサーバー上で実行されます。実際、リモート ユーザー用に HTML 3.2 形式のインターフェイスを生成するプログラムを実行しています。 ASP Web ページとは異なり、これらのコードは解釈されるのではなくコンパイルされて実行されるため、実行速度が大幅に向上します。
Web フォームを設計する目的は、ASP と WebClass の両方の最高の機能を活用することです。 Visual Studio ファミリの任意の言語を使用して Web フォームを生成できます。したがって、知識を活用して効率的なサーバー指向の Web アプリケーションを作成できます。
ウェブサービス
Web サービスは、Visual Studio 開発ツール システムによって行われた 2 番目の大きな改善です。 Web サービスの核心は、標準ネットワーク プロトコルを通じて公開される中間層のイベント ハンドラーです。トランスポート メカニズムとして HTTP を使用するため (図 2 を参照)、ファイアウォールを介して通信できます。 URL が適切に割り当てられていれば、Web アプリケーション内に複数の Web サービスを簡単に構築できます。プログラムの実行中、これらすべての内部コンポーネント間の呼び出しは自動的にパッケージ化され、XML インターフェイスを通じて呼び出されます。開発者は、任意のプラットフォームおよび任意の言語で Web サービスを作成して使用できます。機密性が必要な場合は、SecureSocketLayer (SSL) または標準のチェック テクノロジを使用できます。
図 2Web サービスのアーキテクチャ
これらのいずれかに聞き覚えがある場合は、そこから始めるのが良いでしょう。コンポーネント間でデータを転送するために使用されるメカニズムは、SOAP (Simple Object License Protocol) です。 DonBox は、2000 年 3 月に発行された MSDN™ マガジンで SOAP を詳しく紹介しました。
これらの新機能はすべて、Web アプリケーション開発者が既存の再利用可能な Web サービスを作成できるように設計されており、アプリケーションを毎回最初から書き直す必要がなく、より迅速に作成できるようになります。これにより、プログラム コード プロバイダーとプログラム開発者にとって新たな時代が到来します。
Visual Basic の次のバージョンを使用すると、Web サービスの形式で特定のプロジェクトの関数を公開および実装できるようになります。 Visual Basic クラスをパブリックにするプロセスについてはよくご存じかもしれません。 Visual Basic の次のバージョンには、一時的に webpublic と呼ばれる新しいロゴが追加される予定です。これは、プログラムが Web サービスとして公開されることを意味します。これは、COM インターフェイスを介してそれを必要とするローカル プロジェクトで使用できるだけでなく、その URL アドレスを参照する任意のネットワーク プログラムにも使用できます。新しいプロジェクトでパブリック オブジェクトへの参照を追加できるのと同じように、ネットワーク プログラムへの参照を追加して、それをローカル プログラムであるかのように使用できます。
もちろん、動作メカニズムは多少異なります。 Visual Basic は、COM インターフェイスを通じてローカル オブジェクトへの参照を解決できます。ネットワーク サービスへの参照をアプリケーションに追加すると、リモート オブジェクトはインターフェイス定義を自動的に生成し、SOAP プロトコルを使用して Visual Studio 開発環境に送信します。これらは XML 形式で生成されますが、接続作業を自分で行う必要はありません。 VisualBasic が自動的に処理します。インターフェイス定義を受け取った後は、オブジェクトを参照するコードを作成したかのように IntelliSense を使用できます。
以下に簡単な例を示します。場合によっては、次のコードのような Seahawks という関数を作成することができます。
PublicFunctionSeahawks(ByValopponentAsString)AsString
シーホークス「負けた」
エンドファンクション
構築するプロジェクトにこの関数が含まれている場合、Visual Basic はこの関数の XML 形式の記述を自動的に生成し、インターネットに公開します。
<?xmlversion='1.0'?>
<methodshref='http://julian/Football/Teams'>
<methodname='シーホークス'href='シーホークス'>
<リクエスト>
<paramdt='string'>対戦相手</param>
</リクエスト>
<responsedt='string'/>
</メソッド>
</メソッド>
この XML ファイルは Seahawks の機能を記述するために使用されます。 Visual Studio 開発環境を使用している場合は、公開された Web サービスをアプリケーションに直接ドラッグ アンド ドロップして、新しいクラスを作成できます。インターネット上の任意の場所で Web サービスを呼び出したい場合は、その Web サービスを含むクラスのインスタンスを作成し、その公開メソッドを呼び出すだけです。
Seahawks 関数が呼び出されると、XML パケットを介して自動的に通信します。 Microsoft® Internet Explorer 5.0 (XML サポートを含む) を使用している場合は、ブラウザでこの機能を実行してみてください。次のように URL アドレスを使用してこの関数を呼び出すこともできます。
http://julian/webservice1/component1.methods/Seahawks?opponent=マイアミ
次のように XML 形式でデータが返されます。
<?xmlversion="1.0"?>
<応答>負け</応答>
Web サービスの開発を容易にするために、Visual Basic には新しいオブジェクト タイプである WebService が導入されます。ローカル DLL ファイルを作成するのと同じくらい簡単に、WebService を設計してリモート サービスにデプロイできます。
言語の改善
Visual Basic を好むプログラマーと、他のより「洗練された」言語を好むプログラマーの間には、長い間緊張した関係がありました。私は、お気に入りのプログラミング言語が「おもちゃの言語」であり、Visual Basic には OOP 機能が欠けているという非難に対して、何度も擁護してきました。
さて、それで何が起こったと思いますか? Visual Basic の次のバージョンでは、最終的に彼らの不満に終止符が打たれるでしょう。 Microsoft は、オブジェクト指向プログラミングの 3 つの主要な機能、継承、ポリモーフィズム、オーバーロードを追加する予定です。それだけではありません!構造化エラー処理や参照などの追加の構成要素も Visual Basic 言語に導入されます。
継承機能を使用すると、基本クラスを設計してから、基本クラスの機能を継承する派生クラスを作成できます。これにより、時間を節約し、プログラムの再利用性を向上させることができます。たとえば、次の関数を持つ BaseClass という基本クラスを作成します。
FunctionGet顧客名()
ドソムスタッフ
エンドファンクション
次に、独自の関数と同じように、基本クラスの GetCustomerName 関数を呼び出すことができる別のクラスを作成します。昔の方法は何だったのでしょうか?これは以前は不可能でした。ただし、新しいメソッドでは、新しいクラスの上に単純な行を挿入するだけで済みます。
InheritsBaseClass
FunctionGetCustomerID()
ドソムスタッフ
エンドファンクション
同じ名前で異なる識別子を持つ 2 つ以上の関数を記述することをオーバーロードと呼びます。 Visual Basic では、関数呼び出し時の内部型の変換とプロパティの設定において、ある程度のオーバーロードが実装されています。有効な Visual Basic コードの次の 2 行を比較してください。
Text1.Text="7"
テキスト1.テキスト=7
どちらの呼び出しでも、Text1 のテキストは文字列「7」に設定されます。 Visual Basic は入力のさまざまなデータ型を処理する方法を認識しているため、これはオーバーロードされた呼び出しです。それらを変数として扱い、自動的に変換します。明確に定義されたパラメーター型を使用して一部の関数を呼び出すと、Visual Basic も同じ変換を実行します。次の 2 つの関数呼び出し:
a=SetVal("これ")
a=SetVal(7)
次の関数は正しく呼び出すことができます。
FunctionSetVal(xAsString)
Form1.Text1.Text=x
エンドファンクション
Visual Basic はすでにさまざまな変数型を転送できるのに、なぜ関数のオーバーロードが必要なのでしょうか?これは、現在 1 つの関数で複数のデータ型を処理できますが、渡されたさまざまなデータ型に基づいて異なるアクションを生成することはできないためです。代わりに、次の 2 つの関数を比較します。
FunctionGetCustomerID(顧客名文字列)AsInteger
'顧客名に基づいて顧客 ID を検索
エンドファンクション
FunctionGetCustomerID(purchaslong)AsInteger
'購入注文に基づいて顧客 ID を検索
エンドファンクション
オーバーロードを通じて、入力データ型に基づいて関数を実装できます。これは、Visual Basic の次のバージョンでは、新しい機能である既定のデータ型保護が備わっているため、非常に重要です。一般に、変数の自動変換は有益ですが、場合によっては問題が発生することも想像できます。たとえば、前述の SetVal の例で、文字列「7」の代わりに文字 7 を送信したい場合はどうなるでしょうか? Visual Basic の次のバージョンでは、このエラーが自動的に検出されます。 (コードが Visual Basic の以前の非型認識機能に基づいている場合、この機能は無効になります)
最後に、ポリモーフィズムは、すでに定義されたクラスを再定義するプロセスです。たとえば、BaseClass の派生クラスを作成したいが、GetCustomerName 関数を書き換えたいとします。 Visual Basic の次のバージョンでは、次のような新しいメソッドを使用してこのクラス定義を実装できます (注: 最終的な構文は正式バージョンによって異なります)。
InheritsBaseClass
FunctionGetOrders()
OverridesFunctionGetOrders()
•••
エンドファンクション
その他の構文機能
Visual Basic の次のバージョンでは、上で述べたオブジェクト指向の改善だけではない可能性があります。また、スレッドの生成、エラー処理、およびスケーラビリティと再利用性に関する多くの待望の新しい改善もあります。
現在、Visual Basic はアパートメント スレッド モデルをサポートしています。このモデルはアプリケーション開発に実際の効率をもたらしますが、理想的ではありません。 Visual Basic の次のバージョンでは、この領域が改善される予定です。フリースレッド モデルを採用しているため、スケーラブルなネットワーク アプリケーションを作成する場合に役立ちます。 Visual Basic には、複数のスレッドを生成するために使用できる構文構造もいくつか含まれています。一般的なスレッド発生操作は次のとおりです。
sett=NewThread(NewThreadstart
(アドレスの(BaseClass.Function1))
この例から、Visual Basic の次のバージョンには、関数のアドレスを返すために使用される AddressOf 構造体があることがわかります。関数ポインターを必要とする API 関数をスキップする必要がなくなりました。折り返し電話が必要な場合は、これを利用して行うことができます。
計画されているもう 1 つの改善は、構造化されたエラー処理です。少し前まで、Visual Basic ではコードに多数の OnError ステートメントを挿入する必要がありました。私は何年もの間、GOTO ステートメントを大量に挿入することに不快感を感じてきました。これらの記述は、二度と使用しないようにと私に繰り返し警告しました。ここで問題に直面しましょう。エラー処理メカニズムが必要です。
Visual Basic の次のバージョンでは、エラー処理が集中化されます。 VisualBasic は、これらの「高貴な」言語と同様に、try...catch...finally 構造をサポートします。エラー処理を含むサブルーチンをコードの先頭に配置できます。エラー処理の実装例を次に示します。
サブセーフライト()
試す
「テストファイル」を開く
•••
書き込み#1
キャッチ
「テストファイル」を強制終了します
ついに
閉じる#1
エンドトライ
EndSub
現在の Visual Basic ユーザーにとっては馴染み深い機能強化が他にもあります。 Visual Basic の次のバージョンでは、変数の宣言と同時に変数を初期化できます。
Dimaasinteger=10
式で新しいオブジェクトを作成して初期化することもできます。クラスを通じて変数を共有することもできます。最後に、それだけではありませんが、継承の概念はプロジェクトのユーザー インターフェイスの基礎にまで拡張されます。 Visual Basic に対する典型的な批判は、同じ基盤に基づいてさまざまなフォームを作成することが困難になるというものです。 (これは、共同開発環境では多くの場合要件となります)。 Visual Basic の次のバージョンでは、テンプレート タイプを通じてこれを行うことができるようになります。
こうした改善は何年も前から予想されていたのですが、なぜでしょうか?見てみましょう。 Visual Basic の通信 (私はこれを 12 年近く行ってきました) はますます複雑になり、1991 年の最初のバージョンをはるかに超えています。 Visual Basic はもともと、初期の頃に小型のポータブル ツール プロトタイプを迅速に設計および開発するために使用されていました。その結果、Visual Basic は (私の意見では予想外ですが) 「おもちゃの言語」という評判を得ました。もはやおもちゃではないのは明らかなので、そう言う人は盲目的な偏見に基づいて行動していることになります。現在、さまざまな分野で Visual Basic ベースのソフトウェア パッケージが多数存在します。 VisualBasicは進化しています。昨年、私は研究センターで、週に何百万ものヒットを受け取る Web クラスを使用してプログラムを作成しているソフトウェア開発者と話をしました。
Visual Basic の次のバージョンの変更は驚くべきものです。それらがもたらすメリットを享受したい場合は、それらを使用してください。使いたくない場合は、現在使用しているものを自信を持って使用できます。ただし、C や Java が実行する関数は、C や Java よりもはるかに使いやすい Visual Basic のような言語で実装できることを知っておくとよいでしょう。
今後の開発動向
今回のプレビュープレゼンテーションはどのような印象に残りましたか?良い質問ですが、答えは見つかります。この 1 年間で、ASP 開発における変化がはっきりとわかりました。これらの開発プログラムは、多くの場合、読みやすい ASP スクリプトで構成されており、プログラム全体がこれらのスクリプトに基づいて実行されます。 ASP はスクリプト コード全体を解釈して実行するため、各コンポーネントを組み立てるときに、このテクノロジに固有の制限が徐々に発見されます。イベント ハンドラーをスクリプト コードから完全に分離し、アセンブリ用の COM インターフェイスを介して、C++ または Visual Basic で記述された高速コンパイル モデルの下でイベント ハンドラーを実装したいという開発者の声を聞くことが増えています。
考えられるあらゆる理由で、Visual Basic はそれを満たすことができます。 Visual Basic を使用してコンポーネントを設計することは、実際には VBScript や JScript® を使用することと同じくらい難しくありません。より高速に実行され、要件を簡単に達成できるコードを作成できます。 Visual Basic の次のバージョンがリリースされると、Visual Basic を使用して、ASP と互換性のあるネットワーク指向のオブジェクトを生成できるようになります。つまり、コンポーネントの組み合わせを選択することが、現在も将来も最良の選択であると考えられます。
前に述べたように、Visual Basic (および WebClass) を使用して作成されたインターネット指向アプリケーションの幅広い基盤が存在します。問題は、WebClass に基づくほとんどのアプリケーションが適切に設計されていないことです。アプリケーションのさまざまな層をうまく区別できず、中間層プロセスと DHTML ベースのユーザー インターフェイスが混同されます。
Visual Basic の次のバージョンでは、Web 開発用に厳選されたツールである WebClasses が導入されます。それは、よりスケーラブルで、より強力で、真に言語に依存しないからです。 Visual Studio のすべてのツールで機能します。マルチレイヤー開発のいくつかの基本ルールに注意すれば、この移行は簡単に行えます。中間層プロセスと表示層プロセスの分離には特別な注意を払う必要があります。これらのタスクを実行するときは、Windows® DNA2000 アーキテクチャを参照することを強くお勧めします。コアのイベント処理関数は中間層で完了する必要があり、好みのコンパイル言語で記述されたさまざまなコンポーネントを使用してこれらの関数を実装できます。これらのコンポーネントは、ASP スクリプト ファイルにまとめられ、コンポーネントが連携して動作できるようになります。ロジックのほとんどをスクリプトではなくイベント オブジェクトに配置するのが理想的です。これは、将来の Web サービスへの移行にとって良いアイデアであるだけでなく、模倣する価値のある実践でもあります。 ->