4

さて、ここでかなり奇妙な質問があります。他のどの言語よりもObjective-Cでコードを書く方がはるかに快適だと感じています。最近、サーバー側のプログラミングを行う必要があり、PHPを学ぶ必要がありました。ええ、それは機能しますが、楽しみのために、Objective-Cを通じて同じことを達成したいと思います。そこで、XcodeのFoundationプリセットを使用してバイナリを作成しました。バイナリのほとんどは次のとおりです。

#import <Foundation/Foundation.h>
#import "JSONKit.h"

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    NSString *theURL = [NSString stringWithFormat:@"http://blahblahblah.com/blah"];
    NSError *err = nil;
    NSURLResponse* response = nil;
    NSMutableURLRequest* request = [[[NSMutableURLRequest alloc] init] autorelease];
    NSURL*URL = [NSURL URLWithString:theURL];
    [request setURL:URL];
    [request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
    [request setTimeoutInterval:30];
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];
    NSDictionary *someData = [data objectFromJSONData];
    NSString *someString = [[someData objectForKey:@"foo"]objectForKey:@"bar"];
    //do something

    [pool drain];
    return 0;
} 

かなり基本的なコード。サーバーからいくつかのものをダウンロードするだけで、JSONの結果を解析して、使用したい文字列を取得します。だから、私の質問は-Linuxベースのサーバーでこれを実行するにはどうすればよいですか?使用方法がわからないGNUStep(またはcocotron?)を使用して、それが可能であることはわかっています。誰かアイデアがありますか?

4

3 に答える 3

4

さて、@lacquiと同じことをお勧めします。CGIを使用してプログラムを実行します。手順は次のとおりです。

(補足:CGIリクエストがサーバーに到着するたびにプロセスを開始するため、usingは非推奨になりました(最新のサーバー/ Webコンテナーは新しいthread(vs process)を開始します)。

それでは、始めましょう:

  • 手元の入力はObjectiv-cで書かれたプログラムです
  • 出力は、いくつかのhttpサーバー内で実行されるCGIスクリプト(プログラムまたはそれらが名前を付けたもの)です。

deployまず、アプリケーションのターゲットプラットフォームは何ですか?

  • ターゲット展開プラットフォームがMacの場合、xcodeからバイナリを取得し(.dmg形式になると思います).dmg、Webサーバー内でCGIプログラムとしてを実行する方法を見つける必要があります(私はそうではありません) apacheがMacで動作するかどうかを確認してください)

  • しかし、それがそうである Windows場合Linux

    1. GNUstepを使用してアプリケーションをコンパイルする必要があります(XcodeからGNUstepへの移植性については何も知りません)GNUstepが必要になります。WindowsまたはLinux用にGNUstepをインストールする手順は簡単です。
    2. GNUstepをインストールしたら、それを使用してアプリケーションを再度コンパイルする必要があります。アプリケーションのコンパイル方法については、上記の同じ2つのリンクを参照してください。
    3. ここでの問題は、AFAIK、GNUstepはObjc-2を完全にはサポートしていないため、の使用によりコンパイルが失敗する可能性JSONKit.hが高いことです。プログラムが正常にコンパイルされれば、ほぼ完了です。
    4. プログラムがコンパイルされ、バイナリプログラムが作成されたとします。有効になっているHTTPサーバーにデプロイする必要があります。ここで私のブログ投稿をフォローして、Cで記述されたバイナリプログラムをLinuxで呼び出される小さなhttpサーバーにデプロイする方法を知ることができます(ソース言語に関係なく、すべてのバイナリプログラムに適用する必要があります)。CGImini-httpd
于 2011-09-16T14:43:35.337 に答える
2

見たいものは、CommonGatewayInterfaceと呼ばれます。これは、Webサーバーが下位プロセスと対話する方法を示すプロトコルです。

ユーザーがプログラムにマップされているURLを参照すると、サーバーがプログラムを起動し、リクエストのテキストをSTDINに配置します。プログラムは必要な処理をすべて実行し、結果(およびいくつかのヘッダー情報)をSTDOUTに入れます。

于 2011-09-05T00:01:53.567 に答える
1

あなたがしようとすると何がうまくいかないのですか?GCCのObjective-Cコンパイラでコンパイルできるはずです。あなたはそれを実行することができるはずです。

于 2011-09-05T00:01:01.133 に答える