テスターですが何か?

ホビープログラマ略してHPです

Seasar(S2Container.NET)を利用したサンプルの作成

leave a comment »

前回に続いてSeasar(S2Container.NET)のサンプルを作成していきます。

とにかくASP.NETでのサンプルがなくて困った...

———————————————————

1.Logic, DAOのインターフェース、実装クラスを作成

IS2SampleLogic.vb

   1: Public Interface IS2SampleLogic
   2:  
   3:     Function GetClickResultData(ByVal ServiceName As String) As List(Of ClickResult)
   4:  
   5: End Interface

S2SampleLogicImpl.vb

   1: Public Class S2SampleLogicImpl
   2:     Implements IS2SampleLogic
   3:  
   4:     Private S2SampleDao As IS2SampleDao
   5:  
   6:     Public Sub New(ByVal S2SampleDao As IS2SampleDao)
   7:  
   8:         Me.S2SampleDao = S2SampleDao
   9:  
  10:     End Sub
  11:  
  12:     Public Function GetClickResultData(ByVal ServiceName As String) As List(Of ClickResult) _
  13:                 Implements IS2SampleLogic.GetClickResultData
  14:  
  15:         Dim ClickResutList As List(Of ClickResult) = S2SampleDao.FindByServiceName(ServiceName)
  16:  
  17:         Return ClickResutList
  18:  
  19:     End Function
  20:  
  21: End Class

IS2SampleDao.vb

   1: Public Interface IS2SampleDao
   2:  
   3:     Function FindByServiceName(ByVal ServiceName As String) As List(Of ClickResult)
   4:  
   5: End Interface

S2SampleDaoImpl.vb  (Linq to Entitiesを使用しています)

   1: Public Class S2SampleDaoImpl
   2:     Implements IS2SampleDao
   3:  
   4:     Public Function FindByServiceName(ByVal ServiceName As String) As List(Of ClickResult) _
   5:         Implements IS2SampleDao.FindByServiceName
   6:  
   7:         Dim ClickResultEntity As New ReadMailClicker
   8:  
   9:         Dim Query = From tbl In ClickResultEntity.ClickResult _
  10:                     Where tbl.ServiceName = ServiceName _
  11:                     Order By tbl.ClickDate Descending _
  12:                      Select tbl
  13:  
  14:         Return Query.ToList
  15:  
  16:     End Function
  17:  
  18: End Class

 

2.App.diconを編集し、新規作成したS2Sample.diconをインクルードするように設定する。

App.dicon

   1: <?xml version="1.0" encoding="utf-8" ?>
   2: <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
   3: "http://www.seasar.org/dtd/components.dtd">
   4: <components>
   5:   <include path="S2Sample.dicon"/>
   6: </components>

S2Sample.dicon

   1: <?xml version="1.0" encoding="utf-8" ?>
   2: <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
   3: "http://www.seasar.org/dtd/components.dtd">
   4: <components>
   5:   <component name="S2SampleLogic" class="WebAppSample.S2SampleLogicImpl">
   6:     <arg>
   7:       <component class="WebAppSample.S2SampleDaoImpl" />
   8:     </arg>
   9:   </component>
  10: </components>

*.diconファイルのビルドアクションを「埋め込まれたりソース」にする。

001

 

3.Default.aspx.vbを以下のように記載

   1: Imports Seasar.Framework.Container
   2:  
   3: Partial Public Class _Default
   4:     Inherits System.Web.UI.Page
   5:  
   6:     'log4netオブジェクト
   7:     Public Shared log As log4net.ILog = log4net.LogManager.GetLogger( _
   8:                                             System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)
   9:  
  10:     Private Container As IS2Container
  11:  
  12:     Private S2SampleLogic As IS2SampleLogic
  13:  
  14:  
  15:     Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  16:  
  17:         Container = Factory.SingletonS2ContainerFactory.Container
  18:         S2SampleLogic = DirectCast(Container.GetComponent(GetType(IS2SampleLogic)), IS2SampleLogic)
  19:  
  20:     End Sub
  21:  
  22:     Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
  23:  
  24:         Dim ClickResultList As List(Of ClickResult) = S2SampleLogic.GetClickResultData(DropDownList1.SelectedValue)
  25:  
  26:         GridView1.DataSource = ClickResultList
  27:         GridView1.DataBind()
  28:  
  29:     End Sub
  30:  
  31: End Class

ここが一番悩みました。Page_LoadイベントでDIを実行しています。

ソース一式はこちらからどうぞ。(データベースがないと動作しませんが、コードを読む分には問題ないと思います)

http://cid-5549d6c74ffbb345.skydrive.live.com/embedrowdetail.aspx/.Public/S2ContainerSample/WebAppSample.zip

 

今後の予定

 ・DTOを利用して、複数クラスをDIする

 ・S2Unit.NETを利用したテストクラスの作成

Written by david9142

2009年4月12日 @ 5:36 PM

カテゴリー: VisualBasic

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。