ホームページ バックエンド開発 C#.Net チュートリアル .NET を使用して PHP Web サービスを呼び出す一般的な例

.NET を使用して PHP Web サービスを呼び出す一般的な例

Dec 15, 2016 pm 01:34 PM

最近のプロジェクトは、「DB2 に直接アクセスする WinForm」から「PHP Web サービスを介して DB2 にアクセスする WinForm」に移植されました。

(利点は、PHP を Linux 上で実行でき、Linux は無料であることです)

この提案の難しさは、DB2 にアクセスするのではなく、.NET が PHP の Web サービスを呼び出すことです。長年 .NET に取り組んできて、Web サービスは .NET でしかできない…と思っていた私にとって、これは非常に難しいです。

しかし、問題はまだ解決する必要があり、期限は目の前にあります。いくつかの調査の結果、ついに手がかりが得られたので、今回はそれを共有します。

まず、PHP サーバーには少なくとも 2 つのファイル (WSDL ファイルと PHP ファイル) が必要です。 WSDL ファイルは、WebService によって提供されるサービスと呼び出しメソッドを記述するために使用される機械可読 XML ファイルです (.NET の場合、呼び出しコードは自動的に生成されるため、非常に使いやすいのが実際の php ファイルです)。ウェブサービス。

1) PHPサーバーサイドコード

1-1) TestWebService.phpコード

以下引用内容:

class TestWebService
{
public function HelloWorld()
{
return array (" HelloWorldResult"=>"Hello"); }

パブリック関数 GetArray($args)メソッドを渡す必要があります。value1 と value2 の 2 つのパラメータがあります。

to;
return array("GetArrayResult"=>$arry);
}
}

//WebSeviceインスタンスを作成
$server = new SoapServer("TestWebService.wsdl");

//クラス名を指定

$server -> ;setClass("TestWebService");

$server->handle();

?>




1-2) TestWebService.wsdl コード

以下は引用内容です:













< /s:要素&gt;
&lt; s:要素名= "getArray"&gt;
&lt; s:complexType&gt;
&lt; s:sequence&gt;
&lt; s:element minoccurs = "0" maxoccurs = "1" name = = " "value1" type="s:string" />



























< ;/wsdl:message>

   






< /wsdl:operation>










































< ;wsdl:サービス名="TestWebService">









WSDL コードは、メソッドが多数ある場合、手でコードを入力するのは不可能です。賢い方法があります。それは、.NET を使用して実際のメソッド本体を使用せずに Web サービスを実装し、次に http://***/TestWebService.asmx? を使用することです。 wsdl メソッドは、wsdl コード ファイルを生成します。

WSDL ファイルに関して、2 つの特別な点を説明したいと思います。

(1) soap:address ノードは WebService が宣言されているアドレスであり、デプロイメント中に対応するアドレスに変更する必要があります

(2) 1 次元配列の宣言型は ArrayOfType、文字列配列は ArrayOfString です。 Type が単純型ではない場合、Type を個別に宣言する必要があります。

2) .NET クライアント コード

まず、Web 参照を追加します。アドレスは WSDL ファイルの Http アドレスです。コードを呼び出します (C#)

以下は参考内容です:

// webService を初期化します

LocalHost.testWebService SRV = New LocalHost.testwebService () ( ;);配列型も一般的に理解されている配列とは異なります。また、使用法も Hashtable と似ています。


(2) 実際に呼び出されたときのパラメータと戻り値はすべてオブジェクトにパッケージ化されて送信されるため、PHP Web サービス メソッドは最大 1 つの受信パラメータと戻り値を持つことができます。

(3) PHP Web サービスは、カスタム型やカスタム型配列などの複合型もサポートしますが、複数の配列はサポートしません。

(4) 戻り値が複数の 2 次元テーブルである必要がある場合、形式は

[テーブル 1 の行数]、[テーブル 1 の列数] で渡せると表面的に考えました。テーブル1]、[テーブル1の列数] 1列名1]、[テーブル1の列名2]、…[テーブル1の列名N]、[テーブル1の行と列に格納される値]


[表2の行番号]、[表2の列番号]、[表2の列名1]、[表2の列名2]、…[表2の列名N]、[表2の格納値]行と列]

...

[テーブル M 行番号]、[テーブル M 列番号]、[テーブル M 列名 1]、[テーブル M 列名 2]、...[テーブル M 列名] N]、[表 2 の行と列に格納される値]

上記は、Web サービスの典型的な例の PHP コンテンツを調整するための .NET です。その他の関連記事については、PHP 中国語 Web サイト (www. php.cn)!

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C# の雇用の見通しはどのようなものですか? C# の雇用の見通しはどのようなものですか? Oct 19, 2023 am 11:02 AM

