ASP.NET+Webサービスでソフトウェア共有を実現
著者:Eve Cole
更新時間:2009-06-30 15:39:48
要旨本稿では、ソフトウェア機能共有による新しいソフトウェア共有方式を提案する。この方式の利点は、ソフトウェアをクライアントにコピーすることなく、リモートからWebサービスを呼び出す形でソフトウェア機能の共有を実現し、コストも削減できることである。ネットワーク上の一部のリソースの冗長性は、既存の Web サービスの共有や新しいシステムの統合にも役立ちます。さらに、この記事では、学生本人確認モジュールの例を通じて、この新しい方法の有効性を分析します。
導入
従来のソフトウェア共有では、ソフトウェアをネットワーク サーバーからクライアントにコピーしてソフトウェア共有を実現します。この方法の欠点は、ソフトウェアを使用する必要があるすべてのクライアントが最初にソフトウェアをコピーする必要があり、ネットワーク上のスペースが冗長になることです。その結果、大量のデータが分離され、ビジネス ロジックが重複してしまいます。
Web サービスは、XML メッセージングを使用したデータ交換とアプリケーション ロジックのリモート呼び出しを可能にし、データがファイアウォールを通過し、異種システム間でデータを移動できるようにすることで、データとシステムの相互運用性を実現するための実行可能なソリューションを提供します。
この記事では、従来のソフトウェア共有の問題を解決するために、ソフトウェア機能共有による新しいソフトウェア共有方法を提案します。この方法の利点は、ソフトウェアをクライアントにコピーすることなく、Web サービスのリモート呼び出しの形でソフトウェア機能共有が実現されることです。また、ネットワーク上のリソースの冗長性も軽減され、既存の Web サービスの共有や新しいシステムの統合にも役立ちます。さらに、この記事では、学生本人確認モジュールの例を通じて、この新しい方法の有効性を分析します。
ソフトウェア共有の意味
コンピュータ アプリケーションの普及と発展に伴い、実用的なコンピュータ ソフトウェアが開発され、さまざまな業界や企業や部門などの小規模な分野で応用されています。これらのソフトウェアは会社の作業効率と最新の管理レベルを大幅に向上させ、会社の業務運営と管理の中核となっています。しかし、ほとんどの企業のほぼすべての部門でカスタム ソフトウェアが広く導入された結果、便利ではあるものの、サイロ化され反復的なビジネス ロジックの塊が多数発生しました。設計と開発中に設計の重複を回避でき、ソフトウェア機能の共有を使用して各モジュールの同じ機能を実現できれば、ソフトウェア開発コストが大幅に節約され、将来のシステムのアップグレードと統合のための優れたアーキテクチャ基盤が提供されます。さらに、既存のビジネス ロジックをわずかな改良で他のアプリケーションと共有できるため、開発コストを削減できます。
各アプリケーションが開発される環境は多様であり、テクノロジーは常に進化しているため、これまでは既存のアプリケーションを共有して機能セットを作成することが困難でした。幸いなことに、Web サービス技術の出現により、ソフトウェア機能の Web サービスはインターネット内で共有できるビジネス ロジックを提供し、最終的にはさまざまな Web サービスの機能コンポーネント システムに基づいてオープン性を形成します。次に、Web サービス技術を使用してソフトウェアの共有を実現する方法について説明します。
Webサービス技術に基づくソフトウェア共有
1. Web サービス技術の概要
Web サービスは、インターネット上に展開される API とみなすことができ、アプリケーションや他の Web サービスによって簡単に統合して呼び出すことができ、新しいアプリケーション サービスを形成できます。完全なカプセル化、疎結合、および高度な統合機能を備えています。 「Software as a Service」を体現する Web サービス技術が、次世代 Web の主流技術となることは間違いありません。
Web サービスのアーキテクチャは次のとおりで、サービス リクエスタ、サービス エージェント、サービス プロバイダーで構成されます。
Web サービス プロバイダーは Web サービスの所有者であり、サービス エージェントに登録してサービスを構成し、独自の機能が他のサービスに提供されるのを待ちます。Web サービスのリクエスターは Web 機能のユーザーです。これは、ルックアップ操作を使用してサービス ブローカーからサービスの説明を取得し、サービス プロバイダーにバインドして、Web サービスを呼び出すか対話します。
Web サービス プロバイダーは、Web サービス リクエスターを適切な Web サービス プロバイダー (通常は UDDI) に接続する仲介者に相当します。UDDI は、サービス リクエスターに Web サービスを動的に検索するためのメカニズムを提供します。
2. Webサービスをベースとしたソフトウェア共有の実現
ソフトウェア開発の過程では、モジュール機能の再編成、再利用、変更、アップグレードを容易にするために、ソフトウェアを機能ごとに異なるモジュールに分割することがよくあります。 Web サービス技術によるソフトウェア共有を実現するには、まず統合システムを機能ごとにモジュールに分割し、その機能モジュールを実装する Web サービスを作成し、Web サービスにアクセスできるようにする必要があります。サービスの説明 (Web サービスのデプロイ) を使用して、他のモジュールを見つけて呼び出すことができるようにします。このようにして、Web サービスとして実装されたソフトウェア機能は、アプリケーションや他の Web サービスでも共有できます。
アプリケーションや他の Web サービスなどのサービス要求者が Web サービスを呼び出す必要がある場合、最初にサービスの説明を取得するか、サービス登録センターで必要なサービスの種類をクエリします。必要なサービスが見つかると、サービスの説明を使用してサービス プロバイダーにバインドし、対応するサービスを呼び出すことができます。
Microsoft が新たに発表した主力製品である Visual Studio.NET は、Web サービスを開発するための推奨ツールとして知られています。Visual Studio.NET を使用すると、Web サービスを簡単に作成して呼び出すことができます。以下に、Webサービス技術に基づくソフトウェア共有の具体例を示す。
3. ソフトウェア共有の応用例: 学生本人確認モジュールの共有実装。
現在、大学には、コース選択システム、成績照会システム、オンラインコースシステム、図書館システム、学生財務システムなど、多くのソフトウェア システムがあります。各システムは互いに独立しているため、各システムには学生の身元確認モジュールがあり、その結果、設計の機能が重複することになります。さらに、各システムは互いに独立しており、学生は異なるシステムのパスワードを覚えておく必要があります。
上記の状況と現在の高度に発達したキャンパスネットワークを考慮すると、Web サービスを完全に利用して学生本人確認モジュールの共有を実現できます。 Visual Studio.NET環境を利用し、C#言語で学生本人認証Webサービスを作成して呼び出す手順を紹介します。
1) Webサービスの作成
学生 ID 認証モジュールは 1 つの Web サービスで構成されます。
public Boolean ValidUser(string userID,string Pwd)
Web サービス ValidUser は、学生の身元を確認するために使用されます。基本的な学生情報テーブル Student が SQL Server データベース StudentsInfo に作成されており、フィールド UserID と Pwd には学生のユーザー コードとパスワードがそれぞれ格納されます。
ここでは、Web サービスの作成プロセスを詳しく紹介します。
a Visual Studio.NET 開発環境を実行し、新しい「ASP.NET Web サービス」タイプのプロジェクト WSStudentLogin を作成します。
b Web サービスの特定のコード実装。
System.Data.SqlClient を使用します。
// コードを省略します...
パブリック クラス Service1 : System.Web.Services.WebService
{
文字列 ConStr="";
ConnStr="DATABASE=StudentsInfo;SERVER=10.1.111.19;UID=sa;PWD=;";
// コードを省略します...
[ウェブメソッド]
public Boolean ValidUser(string userID,string Pwd)
{
ブール値フラグ = false;
文字列 sqlStr="";
//データベース接続オブジェクトを作成する
SqlConnection tempConn=new SqlConnection(ConnStr);
sqlStr="select * from students where ID='"+userID+"' and pwd='"+Pwd+"';";
//コマンドオブジェクトを作成する
SqlCommand tempComm=new SqlCommand(sqlStr,tempConn);
tempConn.Open();
SqlDataReader tempReader=tempComm.ExecuteReader(CommandBehavior.CloseConnection);
if (tempReader.HasRows) フラグ = true;
tempReader.Close();
tempComm.Dispose();
リターンフラグ;
}
}
リモートから呼び出せる Web サービスは、[WebMethod] で記述されているメソッドのみであることに注意してください。したがって、メソッドの前の[WebMethod]は省略できません。
Web サービスを他のユーザーが利用できるようにするには、サポートしたいクライアントがアクセスできる Web サーバーに Web サービスをデプロイする必要があります。 Web サービスを開発サーバー以外のサーバーにデプロイするには、Web インストール プロジェクトを追加するか、必要なファイルをターゲット サーバーにコピーします。紙面の都合上、この記事ではこれについては詳しく説明しません。この例の Web サービスは開発サーバーにデプロイされていることを前提としています。
Web サービスを作成してデプロイした後、クライアント上で対応する Web サービスを呼び出すことができます。以下に、クライアント上で Web サービス関数を見つけて参照する方法を説明します。
2) Webサービス呼び出し
Web サービスを使用するプロセスは、実際には、Web サービス ユーザーを Web サービスにバインドし、そのメソッドを呼び出すプロセスです。バインディングプロセスを簡素化するため。 Visual Studio.NET は、サービス プロキシ クラスのメソッドを提供します。サービス プロキシ クラスは、実行プロセス中に、Web サービス記述ドキュメント (XXX.WSDL) に基づいてローカル クラスを生成し、クライアントはプロキシ クラス内の情報を使用して Web サービスにアクセスし、実際のメソッド呼び出しを実装します。 Visual Studio.NET は、このプロセスを実現する簡単な方法を提供します。
a Webサービスアクセスクライアントプログラムを作成します。
Web サービス アクセス クライアント プログラムには、さまざまな種類のアプリケーションまたは他の Web サービスを使用できます。ここでは、「ASP.NET WEB アプリケーション」タイプの新しいプロジェクト WebApplication2 を作成します。
b. サービス参照。
まず、[プロジェクト] メニューの [Web 参照の追加] をクリックします。次に、この例の Web サービスはローカル コンピュータ上にあるため、ブラウザ ペインの [ローカル コンピュータ上の Web サービス] リンクをクリックします。次に、表示されたリストから「Service1」リンクをクリックして、Web サービスに関する情報を取得します。次に、「参照の追加」をクリックして、ターゲット Web サービスに Web 参照を追加します。 Visual Studio.NET はサービスの説明をダウンロードし、アプリケーションと Web サービス間のインターフェイスとして機能するプロキシ クラスを生成します。
c. クライアント プログラムで Web サービスを呼び出すための具体的なコード例。
private void Button1_Click(オブジェクト送信者、System.EventArgs e) { //プロキシクラスオブジェクトを作成 localhost.Service1 ClientProxy=new localhost.Service1(); 試す {//コード クラス オブジェクトを通じて Web サービスにアクセスする if (ClientProxy.ValidUser(TxtUserId.Text,txtPwd.Text)) Label1.Text="OK"; それ以外 Label1.Text="エラー" ; } キャッチ(e) {投げる;} ついに {ClientProxy.Dispose();} } |
他の
Web サービス テクノロジは、既存の情報システムに基づくソフトウェア共有とシステム統合を実現するための優れた技術基盤を提供します。しかし、Webサービス技術に基づくソフトウェア共有を真に実用化するには必要です。また、セキュリティと信頼性、第一にWebサービスのネットワーク伝送の接続信頼性、第二にWebサービスの内容の信頼性、つまりデータの完全性と機密性の確保という課題も解決する必要があります。 2 つ目は、Web サービスは「サービスとしてのソフトウェア」を具体化したものであり、誰がこのサービスを利用することを禁止され、誰がそのサービスを利用できるのか、その利用料金はどのように設定されるのかなどです。すべて実際の使用問題で解決する必要があります。さらに、Web サービスの収容能力、Web サービスの展開と検出、顧客による Web サービス呼び出しの障害処理などの問題も解決する必要があります。
まとめ
本稿では、ソフトウェア機能共有の観点からソフトウェア共有の実現を提案し、リモートソフトウェア機能共有を実現するためのWebサービス技術の使用について議論し、学生団体検証モジュールを使用してソフトウェア機能共有の有効性と利点を分析します。ソフトウェアの機能共有に関する研究は分散コンピューティングの実現にとって非常に重要であり、さらなる研究が必要である。