0

C# を使用して組織のプロジェクトに取り組み始めようとしています。必要なデータを取得するには、データベースからデータを取得する必要がありますが、アプリケーションを作成するためにデータベースにアクセスすることはできません。ご想像のとおり、これは少し難しい課題です。

過去のプロジェクトで、データベースにアクセスしてデータを JSON 形式で返す PHP スクリプトを作成しました。残念ながら、作成できる必要があるクエリは約 100 ~ 120 あるため、必要なクエリごとに PHP スクリプトを作成するには非常に時間がかかります。

PHP で文字列引数を取り、C# から何らかの方法で文字列を渡すメソッドを作成することは可能ですか? もしそうなら、どうすればそれを行うことができますか?スクリプト内のメソッドに文字列を渡すことができれば、必要なすべてのクエリを作成するために必要なメソッドは 3 つだけです (PHP スクリプト内)。

4

1 に答える 1

1

C#アプリケーション/ライブラリからPHPメソッドを呼び出す素朴な例には、クラスWebRequestWebResponseクラスの使用が含まれます。

HttpWebRequest request = (HttpWebRequest) 
    WebRequest.Create("http://server/script.php?method=my_method");

HttpWebResponse response = (HttpWebResponse) request.GetResponse();

Stream stream = response.GetResponseStream();

次に、ストリームを使用して、応答を解析または逆シリアル化できます(たとえば、JSON文字列の場合)。

script.phpこの実装は、パラメーターを使用し、methodそのメソッドへの呼び出しを委任することに依存しています。必要に応じて、疑似ルーティング。より多くの引数をクエリ文字列を介して渡すことができ、呼び出されたメソッドで使用できます。

これの別の些細な例:

$r = new Repository();
$d = $r->{$_GET['method']}();
echo json_encode($d);

ただし、これの多くは既存のテクノロジーを使用して実装できます。PHPメソッドをAPIとして公開することは、死ぬまで行われてきたことであり、そのようなアプリケーションの開発を促進するために、RESTfulAPIフレームワークが多数存在します。クライアント実装で何かを使用する場合、APIを使用するC#アプリケーション/ライブラリについても同じことが言えます。

あなたの質問への答え、「それは可能ですか...」; 確かにそうですが、これはかなり高レベルの要件であり、実装は問題のドメインに完全に依存します。


詳細として(コメントするには長すぎたかもしれません)、私は現在、大規模なオーバーホールプロジェクトに取り組んでいます。以前の開発者は、自分のすべてをロールバックすることにしました。それは私にとってどういう意味ですか?私は彼らのコードベースのオンスを再利用することができませんでした。彼らは独自のセキュリティ戦略を展開していました。ごみ。

私はもっ​​と上手に書くことができたので(私はそうかもしれませんが、それほど多くはありません)、ゴミとは言いませんが、私はもっとよく知っているからです。

私は、十分に統合され、大規模なコミュニティと開発者のサポートを備えた、確立されたテクノロジーを好みました。私が問題を抱えているとき、ドキュメントとここの間で、私は通常、かなり迅速に解決策を見つけることができます。さらに、コンポーネントの問題は文書化され、修正されており、回避することができます。

特に、学習体験のように扱っていることがわかっている場合は、独自の不可欠なコンポーネント(セキュリティなど)を本番環境に移行することは無責任です。

于 2013-03-10T19:08:44.233 に答える