2009-11-01から1ヶ月間の記事一覧

System.Windows.Forms.NativeWindowによる、メッセージ専用ウインドウの作成

サンプルコードNativeWindowMessageOnly.zip NativeWindowクラスは、ウインドウ処理の基本となる処理をまとめたクラスで、ウインドウメッセージ(SendMessage,PostMessage)とウインドウプロシージャ(WndProc)の処理をカプセル化するための処理が集まって…

System.Windows.Forms.NativeWindowによる、ウインドウメッセージの横取り(サブクラス化)

サンプルコードNativeWindowSubClass.zip NativeWindowクラスは、ウインドウ処理の基本となる処理をまとめたクラスで、ウインドウメッセージ(SendMessage,PostMessage)とウインドウプロシージャ(WndProc)の処理をカプセル化するための処理が集まっていま…

プロセスレベルのグローバル変数(Singleton, Shared, Module)と、スレッドレベルのグローバル変数(ThreadStatic=スレッドローカルストレージ)

サンプルコードGlobalInformation.zip .Netでのグローバル変数の持ち方について考えてみます。グローバル変数は、変数の生存期間(ライフタイム)と適用範囲(スコープ)を最小にするという原則に従って極力使わないようにするべきものですが、逆に言えば生…

属性(System.Attribute)を作成して、属性を付けたクラスとメソッドを列挙する。

サンプルコード:LoadAssembley-2.zip Visual Studio 2008 でXMLコメントを打つと以下のように出力されます。 ''' ''' ''' ''' Public Shared Sub Main()Summary(要約)やRemarks(注釈)は記載できますが、プログラムを書いた人(Author)の情報を入力する…

DLL(.Net クラスライブラリ=アセンブリ) を実行時に動的ロードする。(System.Reflection.Assembly.LoadFrom)

サンプルコードLoadAssembley.zip .Net で作成したDLLを使用するためには、使用したいDLL(アセンブリ)を参照設定して使用します。参照設定したDLLはアプリ起動時にDLLとのリンクを解決するために、メモリ上にロードされ、クラスやメソッドのエントリーポイ…

.Net Remoting をスケーラブルにするための9つのルール

原文は、thinktecureのサイトの記事です。 http://www.thinktecture.com/resourcearchive/net-remoting-faq/remotingusecasesスケールアウト可能な構成で.Net Remotingを使用するための9つのルールというトピックです。補足説明付きで訳してみます。 Use on…

XMLシリアライズできないケースに対応する。Dictionaryクラスをシリアライズする。IXmlSerializable。

アトリビュートを付与しているインスタンスであればシリアライズできますが、インスタンスによっては失敗するケースがあります。サンプルコードXMLSerializerTest.zip ■Dictinaryクラス System.InvalidOperationException はハンドルされませんでした。 Mess…

WCFと.Net Remotingを混在させる

WCFは.Net Remotingの後継技術ですが、同一プロセスで.Net RemotingサービスとWCFサービスをホストすることが出来ます。(但し、ポート番号を変更する必要はあります。)過去に.Net Remotingで作成したシステムを部分的拡張する場合にWCFを利用する。という…

WCF入門-10。System.Diagnostics.TraceListenerを継承してカスタムトレースリスナを作成する。

サンプルコードWCFService-10.zip WCFは通信のリクエスト毎にスレッドを立ち上げてクライアントの要求に答えるのでトレースリスナはスレッドセーフである必要があります。System.Diagnostics.XmlWriterTraceListenerはスレッドセーフではないので、カスタム…

WCF入門-09。トレースログを出力する。(System.ServiceModel.MessageLogging)

サンプルコードWCFService-09.zip WCFでは、アプリケーション構成ファイル(app.config)に、トレースログ出力の設定をするだけでWCFの処理の追跡・クライアントサーバー間でやりとりされるSOAPメッセージをログに出力することができます。通信データをログに…

WCF入門-08。コントラクトを理解する。(サービスコントラクト、オペレーションコントラクト、データコントラクト、メッセージコントラクト、エラーコントラクト)

WCFでは、クライアントとサーバのインタフェースにあたる部分を「コントラクト」と呼んでいます。英語で「Contract」、日本語訳で「契約」です。クライアントとサーバ間での契約ということで、どのようなインタフェースで渡すかという取り決め。ということで…

WCF入門-06。サービス参照の追加でWSDLからクライアントのアプリケーション構成ファイルとカスタムクラスを作成する。

WSDLをサービス参照の設定で取り込むサンプルコードWCFService-06.zip WCFのサーバーをアプリケーション構成ファイルで構成する方法と、公開するサービスをWSDLで公開する方法を見てきました。今回は公開されたWSDLから、クライアントがサーバに接続するため…

WCF入門-05。WSDLでサービスのインタフェースを公開する。

コードを使用してWSDLを公開する。WCFService-05.zip WCFで作成したサービスはWEBサービスのインタフェースの標準規格であるWSDL(Web Services Description Language)で情報を公開することが出来ます。作成したアプリを起動して、ベースアドレスのURLに対し…

WCF入門-04。アプリケーション構成ファイル(app.config)を使用してWCFを構成する。

アプリケーション構成ファイルを使用してWCFを構成します。WCFService-04.zip アプリケーション構成ファイルを使用すると、WCFのサービスモデルを構成する要素(アドレス・コントラクト・バインディング・ビヘイビア)を外部ファイルに記述することが出来ま…

WCF入門-03。基本構成のWCFサンプルコード。

WCFの基本的な構成のサンプルコードを作ります。WCFService.zip 以下の3つのプロジェクトを作成し、WCFシステムを構成していきます。 WCFサーバー(コンソールアプリケーション:.exe) WCFクライアント(ウインドウアプリケーション:.exe) WCFインタフェース(…

WCF入門-02。WCFのエンコードとフォーマットを理解する。

WCFでクライアントからサーバへ、サーバからクライアントで転送するデータのエンコード(符号化)は、以下の3種類から選択することができます。 テキスト(XML1.0) バイナリ(Base64BinaryEncoding) MTOM(SOAP Message Transmission Optimization Mechanism) …

WCF入門-07。クライアントのアプリケーション構成ファイルを作成する。

サンプルコード。WCFService-07.zip [サービス参照の追加]を使うとWSDLで公開されたウェブサービスにアクセスするためのアプリケーション構成ファイルとカスタムクラスを作成できますが、WCFサーバーを自作している場合は、WCFインタフェースのクラスライブ…