初心者でも経験豊富なプロフェッショナルでも、C# をマスターすることでキャリアへの道が開かれます。

いくつかの .NET オープンソース AI および LLM 関連プロジェクト フレームワークを共有する いくつかの .NET オープンソース AI および LLM 関連プロジェクト フレームワークを共有する May 06, 2024 pm 04:43 PM

現在、人工知能(AI)技術の開発は本格化しており、さまざまな分野で大きな可能性と影響力を発揮しています。本日、Dayao は、参考にしていただけるよう、4 つの .NET オープン ソース AI モデル LLM 関連プロジェクト フレームワークを共有します。 https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel は、OpenAI、Azure などの大規模言語モデル (LLM) を統合するように設計されたオープン ソース ソフトウェア開発キット (SDK) です。

開発者向けの .NET パフォーマンス最適化テクノロジ 開発者向けの .NET パフォーマンス最適化テクノロジ Sep 12, 2023 am 10:43 AM

.NET 開発者は、高品質のソフトウェアを提供するために機能とパフォーマンスを最適化することの重要性を認識する必要があります。提供されたリソースを巧みに活用し、Web サイトの読み込み時間を短縮することで、ユーザーに快適なエクスペリエンスを提供するだけでなく、インフラストラクチャのコストも削減できます。

Java フレームワークと .NET フレームワークのパフォーマンスの違い Java フレームワークと .NET フレームワークのパフォーマンスの違い Jun 03, 2024 am 09:19 AM

同時実行性の高いリクエスト処理の点では、.NETASP.NETCoreWebAPI は JavaSpringMVC よりも優れたパフォーマンスを発揮します。その理由としては、AOT の早期コンパイルにより起動時間が短縮され、開発者がオブジェクト メモリの割り当てと解放を行うため、より洗練されたメモリ管理が行われます。

c#.netインタビューの質問と回答:専門知識を高める c#.netインタビューの質問と回答:専門知識を高める Apr 07, 2025 am 12:01 AM

C#.NETインタビューの質問と回答には、基本的な知識、コアの概念、高度な使用が含まれます。 1)基本知識:C#は、Microsoftが開発したオブジェクト指向言語であり、主に.NETフレームワークで使用されています。 2)コアの概念:委任とイベントは動的な結合方法を可能にし、LINQは強力なクエリ関数を提供します。 3)高度な使用:非同期プログラミングは応答性を向上させ、式ツリーは動的コード構造に使用されます。

C#.NET:コアの概念とプログラミングの基礎を探る C#.NET:コアの概念とプログラミングの基礎を探る Apr 10, 2025 am 09:32 AM

C#は、Microsoftによって開発された最新のオブジェクト指向プログラミング言語であり、.NETフレームワークの一部として開発されています。 1.C#は、カプセル化、継承、多型を含むオブジェクト指向プログラミング(OOP)をサポートしています。 2。C#の非同期プログラミングは非同期を通じて実装され、適用応答性を向上させるためにキーワードを待ちます。 3. LINQを使用してデータ収集を簡潔に処理します。 4.一般的なエラーには、null参照の例外と、範囲外の例外インデックスが含まれます。デバッグスキルには、デバッガーと例外処理の使用が含まれます。 5.パフォーマンスの最適化には、StringBuilderの使用と、不必要な梱包とボクシングの回避が含まれます。

高度なC#.NETチュートリアル:次のシニア開発者インタビューをエース 高度なC#.NETチュートリアル:次のシニア開発者インタビューをエース Apr 08, 2025 am 12:06 AM

C#シニア開発者とのインタビューでは、非同期プログラミング、LINQ、.NETフレームワークの内部作業原則などのコア知識をマスターする必要があります。 1.非同期プログラミングは、非同期を通じて操作を簡素化し、アプリケーションの応答性を向上させるのを待ちます。 2.LinqはSQLスタイルでデータを操作し、パフォーマンスに注意を払います。 3.ネットフレームワークのCLRはメモリを管理し、ガベージコレクションに注意して使用する必要があります。

Webからデスクトップまで:C#.NETの汎用性 Webからデスクトップまで:C#.NETの汎用性 Apr 15, 2025 am 12:07 AM

c#.netisversatileforbothwebanddesktopdevelopment.1)forweb、useasp.netfordynamicapplications.2)fordesktop、equindowsorwpfforrichinterfaces.3)usexamarinforcross-platformdeveliment、enabling deshacrosswindows、

See all articles