8

私はこのプロジェクトに参加しています:

フロントエンド企業の人々がSQLDBからデータをクエリおよび更新するために使用するWebページ。Visual Studioで作業していて、コードビハインド(C#)はほぼ完了しているので、SQLとC#の間の相互作用は問題ありません。私の当初のアイデアは、私に馴染みのあるASP.NETを使用することでしたが、それは不可能です。PHPに切り替える必要があります。ですから、今日はPHPを学ぶ最初の日です。http://php.net/manual/en/index.phpをチェックすると、多くのことがASP.NETに非常に似ているように見えるので、それほど難しくはないと思います。

とにかく、「Hello World」以外のスクリプトを作成したかったので、いくつかの質問が非常に速くポップアップしました。

PHPページを使用してクラスからC#変数を取得/送信する簡単な方法はありますか?XMLを使用する方法について読んだことがありますが、それでも頭を悩ませています。これを行うための別の簡単な方法はありますか?

4

1 に答える 1

12

オプションがあります。

  1. 直接統合。PHPは、.NETオブジェクトをインスタンス化して使用できます。PHPのDOTNETライブラリを参照してください。したがって、WindowsでPHPを実行し、PHP DOTNETインフラストラクチャの要件に従って.NETロジックを公開する場合は、PHPから直接.NETクラスを呼び出すことができます。いくつかの制限:PHPは、.NET2.0ランタイムと統合するように構築されています。.NET4.0オブジェクトをビルドしてPHPからそれらに接続することはできません。

  2. 同期ネットワークプロトコル。他の人が示唆しているように、RESTまたはWebサービスインターフェイスを介してC#ロジックを公開し、curlライブラリまたはを使用してPHPからこれらのサービスを呼び出すことができますfile_get_contents()。C#ロジックは公開される可能性がありますが、公開される必要はありません。つまり、アプリのファイアウォール内からのみアクセスできるようにして、匿名のパブリックアクセスを禁止することができます。一方、アーキテクチャでは、サードパーティまたはユーザーアプリから同じAPIへのアクセスが必要になる場合があります。その場合、公開する必要があります。

    パブリックまたはプライベートのいずれの場合でも、WCFまたはASPNET MVCを使用して、C#で実装されたこれらのサービスを公開する必要があります。

  3. 非同期メカニズム。PHPはMSMQに接続できます。PHPを使用してMSMQキューを開くを参照してください。もちろん、C#でも同様に実行できます。MSMQは、2つの世界間のバッファリング通信メカニズムとして使用できます。これを行うには、キューに入れて取得するメッセージのデータシリアル化プロトコルを考え出す必要があります。ここでは、JSONまたはXMLが適切な選択です。

  4. データベース。MSMQは「管理するインフラストラクチャのもう1つの部分」であるため、MSMQの採用に懸念がある場合は、データベースを仲介として採用することもできます。共有データベースは、PHPとC#の両方からアクセスでき、メッセージキューまたは通信コンジットとして使用できます。PHPはメッセージをMySQLテーブルに挿入し、C#アプリはそれらを読み取って処理し、応答メッセージを別のテーブルに配置できます。これには、メッセージ形式、プロトコル、インデックス、および要求/応答相関メカニズムを設計するための作業が必要になります。しかし、それはあなたがすでに使い方を知っている証明された既存の技術に依存しています。

  5. 最後に、ファレンジャーがあります。これにより、PHPを.NETFrameworkにコンパイルできます。これは、C#とPHPの統合が簡単になることを意味します。私はこれを試していませんが、あなたの要件を満たすかもしれません。

于 2012-06-26T15:12:28.567 に答える