作成 2003/9/30
ちょっと用事でC#に触ってみたメモです。今回利用した環境は.Net FrameWork SDKです(単にコンパイルしたり実行するだけなら、Visual何某がなくてもできるみたいです)。C#でハローワールドを書きました。あと、wsdl.exeに触ってみました。
環境
C#のコンパイルには、.Net FrameWork(再頒布パッケージ)、および.Net FrameWork SDKが必要です。以下のサイトからダウンロードできます。ここでは1.1をダウンロード、インストールしました。
http://www.microsoft.com/japan/msdn/netframework/downloads/
コンパイラなどの実行前に、環境変数の設定が必要です。設定ファイルが、SDKをインストールしたディレクトリのBin/SDKVars.batにあります。うちの場合はここC:\Program Files\Microsoft.NET\SDK\v1.1\Binにありました。これを実行します。
こんな感じです。
リスト hello.cs
using System; class Hello{ public static void Main(string[] args){ Console.WriteLine("hello!"); } }
javaと比較すると、usingはpackage。stringは小文字。System.outはConsole.WriteLineて感じです。なお、Mainの頭文字は大文字です。
コンパイルコマンドはcsc(しーしゃーぷこんぱいら、多分)です。エラーがなければexeができます。
C:\tmp\cs>csc hello.cs Microsoft (R) Visual C# .NET Compiler version 7.10.3052.4 for Microsoft (R) .NET Framework version 1.1.4322 Copyright (C) Microsoft Corporation 2001-2002. All rights reserved.
hello.exeを実行。
C:\tmp\cs>hello hello!
おおおお、動いた!
wsdl.exeはWSDLファイルからC#プロキシコードを生成するツールです。最も簡単な例ではWSDLのURL(かパス)を指定して実行します。なお、ここでは指定しているWSDLは、ローカルホストのTomcat / Apache Axisで動いているWebサービスのWSDL(←※注、これはうちのローカルホストです)です。どっかで公開されてるWSDLを指定しても同じことができるでしょう。
C:\tmp\cs>wsdl http://localhost:8080/axis/Hello.jws?wsdl Microsoft(R) Web Services Description Language Utility [Microsoft (R) .NET Framework, Version 1.1.4322.573] Copyright (C) Microsoft Corporation 1998-2002. All rights reserved. ファイル 'C:\tmp\cs\HelloService.cs' に書き込んでいます。
作成されたHelloService.csを使ってWebサービスのクライアントコードを書きます。
リスト Client.cs
using System; public class Client{ public static void Main(string[] args){ HelloService s = new HelloService(); string message = s.sayHello(); Console.WriteLine(message); } }
コンパイルして、
C:\tmp\cs>csc *.cs Microsoft (R) Visual C# .NET Compiler version 7.10.3052.4 for Microsoft (R) .NET Framework version 1.1.4322 Copyright (C) Microsoft Corporation 2001-2002. All rights reserved. C:\tmp\cs>dir ドライブ C のボリューム ラベルは IBM_PRELOAD です ボリューム シリアル番号は EC63-DD0E です C:\tmp\cs のディレクトリ 2003/09/30 11:19 <DIR> . 2003/09/30 11:19 <DIR> .. 2003/09/30 11:19 194 Client.cs 2003/09/30 11:19 4,096 Client.exe 2003/09/30 11:12 1,993 HelloService.cs 3 個のファイル 6,283 バイト 2 個のディレクトリ 13,719,879,680 バイトの空き領域
実行です。
C:\tmp\cs>Client hello!
Axis(Tomcat)側
2003/09/30 10:01:16 org.apache.struts.util.PropertyMessageResources情報: Initializing, config='org.apache.webapp.admin.ApplicationResources', retur nNull=true 2003/09/30 10:01:20 org.apache.coyote.http11.Http11Protocol start 情報: Coyote HTTP/1.1をポート 8080 で起動します 2003/09/30 10:01:20 org.apache.jk.common.ChannelSocket init 情報: JK2: ajp13 listening on /0.0.0.0:8009 2003/09/30 10:01:20 org.apache.jk.server.JkMain start 情報: Jk running ID=0 time=40/130 config=C:\app\jakarta-tomcat-4.1.27\bin\..\co nf\jk2.properties - Unable to find config file. Creating new servlet engine config file: /WEB-INF /server-config.wsdd call sayHello
動いてます〜〜〜
Visual Studio入れなくても、これぐらいの簡単な例はできちゃうってのが感動です。複雑なクラスなどは動かないとめんどくさいのでやりません。