ID非公開

2021/5/9 12:02

22回答

c♯からphpへのデータの送受信方法が分かりません。

PHP | C言語関連27閲覧xmlns="http://www.w3.org/2000/svg">250

ベストアンサー

0

ID非公開

質問者2021/5/9 16:20

ご丁寧に分かりやすい解説、誠にありがとうございます。 厚かましくて申し訳ないのですが、追加で2点ほどご質問させていただいてもよろしいでしょうか? ①テキストボックスに書かれた内容を送る場合はPOST送信でなければ不可能なのでしょうか? (GETで送る場合、(略).php?name1=value1のvalue1の部分を書き換えると思うのですが、value1の部分に直接textBox1.Textやテキストボックスを格納した変数を入力してもうまく行かなかったので汗) ②>受け取ったデータをもとに処理する方法として、具体的には、c#側でボタンをおし、それと同時にphp側でランダムな数値を生成したいと思っています。ランダムな数値を生成する処理自体はなんとかなると思うのですが、ボタンを押すと同時に処理をするとなるとあまりイメージが湧かないのですが、このようなことは可能なのでしょうか。

その他の回答(1件)

0

そもそもPHPは、サーバ側とクライアント側とで、別々に独立したタイプに設計されていませんよ。 これに対して、C#は、サーバとクライアントとで、別々に独立したタイプが可能なように設計されています。 むしろサーバーシステム側をC#にするべきです。 そのC#を含めて、サーバとクライアントとで別々に独立したタイプは、ある意味まだ発展途中と言えます。 順番に説明します。 [2002年とそれ以降でのWebサービス] Webは、時代の流れと共に、高機能化が行われてきました。 しかし、初期のWebが、機能を搭載するように設計されていないので、高機能化には限界が出てきました。 そこで、高機能化を考慮して設計されたプロトコルが作られました。 SOAPと言うプロトコルです。 また、そのSOAPの通信によるサーバーシステムを作る技術であるWebサービスが作られました。 ちなみに、Webサービスのことを「Web << の >> サービス」と勘違いして、Web全般でのサーバーシステム(サービス)の全体のことだと思っている人達が多くいます。 しかし、Webサービスは、そのような広い意味ではなく、特定の技術を指す名前です。 その開発環境のベーター版は、各社から2000年や2001年に出て、正規版は、2002年に一斉に出ました。 Microsoft以外の多くの企業達は、MVCのModelをJava Beansとし、MVCのViewをJSPとし、MVCのControllerをJava ServletとするMVCモデルを採用していました。 これに対してMicrosoftは、C#でサーバーシステムを作るクライアントサーバーの2要素の形式を採用していました。 すなわち、多くのIT企業は、MVCモデルで、サーバ側とクライアント側をセットで設計するタイプです。 これに対してMicrosoftは、サーバ側とクライアント側とで、別々に独立したタイプです。 ただし、当時では、Webでのクライアント技術が未熟でした。 通信技術(SOAP)とサーバ技術(Webサービス)は完成度が高かったのですが、それにクライアント技術が追い付いていませんでした。 そのため、サーバと通信はWeb仕様を使うが、クライアントは、非Web仕様(Webとは関係ない一般のアプリケーションソフト)と言う構成でした。 その非Web仕様のクライアントとは、質問にも書かれているC#で作るWindowsフォームアプリケーションです。 サーバ側とクライアント側とで別々に独立したタイプなので、C#ではなくても、Visual Basic.NETやJavaでもクライアント用ソフトが作られました。 [リッチクライアントについて] 前述の通り、クライアント技術がまだ未熟でした。 よって、クライアント技術を高める方向性となりました。 代表的なのが、Adobe Flashです。 Flashは、動画やゲームが作れて高機能です。 SNSゲームを普及させた立役者です。 FlashとPHPを組み合わせる、もしくは、FlashとJavaを組み合わせる組み合わせが主流でした。 ただし、Flashは、質問に書かれているようなサーバとクライアントでやり取りする機能がありません。 そこで、Microsoft Silverlightと言うクライアント作成用のプログラミング言語が登場しました。 Silverlightは、Flashのように動画やゲームが作れて高機能です。 さらに、Silverlightは、クラウドコンピューティングでのサーバーシステムと連携することが可能です。 すなわち、質問に書かれているようなサーバーとクライアントでやり取りするタイプが登場しました。 Silverlightは、Microsoftが作成したプログラミング言語ですが、Microsoft固有仕様(Windows固有仕様)に依存させていないため、Microsoftをライバル視していた企業達も含めて、多くの企業が採用する予定でした。 ただし、HTML5の登場により、世間は、「Flashも、Silverlightも不要になる」と騒ぎました。 HTML5は、スクリプト言語ではなく、マークアップ言語です。 マークアップ言語で、動画やゲームが作れます。 標準化団体のW3Cが管理しているので、FlashやSilverlightに勝ち目はありませんでした。 [TypeScriptについて] HTML5は、動画やゲームが作れますが、スクリプト言語ではなくマークアップ言語です。 よって、サーバ側とやり取りすることが無理です。 すなわち、実際にHTML5がSilverlightに勝つためには、HTML5仕様を取り入れたスクリプト言語が登場する必要があります。 単純にHTML5仕様を取り入れるだけではなく、クラウドコンピューティングのサーバーシステムと連携する技術が必要です。 しかし、そのようなスクリプト言語は、いくら待っても登場しませんでした。 そこで、Microsoft自身が作りました。 TypeScriptです。 TypeScriptは、Googleも採用しました。 Microsoftが、Googleのために作ったスクリプト言語と言っても言い過ぎではありません。 Googleに限らず、様々な企業が採用して行く見込みです。 ただし、広く普及するには、そう簡単には行きません。 そこで、次に説明します「native(ネイティブ)の強化」で、普及の見込みが出てきました。 [native(ネイティブ)の強化] native(ネイティブ)とは、C言語やC++で作るハード側に近い処理のことです。 インターネットでは、個々の企業のハード仕様に依存させたくないので、nativeを拒絶していました。 ただし、スマートフォンのような小型な機器では、どうしてもハード依存させる必要があります。 すなわち、インターネット系では、しぶしぶnativeが受け入れられていました。 ただ、インターネット系のnativeは、C言語やC++で作らないで、JavaかC#で作られていました。 JavaとC#は、インターネット側のプログラミング言語で、C言語やC++のようなシステム的なプログラミングが得意だからです。 ただし、JavaやC#では、native系プログラムは作り辛いです。 そこで、C++をインターネットで活用して行く方向性になりました。 Linux Foundationと言う大きな組織がMicrosoftと手を組んで進めています。 数年前あたりから開発が盛んになっていますが、実際に世の中に出てくるのは、これから先になります。 実際に世の中に出てくると、IoT機器によるユビキタスの時代が実現します。 サーバ側では、.NET Coreと言うフレームワークで、様々な企業が参加しています。 クライアント側は、前述のTypeScriptが、様々な企業が参加になっています。 取り合えず表に出てきたのが、GoogleのFlutterとMicrosoftのXamarinが手を組んで、モバイル開発とクロスプラットフォームが強化されました。 また、CPython系のPython(C言語で作られたPython)が、native強化の流れに乗っかりました。 さらに、JavaScriptを機能拡張した各種JavaScript系スクリプト言語が、nativeを受け入れられて行く傾向です。 FlutterのDartが含まれます。 それ以外では、少なくとも現時点で、React.jsとNode.jsとVue.jsは、GoogleとMicrosoftが作ったnative強化の流れに乗っています。 [オーケストレーションツールKubernetes] さらに、次の展開も決まっていて、WebサービスやRestful Webサービスに変わって、オーケストレーションツールと言うもので、ネットワークの仕組みを作って行く予定になっています。 オーケストレーションツールの代表は、Kubernetesです。 このKubernetesでは、完全にサーバとクライアントを分離して、サーバとクライアントのやり取りが可能になります。 Google系の技術ですが、Microsoftも採用しました。 GoogleのRPC(プログラムの機能をエクスポート(外部公開)する技術仕様)をMicrosoftが採用しました。 前述の.NET CoreのKubernetes版も既に出ています。 (試してみようとしましたが、私の開発環境では、まだ動作がうまく行きませんでした) 詳しくは、gRPC と Microsoft のキーワードで検索して下さい。