Seasar DI Container with AOP
S2Container.NET TOPページへ

配布物の説明

s2container.net-version.zipを 解凍して出来たディレクトリの構成と説明です。(※ S2Container.NET 1.2.0-RC2以降)

ディレクトリ 説明
s2container.net/build S2Container.NETのリリースビルドされたアセンブリ
s2container.net/data Examplesで使用するDBのDDL等
s2container.net/lib S2Container.NETが参照しているアセンブリ等
s2container.net/source S2Container.NETのソースコード
www ドキュメント

S2Container.NETのセットアップ

S2Container.NETを利用する場合には以下のファイル(アセンブリ)への参照を追加する必要があります。 なお、buildディレクトリにあるSeasar.dllとja-JPディレクトリは同じディレクトリに配置してください。

  • s2container.net/build/Seasar.dll
  • s2container.net/lib/log4net.dll

次にアプリケーション構成ファイル(app.config)に必要であれば設定を行います。 アプリケーション構成ファイルについては以下のドキュメントを参照して下さい。

S2Container.NET リファレンス - アプリケーション構成ファイル

log4netのセットアップ

S2Container.NETでは Apache Logging Services projectのlog4net を使用してログを出力しています。 そのためlog4netの設定を行わないとS2Container.NETのログが出力されません。 以下にlog4netの設定の一例を示します。

log4netの設定ファイルの指定

AssemblyInfo等に以下の属性を指定します。
これはlog4netの設定ファイルにアプリケーション構成ファイル(app.config)を使うという設定です。

C#
[assembly: log4net.Config.XmlConfigurator(Watch=true)]
VB.NET
<Assembly: log4net.Config.XmlConfigurator(Watch:=True)>

アプリケーション構成ファイル(app.config)にlog4netの設定を追加する

以下にTraceAdapterを使用した例を示します。

<configuration>

    <configSections>
        <section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
        <section name="seasar" type="Seasar.Framework.Xml.S2SectionHandler, Seasar" />
    </configSections>
    
    <log4net>
        <appender name="TraceAppender" type="log4net.Appender.TraceAppender">
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%-5p %d [%t] %m%n" />
            </layout>
        </appender>

        <root>
            <level value="DEBUG" />
            <appender-ref ref="TraceAppender" />
        </root>

    </log4net>
    
    <seasar>
        <!-- 省略 -->
    </seasar>

</configuration>

以上でlog4netのセットアップは終了です。

しかしlog4netの設定を行ったアプリケーション構成ファイルを含む アセンブリ内で最初にlog4netでログを出力させずに、Seasarアセンブリで最初にログが出力されると log4netはSeasarアセンブリ内のlog4netの設定を探すため、ログが出力されません。

log4netの設定を行ったアプリケーション構成ファイルを持つアセンブリ内で最初にログを出力するか、 プログラム起動時に以下のようにアプリケーション構成ファイルを読み込む処理を追加して下さい。

C#
System.IO.FileInfo info = new System.IO.FileInfo(
   log4net.Util.SystemInfo.AssemblyShortName(
   System.Reflection.Assembly.GetExecutingAssembly())
   + ".exe.config"); // アセンブリがdllの場合は".dll.config"

log4net.Config.XmlConfigurator.Configure(
   log4net.LogManager.GetRepository(), info);
VB.NET
Dim info As New System.IO.FileInfo( _
   log4net.Util.SystemInfo.AssemblyShortName( _
   System.Reflection.Assembly.GetExecutingAssembly()) _
   + ".exe.config") ' アセンブリがdllの場合は".dll.config"

log4net.Config.XmlConfigurator.Configure( _
   log4net.LogManager.GetRepository(), info)

S2Unit.NETのセットアップ

S2Unit.NETはS2Container.NETを使ったテストを楽しく簡単に行うためのテスティングフレームワークです。

S2Unit.NETではMbUnit 2.3.0を使用しています。 事前にMbUnit 2.3.0 (このバージョンのMbUnitで無いと動作しません) をインストールしておく必要があります。

テストクラスはSeasar.Extension.Unit.S2TestCaseクラスを継承します。 S2TestCaseクラスはSeasar.Unit.dllに含まれてるので、テストコードを含むプロジェクトではSeasar.Unit.dllを参照に追加して下さい。

詳しくはS2Unit.NETのドキュメントを参照して下さい

Seasar.DynamicProxyのセットアップ

S2AOP.NETは標準でSystem.Runtime.Remoting.Proxies.RealProxyを用いて実装されていますが、 これをCastle.DynamicProxy を用いたSeasar.DynamicProxyに差し替えることができます。(1.2.0 for .NET 2.0以降) Seasar.DynamicProxyについては以下のドキュメントを参照して下さい。

AOP - Seasar.DynamicProxyによるAOP

Seasar.DynamicProxyを利用する場合には、以下のファイル(アセンブリ)への参照を追加する必要があります。

  • s2container.net/build/Seasar.DynamicProxy.dll
  • s2container.net/lib/Castle.DynamicProxy.dll
    (Seasar.DynamicProxy.dllから見て解決できる場所にあれば参照に追加する必要はありません)

以下のようにアプリケーション構成ファイル(App.config)にアセンブリ[Seasar.DynamicProxy]を追加します。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

    <configSections>
        <section name="seasar" type="Seasar.Framework.Xml.S2SectionHandler, Seasar" />
    </configSections>

    <seasar>
        <configPath>App.dicon</configPath>
        <assemblys>
            <assembly>Seasar.DynamicProxy</assembly>
        </assemblys>
    </seasar>

</configuration>

以下のように、Seasar.Framework.Aop.Impl.DynamicAopProxyAspectWeaverクラスをdiconファイルに登録します。 他のAspectを適用したいComponentより、DynamicAopProxyAspectWeaverの方が先に解決できるように、 記述場所に注意して下さい。

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
"http://www.seasar.org/dtd/components.dtd">
<components>

    <component class="Seasar.Framework.Aop.Impl.DynamicAopProxyAspectWeaver" />

    ・・・
    
</components>

以上でSeasar.DynamicProxyのセットアップは完了です。Seasar.DynamicProxyを用いたAOP実装に差し替えられました。

Examples

Examplesを実行するには、Visual Studioでs2container.net/source/Seasar.slnを開き、 Seasar.Examplesプロジェクトをスタートアッププロジェクトに設定して下さい。 実行すると、ExamplesExplorerが起動しS2Container.NETの機能を体験することができます。

Examplesでは一部、SQL Server 2000(もしくは MSDE 2000)を必要とする機能があります。 その機能を試す場合には、s2container.net/data/setUpDemo.batを実行し、Examples用のデータベースを作成します。 そして、Seasar.ExamplesのTx.diconとDTCTx.diconのデータベースへの接続文字列を お使いの環境に合わせて変更して下さい。