UserGuide_RichClient.ja - OpenTouryoProject/OpenTouryo GitHub Wiki
2026幎7ææŽæ°ç
- Open æ£æ¢ãçšããã¢ããªã±ãŒã·ã§ã³éçºãè¡ããSEã»éçºè
æ¬ããã¥ã¡ã³ãã¯ããªããã¯ã©ã€ã¢ã³ãçšæ©èœã®å©ç𿹿³ã«ã€ããŠçºããŠããŸãã
æ¬ããã¥ã¡ã³ãã«èšèŒã®äŒç€Ÿåã»åååã¯ãå瀟ã®åæšãŸãã¯ç»é²åæšã§ãã
å³äžã®å¡äŸïŒèµ€æ ïŒå®è£ å¿ é ãèµ€æ (ç Žç·)ïŒå®è£ ã«æ³šæãå¿ èŠãéæåïŒä»»æã®å®è£ ãå¯èœã
1. Windows Form çš På±€ããŒã¹ã¯ã©ã¹
- 1.1 ãç»é¢ã³ãŒã芪ã¯ã©ã¹ïŒãã®æºåïŒçºãè åãïŒ
- 1.2 ãç»é¢ã³ãŒãã¯ã©ã¹ãã®éçºïŒéçºè åãïŒ
- 1.3 ã«ã¹ã¿ã ã³ã³ãããŒã« ãã³ãã¬ãŒã
4. C/S 2å±€ã¢ããªã±ãŒã·ã§ã³
6. Silverlight 飿ºçš æ±çš DTO
Windows Form çš På±€ããŒã¹ã¯ã©ã¹ã§ãããç»é¢ã³ãŒã芪ã¯ã©ã¹ïŒãã«ã¯ã次ã«ç€ºã På±€ã®å ±éåŠçãå®è£ ã§ããŸãã
衚 1.1ããç»é¢ã³ãŒã芪ã¯ã©ã¹ïŒãã«å®è£ ã§ãã På±€ã®å ±éåŠç
| é çª | åŠç | ã¡ãœãã | 説æé |
|---|---|---|---|
| ïŒ | åæåŠç (ããŒãž ããŒãåŠç) | UOC_CMNFormInitïŒã«ã¹ã¿ã èªèšŒãæš©éãã§ãã¯ãéå¡ãã§ãã¯ãããŒãž ã¿ã€ãã«ã®èšå®ãã¢ã¯ã»ã¹ ãã°ã®åºå ,etc.ïŒ | 1.1.1 é |
| ïŒ | På±€ã€ãã³ãåŠçã®ååŸåŠçïŒéå§åŠç | UOC_PreActionïŒåŠçæéã®æž¬å®ãã¢ã¯ã»ã¹ ãã°ã®åºå ,etc.ïŒ | 1.1.2 é |
| ïŒ | çµäºåŠç | UOC_AfterActionïŒåŠçæéã®æž¬å®ãã¢ã¯ã»ã¹ ãã°ã®åºå ,etc.ïŒ | 1.1.2 é |
| ïŒ | äŸå€åŠç | UOC_ABENDïŒã¡ãã»ãŒãžç·šéãå ±éã¡ãã»ãŒãžã®è¡šç€ºãã¢ã¯ã»ã¹ ãã°ããšã©ãŒ ãã°åºå ,etc.ïŒ | 1.1.3 é |
åºæ¬çã«ãç»é¢ã³ãŒã芪ã¯ã©ã¹ïŒã㯠1 ã€ã®ã·ã¹ãã ã«å¯Ÿã㊠1 ã€äœæããŸãããµã³ãã«ã¯ ïœ\root\programs\C#\Samples\WS_sample\WSClient_sample ã«ãããŸã (ãMyBaseControllerWinãã¯ã©ã¹ãåèã«ã§ããŸã)ã
#region using
// Systemïœ
using System;
ïœ
using Touryo.Infrastructure.Business.Util;
#endregion
namespace Touryo.Infrastructure.Business.RichClient.Presentation
{
/// <summary>ç»é¢ã³ãŒã芪ã¯ã©ã¹ïŒïŒWindowã¢ããªã±ãŒã·ã§ã³ïŒ</summary>
/// <remarks>ïŒãªãŒããŒã©ã€ãããŠïŒèªç±ã«å©çšã§ããã</remarks>
public class MyBaseControllerWin : BaseControllerWin
{
// âabstractã ãšVSãã¶ã€ããæ©èœããªãã®ã§å€ããã
/// <summary>ãŠãŒã¶æ
å ±</summary>
/// <remarks>ç»é¢ã³ãŒã芪ã¯ã©ã¹ïŒãç»é¢ã³ãŒã ã¯ã©ã¹ããå©çšããã</remarks>
protected static MyUserInfo UserInfo = new MyUserInfo("ïŒ", Environment.MachineName);
/// <summary>ãã°åºåã®å¯åŠãã©ã°</summary>
/// <remarks>
/// èªåãããã€ç°å¢ã§ã¯ãã°åºåãåºæ¥ãªã
/// ããšãããã®ã§ããã®å Žåã«å©çšããããšã
/// </remarks>
protected static bool CanOutPutLog = true;
/// <summary>æ§èœæž¬å®</summary>
private PerformanceRecorder perfRec;å³ 1.1ããç»é¢ã³ãŒã芪ã¯ã©ã¹ïŒãã®å®è£ ã®ãã³ãã¬ãŒã
â» ãMyBaseControllerWinãã¯ã©ã¹ã«ã¯å ±éç㪠UI å®è£ ã远å ããããšãå¯èœã§ããããç»é¢ã³ãŒã芪ã¯ã©ã¹ïŒãã®ãBaseControllerWinãã¯ã©ã¹ã abstract ã«æå®ãããŠãããã VS ãã¶ã€ãã¯äœ¿çšã§ããªãã®ã§æ³šæããŸãã
ãããŒãž ããŒãåŠçãã¯å®è£ å¿ é ã®åŠçã§ãããUOC_CMNFormInitãã¡ãœããããç»é¢ã³ãŒã芪ã¯ã©ã¹ïŒãã§ãªãŒããŒã©ã€ãããã«ã¹ã¿ã èªèšŒãæš©éãã§ãã¯ã»éå¡ãã§ãã¯ãããŒãž ã¿ã€ãã«ã®èšå®ãã¢ã¯ã»ã¹ ãã°ã®åºå ,etc. ãå®è£ ããŸãã
/// <summary>ããŒãžããŒãã®UOCã¡ãœãã</summary>
/// <remarks>å®è£
å¿
é </remarks>
protected override void UOC_CMNFormInit()
{
// ãã©ãŒã åæåïŒååããŒãïŒæã«å®è¡ããåŠçãå®è£
ãã
// TODO:
}å³ 1.1.1ããããŒãž ããŒãåŠçãã®å®è£ äŸ
ãUOC_PreActionããUOC_AfterActionãã¡ãœããããç»é¢ã³ãŒã芪ã¯ã©ã¹ïŒãã§ãªãŒããŒã©ã€ãããåŠçæéã®æž¬å®ãã¢ã¯ã»ã¹ ãã°ã®åºå ,etc. ãå®è£ ããŸãã
#region ãã¬ãŒã ã¯ãŒã¯ã®å¯Ÿè±¡ã³ã³ãããŒã«ã€ãã³ãã®éå§ çµäºåŠçã®UOCã¡ãœãã
/// <summary>ãã¬ãŒã ã¯ãŒã¯ã®å¯Ÿè±¡ã³ã³ãããŒã«ã€ãã³ãã®éå§åŠçãå®è£
</summary>
/// <param name="fxEventArgs">ã€ãã³ããã³ãã©ã®å
±éåŒæ°</param>
protected override void UOC_PreAction(FxEventArgs fxEventArgs)
{
// ãã¬ãŒã ã¯ãŒã¯ã®å¯Ÿè±¡ã³ã³ãããŒã«ã€ãã³ãã®éå§åŠçãå®è£
ãã
// TODO:
}
/// <summary>ãã¬ãŒã ã¯ãŒã¯ã®å¯Ÿè±¡ã³ã³ãããŒã«ã€ãã³ãã®çµäºåŠçãå®è£
</summary>
/// <param name="fxEventArgs">ã€ãã³ããã³ãã©ã®å
±éåŒæ°</param>
protected override void UOC_AfterAction(FxEventArgs fxEventArgs)
{
// ãã¬ãŒã ã¯ãŒã¯ã®å¯Ÿè±¡ã³ã³ãããŒã«ã€ãã³ãã®çµäºåŠçãå®è£
ãã
// TODO:
}
#endregionå³ 1.1.2ããPå±€ã€ãã³ãåŠçã®éå§ã»çµäºåŠçãã®å®è£ äŸ
以äžã® 3 ã€ã®ãUOC_ABENDãã¡ãœããããç»é¢ã³ãŒã芪ã¯ã©ã¹ïŒãã§ãªãŒããŒã©ã€ãããŸãã
衚 1.1.3ããç»é¢ã³ãŒã芪ã¯ã©ã¹ïŒãã«å®è£ ã§ããã3 ã€ã®ãUOC_ABENDãã¡ãœãã
| é çª | 察å¿ããäŸå€ | ã¡ãœãã ã·ã°ãã㣠|
|---|---|---|
| ïŒ | æ¥åäŸå€ | UOC_ABEND(BusinessApplicationException baEx, RcFxEventArgs rcFxEventArgs) |
| ïŒ | ã·ã¹ãã äŸå€ | UOC_ABEND(BusinessSystemException bsEx, RcFxEventArgs rcFxEventArgs) |
| ïŒ | ãã®ä»ãäžè¬çãªäŸå€ | UOC_ABEND(Exception ex, RcFxEventArgs rcFxEventArgs) |
- æ¥åäŸå€ã®äŸå€åŠçïŒåŠçåŸã«ãªã¹ããŒããªãããã¡ãã»ãŒãžç·šéããå ±éã¡ãã»ãŒãžã®è¡šç€ºããå®è£ ã§ããã
// <summary>æ¥åäŸå€çºçæã®åŠçãå®è£
</summary>
/// <param name="baEx">BusinessApplicationException</param>
/// <param name="rcFxEventArgs">ã€ãã³ããã³ãã©ã®å
±éåŒæ°</param>
protected override void UOC_ABEND(BusinessApplicationException baEx, RcFxEventArgs rcFxEventArgs)
{
// æ¥åäŸå€çºçæã®åŠçãå®è£
// TODO:
}å³ 1.1.3-1ããæ¥åäŸå€ã®äŸå€åŠçãã®å®è£ äŸ
- ã·ã¹ãã äŸå€ã®äŸå€åŠçïŒåŠçåŸã«ãã·ã¹ãã äŸå€ãããªã¹ããŒãããããšã©ãŒ ãã°åºåããå®è£ ã§ããã
/// <summary>ã·ã¹ãã äŸå€çºçæã®åŠçãå®è£
</summary>
/// <param name="bsEx">BusinessSystemException</param>
/// <param name="rcFxEventArgs">ã€ãã³ããã³ãã©ã®å
±éåŒæ°</param>
protected override void UOC_ABEND(BusinessSystemException bsEx, RcFxEventArgs rcFxEventArgs)
{
// ã·ã¹ãã äŸå€çºçæã®åŠçãå®è£
// TODO:
}å³ 1.1.3-2ããã·ã¹ãã äŸå€ã®äŸå€åŠçãã®å®è£ äŸ
- ãã®ä»ãäžè¬çãªäŸå€ã®äŸå€åŠçïŒåŠçåŸã«ãªã¹ããŒãããããšã©ãŒ ãã°åºåããå®è£ ã§ããã
/// <summary>äžè¬çãªäŸå€çºçæã®åŠçãå®è£
</summary>
/// <param name="ex">äŸå€ãªããžã§ã¯ã</param>
/// <param name="rcFxEventArgs">ã€ãã³ããã³ãã©ã®å
±éåŒæ°</param>
protected override void UOC_ABEND(Exception ex, RcFxEventArgs rcFxEventArgs)
{
// äžè¬çãªäŸå€çºçæã®åŠçãå®è£
// TODO:
}å³ 1.1.3-3ãããã®ä»ãäžè¬çãªäŸå€ã®äŸå€åŠçãã®å®è£ äŸ
æ¬ãã¬ãŒã ã¯ãŒã¯ã® På±€ã€ãã³ãåŠçæ©èœã¯ãäžèšã³ã³ãããŒã«ã®ã€ãã³ã (5 ã€) ã«å¯Ÿå¿ããŠããŸã [1]ã
衚 1.1.4ãPå±€ã€ãã³ãåŠçæ©èœã«å¯Ÿå¿ããã³ã³ãããŒã« ã€ãã³ã
| é çª | ã³ã³ãããŒã« | ã€ãã³ã |
|---|---|---|
| ïŒ | ãã¿ã³ (é ããã¿ã³å«ã) | ã¯ãªã㯠ã€ãã³ã |
| ïŒ | ãã¯ãã£ãŒããã¯ã¹ | |
| ïŒ | ã³ã³ãããã¯ã¹ | ã»ã¬ã¯ã ã€ã³ããã¯ã¹ ãã§ã³ãž ã€ãã³ã |
| ïŒ | ãªã¹ãããã¯ã¹ | |
| ïŒ | ã©ãžãªãã¿ã³ | ãã§ã㯠ãã§ã³ãž ã€ãã³ã |
ã€ãã³ãã远å ããã«ã¯ãæ¥åãã¬ãŒã ã¯ãŒã¯ (Business) åå空éã®ãç»é¢ã³ãŒã芪ã¯ã©ã¹ïŒãã« På±€ã€ãã³ãåŠçæ©èœã®æ¡åŒµåŠçãå®è£ ããŸãããã ããªããã¯ã©ã€ã¢ã³ãã¯ã€ãã³ãæ°ãå€ãã®ã§ã.NET æšæºã®ã€ãã³ããã³ãã©ããé ããã¿ã³ (HiddenButton) ã® DoClick ã¡ãœããã§ Click ã€ãã³ããçºçããããªã©ã®å·¥å€«ãå¿ èŠã«ãªããŸã (ãã«ããã«ã»ã€ãã³ãããã«ããã£ã¹ãã»ã€ãã³ãçã«å¯Ÿå¿ããæ¹æ³ãšããŠãå©çšã§ããŸã)ããŸããç»é¢ã³ãŒã芪ã¯ã©ã¹ïŒãã®ãããŒãž ããŒãåŠçããããã€ãã³ã远å åŠçãã®ãaddControlEventãã¡ãœãããåŒã³åºããŸãã
å³ 1.1.4ããã€ãã³ã远å åŠçãããç»é¢ã³ãŒã芪ã¯ã©ã¹ïŒãã®ãããŒãž ããŒãåŠçãããåŒã³åºã
ãaddControlEventãã¡ãœããã«å®è£ ããåŠçã¯ãçºãè ç·š 7 ç« ïŒãPå±€ã€ãã³ãåŠç察å¿ã³ã³ãããŒã« (ã€ãã³ã) ã®è¿œå ããšåæ§ã®åŠçæ¹åŒã§ãã
Windows Form ã®ãç»é¢ã³ãŒã ã¯ã©ã¹ãããããžã§ã¯ãã«è¿œå ããŠåŠçãå®è£ ããŸãã
// Systemïœ
using System;
ïœ
using ProjectName.Infrastructure.Business.Util;
public partial class Form1 : MyBaseControllerWin
{
}å³ 1.2ããç»é¢ã³ãŒã ã¯ã©ã¹ãã®å®è£ ã®ãã³ãã¬ãŒã
- ããŒãž ããŒãåŠçãå®è£ ããïŒãUOC_FormInitãã¡ãœããããç»é¢ã³ãŒã ã¯ã©ã¹ãã§ãªãŒããŒã©ã€ãããã
/// <summary>ããŒãžããŒãã®UOCã¡ãœããïŒåå¥ïŒååããŒãïŒ</summary>
/// <remarks>å®è£
å¿
é </remarks>
protected override void UOC_FormInit()
{
// ãã©ãŒã åæåïŒååããŒãïŒæã«å®è¡ããåŠçãå®è£
ãã
// TODO:
}å³1.2.1 ãããŒãž ããŒãåŠçãã®å®è£ äŸ
-
ãã³ã³ãããŒã«ã®ã€ãã³ãåŠçããå®è£
ããïŒ
- Windows Form äžã«ã³ã³ãããŒã« (
[prefix]ä»»æã®æåå) ãé 眮ãã (ãã¬ãã£ãã¯ã¹ã¯ ASP.NET ç På±€ãšåæ§ã« app.config ã«å®çŸ©)ãïŒå³1.2.2-1ïŒ - ãç»é¢ã³ãŒã ã¯ã©ã¹ãäžã« UOC ã¡ãœãã
UOC_[prefix]ä»»æã®æåå_Clickãå®è£ ãããã€ãã³ã ãã³ãã©ã®ã·ã°ããã£ã¯protected string ã€ãã³ã ãã³ãã©å(RcFxEventArgs rcFxEventArgs)ãšããã
- Windows Form äžã«ã³ã³ãããŒã« (
<!-- ã³ã³ãããŒã«ã®ãã¬ãã£ãã¯ã¹ -->
<add key="FxPrefixOfButton" value="btn"/>
<add key="FxPrefixOfPictureBox" value="pbx"/>
<add key="FxPrefixOfComboBox" value="cbb"/>
<add key="FxPrefixOfListBox" value="lbx"/>
<add key="FxPrefixOfRadioButton" value="rbn"/>å³1.2.2â1 ã³ã³ãããŒã«ã®ãã¬ãã£ãã¯ã¹ã®å®çŸ©äŸ
protected void UOC_btnButton_Click(RcFxEventArgs rcFxEventArgs)
{
// TODO:
}å³1.2.2â2 ãç»é¢ã³ãŒã ã¯ã©ã¹ãäžã®ã³ã³ãããŒã«ã®ã€ãã³ãã®å®è£ äŸ
protected void UOC_testControl_btnButton_Click(RcFxEventArgs rcFxEventArgs)
{
// TODO:
}å³1.2.2â3 ããŠãŒã¶ ã³ã³ãããŒã«ãäžã®ã³ã³ãããŒã«ã®ã€ãã³ãã®å®è£ äŸ
ã«ã¹ã¿ã ã³ã³ãããŒã« ãã³ãã¬ãŒãã [C#\Frameworks\Infrastructure\CustomControl\RichClient] 以äžã«çšæããŠããã®ã§ããããã«ã¹ã¿ãã€ãºããŠãããžã§ã¯ãçšã®ã«ã¹ã¿ã ã³ã³ãããŒã«ãäœæã§ããŸãã察象㯠TextBox ãš MaskedTextBox ã® 2 ã€ã§ããã§ãã¯ã»ç·šéåŠçã®ã«ã¹ã¿ã å®è£
ãå«ã¿ãŸãã䜿çšãµã³ãã«ã¯ [\C#\Samples\2CS_sample\CustCtrl_sample] ã§ããVS ã®ãã¶ã€ã³ ã¿ã€ã ããããã£ã倿Žããã ãã§ããã§ãã¯ã»ç·šéåŠçã®åäœãã«ã¹ã¿ãã€ãºã§ããŸãã
å³ 1.3-1ãåã«ã¹ã¿ã ã³ã³ãããŒã«ã®ãã¶ã€ã³ ã¿ã€ã ããããã£
衚 1.3ãåã«ã¹ã¿ã ã³ã³ãããŒã«ã®ãã¶ã€ã³ ã¿ã€ã ããããã£
| é çª | ãããã㣠| 説æ | åè |
|---|---|---|---|
| ïŒ | CheckRegExp | æ£èŠè¡šçŸãã§ã㯠| TextBoxïŒMaskedTextBox å ±é |
| ïŒ | CheckProhibitedChar | çŠåæåãã§ã㯠| |
| ïŒ | CheckType | ãã§ãã¯ã¿ã€ã (IsIndispensabile å¿ é ïŒIsHankaku åè§ïŒIsZenkaku å šè§ïŒIsNumeric æ°å€ïŒIsKatakana çä»®åïŒIsHanKatakana åè§çä»®åïŒIsHiragana 平仮åïŒIsDate æ¥ä») | |
| ïŒ | EditPadding | æååãç·šé | TextBox ã®ã¿ |
| ïŒ | EditDigitsAfterDP | å°æ°ç¹ä»¥äž x æ¡ç·šé | |
| ïŒ | EditAddFigure | æ¡åºåãç·šé (PadDir ãããæ¹åïŒPadChar ãããæå) | |
| ïŒ | Mask_Editing | ç·šéäžã«é©çšããããã¹ã¯ | MaskedTextBox ã®ã¿ |
| ïŒ | Text2 | Mask ãé©çšããå€ïŒãã¹ã¯ãé€ããå€ãååŸ | TextBoxïŒMaskedTextBox |
| ïŒ | Text3 | Mask_Editing ãé©çšããå€ãååŸ | MaskedTextBox ã®ã¿ |
ã«ã¹ã¿ã ã³ã³ãããŒã« ãã³ãã¬ãŒãã«ã¯ãã€ãã³ã (EnterïŒç·šééå§ ïŒ å
šéžæãValidatingïŒåé
ç®ãã§ãã¯ãValidatedïŒç·šéçµäº) ãšã¡ãœãã (ValidateãGetDateTimeãGetDecimalãGetDoubleãGetFloatãGetInt16ïŒ32ïŒ64) ãåã蟌ãŸããŠããŸããäžæ¬ãã§ãã¯åŠç㯠CmnCheckFunction.HasErrors ã¡ãœããã䜿çšããŠå®¹æã«å®è£
ã§ãããã§ã㯠ãšã©ãŒæ
å ±ã¯ List<CheckResult> ãšããŠè¿åŽãããŸãã
/// <summary>äžæ¬ãã§ãã¯ã®ãã¹ã</summary>
private void button1_Click(object sender, EventArgs e)
{
string ret = "";
List<CheckResult> lcr = new List<CheckResult>();
if (CmnCheckFunction.HasErrors(this, lcr))
{
foreach (CheckResult cr in lcr)
{
ret += cr.CtrlName + "\r\n";
foreach (string checkErrorInfo in cr.CheckErrorInfo)
{
ret += "ã»" + checkErrorInfo + "\r\n";
}
ret += "\r\n";
}
}
MessageBox.Show(ret);
}å³1.3â2 äžæ¬ãã§ãã¯åŠçã®å®è£ æ¹æ³
éåæåŒã³åºã㯠Windows Formsã»WPF ã®åæ¹ã®ãªããã¯ã©ã€ã¢ã³ã ã¢ããªã±ãŒã·ã§ã³ããå©çšã§ããŸãã
衚 2.1ããéåæåŒåºã³ãŒã芪ã¯ã©ã¹ïŒãã«å®è£ ã§ããå ±éåŠç
| é çª | åŠç | ã¡ãœãã | 説æé |
|---|---|---|---|
| ïŒ | éåæåŒåºåŠçã®ååŸåŠçïŒéå§åŠç | UOC_PreïŒåŠçæéã®æž¬å®ãã¢ã¯ã»ã¹ ãã°ã®åºå ,etc.ïŒ | 2.1.1 é |
| ïŒ | çµäºåŠç | UOC_AfterïŒåŠçæéã®æž¬å®ãã¢ã¯ã»ã¹ ãã°ã®åºå ,etc.ïŒ | 2.1.1 é |
| ïŒ | äŸå€åŠç | UOC_ABENDïŒã¢ã¯ã»ã¹ ãã°ããšã©ãŒ ãã°åºå ,etc.ïŒ | 2.1.2 é |
| ïŒ | æçµåŠç | UOC_FinallyïŒçµäºåŠç ,etc.ïŒ | 2.1.2 é |
ãµã³ãã«ã¯ãMyBaseAsyncFuncãã¯ã©ã¹ãåèã«ã§ããŸãã
#region using
// Systemïœ
using System;
ïœ
using Touryo.Infrastructure.Business.Util;
#endregion
namespace Touryo.Infrastructure.Business.RichClient.Asynchronous
{
/// <summary>
/// éåæã³ãŒã芪ã¯ã©ã¹ïŒ
/// </summary>
public class MyBaseAsyncFunc : BaseAsyncFunc
{
/// <summary>ã³ã³ã¹ãã©ã¯ã¿</summary>
/// <param name="_this">WPFãWinFormã®èŠçŽ </param>
public MyBaseAsyncFunc(object _this) : base(_this) { }
ã»ã»ã»å³ 2.1ããéåæåŒåºã³ãŒã芪ã¯ã©ã¹ïŒãã®å®è£ ã®ãã³ãã¬ãŒã
- éå§ã»çµäºãå®è£ ããïŒå³2.1.1ïŒ
/// <summary>éå§åŠç</summary>
protected override void UOC_Pre()
{
// éå§åŠçãå®è£
// TODO:
}
/// <summary>çµäºåŠç</summary>
protected override void UOC_After()
{
// çµäºåŠçãå®è£
// TODO:
}å³ 2.1.1ããéåæåŒåºã³ãŒã芪ã¯ã©ã¹ïŒãã®éå§ã»çµäºåŠç
- äŸå€ãæçµåŠçãå®è£ ããïŒæçµåŠç (UOC_Finally ã¡ãœãã) ã¯ãã¹ã¿ãŒãåŠç (StartãStartByThreadPool ã¡ãœãã) ãšå¯Ÿå¿ãããŠãã¹ã¬ããæ°ç®¡çããç»é¢ããã¯ç®¡çããè¡ããŸããã¹ã¬ããæ°ã¯ app.config ã«å®çŸ©ããŸãã
/// <summary>äŸå€åŠç</summary>
protected override void UOC_ABEND(Exception ex)
{
// äŸå€åŠçãå®è£
// TODO:
}
/// <summary>æçµåŠç</summary>
protected override void UOC_Finally()
{
// çµäºåŠçãå®è£
// TODO:
}å³ 2.1.2-1ããéåæåŒåºã³ãŒã芪ã¯ã©ã¹ïŒãã®äŸå€ã»æçµåŠç
<add key="FxMaxThreadCount" value="3"/>å³2.1.2â2ã¹ã¬ããæ°ã®å®çŸ©äŸ
â» ãã®åŠçéšã¯ã¯ãªãã£ã«ã«ã»ã¯ã·ã§ã³ã§ãããéåæã¹ã¬ããåŽã§å®è¡ãããæçµåŠç (UOC_Finally) å ã®ã¯ãªãã£ã«ã«ã»ã¯ã·ã§ã³ã§ã¯ãControl.Invoke ã Dispatcher.Invoke ãªã©ã®äž»ã¹ã¬ããçµç±ã®åæåŒã³åºããè¡ããªãããæ³šæããŸã (ãããããã¯ãé²ããã)ã
éåæåŒã³åºãåŠçã®å®è£ ç®æã¯ãWindows Forms ã® Form ã WPF ã® Window ã®ã€ãã³ããã³ãã©äžã«ãªããŸãã
/// <summary>éåæå®è¡</summary>
private void UOC_btnASync_Click(RcFxEventArgs rcFxEventArgs)
{
MyBaseAsyncFunc af = new MyBaseAsyncFunc(this);
// éåæåŠçæ¬äœã»ç¡å颿°ããªã²ãŒã
af.AsyncFunc = delegate(object param)
{
ã»ã»ã»æéã®æããåŠçïŒå¯ã¹ã¬ãã ã§å®è¡ãããïŒã»ã»ã»
// é²æå ±å
af.ExecChangeProgress("é²æå ±åã«æž¡ãåŒæ°");
ã»ã»ã»æéã®æããåŠçïŒå¯ã¹ã¬ãã ã§å®è¡ãããïŒã»ã»ã»
return "çµãã";
};
// é²æå ±åã»ç¡å颿°ããªã²ãŒã
af.ChangeProgress = delegate(object param)
{
ã»ã»ã»é²æè¡šç€ºåŠçïŒäž»ã¹ã¬ãã ã§å®è¡ãããïŒã»ã»ã»
};
// çµæèšå®ã»ç¡å颿°ããªã²ãŒã
af.SetResult = delegate(object retVal)
{
if (retVal is Exception)
{
// äŸå€çºçæ
ã»ã»ã»äŸå€æ
å ±è¡šç€ºåŠçïŒäž»ã¹ã¬ãã ã§å®è¡ãããïŒã»ã»ã»
}
else
{
ã»ã»ã»çµæè¡šç€ºåŠçïŒäž»ã¹ã¬ãã ã§å®è¡ãããïŒã»ã»ã»
// ãã©ãŒã«ã¹å¶åŸ¡ãããå Žåã
this.BeginInvoke(new MethodInvoker(this.SetForcus));
}
};
// éåæåŠçãéå§ãããã
if (af.Start())
{
// éåæåŠçããã¥ãŒã€ã³ã°ãããã
// BaseAsyncFunc.ThreadCountã§ã¹ã¬ããæ°ã確èªã§ããã
}
else
{
// éåæã¹ã¬ãããæå€§æ°ã«éããã
// BaseAsyncFunc.ThreadCountã§ã¹ã¬ããæ°ã確èªã§ããã
}
}å³ 2.2ãéåæåŒåºãåŠçã®å®è£ äŸ
â» C# ã®å¿å颿° (ã¯ããŒãžã£) ã®ããªã²ãŒãã䜿çšããŠããŸãããVB ã§ã¯äœ¿çšã§ããªãã®ã§ãéåžžã®ã¡ãœãããå®çŸ©ã㊠AddressOf æŒç®åã§ããªã²ãŒãããŸããVB ã§ã¯ã¬ãã·ã«ã« ã¹ã³ãŒãã§ããŒã«ã«å€æ°ã䜿çšã§ããªããããååŠçããã¢ã¯ã»ã¹ãã倿°ã¯ã¡ã³ã倿°ã«å®çŸ©ããŸãã
éåæã€ãã³ãã¯ãWindows Formsã»WPF ãåžžé§åã¢ããªã±ãŒã·ã§ã³ã§å©çšã§ãããååä»ããã€ãåã䜿çšããããã»ã¹ééä¿¡ãå¯èœãªéåæã®ã€ãã³ãåŠçãå®è£ ããããã®ãã¬ãŒã ã¯ãŒã¯ã§ã (ååä»ããã€ãåã®ã³ãã¯ã·ã§ã³ã¯éœåºŠæ¥ç¶æ¹åŒ)ã
åæåã¡ãœãããåŒã³åºããŸã (第äžåŒæ°ïŒã³ãã©ã®ååä»ããã€ãåã第äºåŒæ°ïŒæ¥ç¶å ã®ååä»ããã€ãåã®æååé åã第äžåŒæ°ïŒæ¥ç¶åŸ ã¡ã®åŸ æ©æé (ããªç§))ãçµäºåŠçã§ã¯çµäºã¡ãœãããåŒã³åºããŸãã
AsyncEventFx.Init("aaaa", new string[] { "bbbb", "cccc", "dddd", "eeee" }, 3000);å³3.1â1 éåæã€ãã³ãã®åæååŠç
AsyncEventFx.Final();å³3.1â2 éåæã€ãã³ãã®çµäºåŠç
AsyncEventFx.RegisterAsyncEvent ã¡ãœããã§ç»é²ãAsyncEventFx.UnRegisterAsyncEvent ã¡ãœããã§ç»é²æ¹æ¶ããŸãããšã³ã㪠(AsyncEventEntry ãªããžã§ã¯ã) ã«ã¯ä»¥äžãèšå®ããŸãã
-
ã€ãã³ãåºå (
AsyncEventEnum.EventClass)ïŒThread (ã¹ã¬ãã颿°)ãThreadPool (ã¹ã¬ãã ããŒã«)ãWinForm (Control.BeginInvoke)ãWPF (Dispatcher.BeginInvoke) ããéžæã - æ©èœ IDïŒéåæã€ãã³ãã®ã€ãã³ãå (0ã36 æå)ã
- ControlïŒã€ãã³ãåºåã WinFormãWPF ã®å ŽåãBeginInvoke ã«äœ¿çšããã³ã³ãããŒã«ã
- ã€ãã³ããã³ãã©ïŒéåæã€ãã³ããåä¿¡ããŠåŠçãéè¡ããããªã²ãŒãã
// ç»é²ãšã³ããª
// ã¹ã¬ãã
this.AeeTh = new AsyncEventEntry(
AsyncEventEnum.EventClass.Thread, "Thread", null,
new ParameterizedThreadStart(this.ParameterizedThreadStartDgt));
AsyncEventFx.RegisterAsyncEvent(this.AeeTh);
// ---
// ã¹ã¬ãã ããŒã«
this.AeePl = new AsyncEventEntry(
AsyncEventEnum.EventClass.ThreadPool, "ThreadPool", null,
new WaitCallback(this.WaitCallbackDgt));
AsyncEventFx.RegisterAsyncEvent(this.AeePl);
// ---
// WinForm
this.AeeWin = new AsyncEventEntry(
AsyncEventEnum.EventClass.WinForm, "WinForm", this,
new AsyncEventFx.SetResultDelegate(this.SetResultDgt));
AsyncEventFx.RegisterAsyncEvent(this.AeeWin);
// ---
// WPF
this.AeeWPF = new AsyncEventEntry(
AsyncEventEnum.EventClass.WPF, "WPF", this,
new AsyncEventFx.SetResultDelegate(this.SetResultDgt));
AsyncEventFx.RegisterAsyncEvent(this.AeeWPF);å³3.2â1 éåæã€ãã³ãã®ãšã³ããªã®ç»é²
/// <summary>ãã¬ã²ãŒãïŒã¹ã¬ããïŒ</summary>
private void ParameterizedThreadStartDgt(object obj) { }
/// <summary>ãã¬ã²ãŒãïŒã¹ã¬ãã ããŒã«ïŒ</summary>
private void WaitCallbackDgt(object state) { }
/// <summary>ãã¬ã²ãŒãïŒWinFormãWPFïŒ</summary>
private void SetResultDgt(object result) { }å³3.2â2 éåæã€ãã³ãã®ã€ãã³ã ãã³ãã©ã®ã·ã°ããã£ïŒããªã²ãŒãåïŒ
ç»é²ããéåæã€ãã³ãã¯ãåŒã³åºãã¡ãœããã§åŒã³åºããŸã (第äžã»äºåŒæ°ïŒéãå ã®ã€ãã³ãåºåïŒæ©èœ IDã第äžã»ååŒæ°ïŒéãå ã®ã€ãã³ãåºåïŒæ©èœ IDã第äºã»å åŒæ°ïŒååä»ããã€ãåã第äžã»å «åŒæ°ïŒéä¿¡ããŒã¿ã®ããŒã¿é·ãšéä¿¡ããŒã¿ (ãã€ãé å))ã
â» éä¿¡ããŒã¿ã®ããããŒã¯ C æ§é äœã®ãã€ããªè¡šçŸã§ãããããCïŒC++ ãšã®ããŒã¿äº€æãå¯èœã§ãã
/// <summary>bbbbã®Thread</summary>
private void button1_Click(object sender, EventArgs e)
{
byte[] bytes = BinarySerialize.ObjectToBytes(this.txtMSG.Text);
AsyncEventFx.SendAsyncEvent(
AsyncEventEnum.EventClass.Thread, "Thread",
AsyncEventEnum.EventClass.Thread, "Thread",
"aaaa", "bbbb", (uint)bytes.Length, bytes);
}
/// <summary>ccccã®ThreadPool</summary>
private void button2_Click(object sender, EventArgs e)
{
byte[] bytes = BinarySerialize.ObjectToBytes(this.txtMSG.Text);
AsyncEventFx.SendAsyncEvent(
AsyncEventEnum.EventClass.ThreadPool, "ThreadPool",
AsyncEventEnum.EventClass.ThreadPool, "ThreadPool",
"aaaa", "cccc", (uint)bytes.Length, bytes);
}
/// <summary>ddddã®Control.BeginInvoke</summary>
private void button3_Click(object sender, EventArgs e)
{
byte[] bytes = BinarySerialize.ObjectToBytes(this.txtMSG.Text);
AsyncEventFx.SendAsyncEvent(
AsyncEventEnum.EventClass.WinForm, "WinForm",
AsyncEventEnum.EventClass.WinForm, "WinForm",
"aaaa", "dddd", (uint)bytes.Length, bytes);
}
/// <summary>eeeeã®Dispatcher.BeginInvoke</summary>
private void button4_Click(object sender, EventArgs e)
{
byte[] bytes = BinarySerialize.ObjectToBytes(this.txtMSG.Text);
AsyncEventFx.SendAsyncEvent(
AsyncEventEnum.EventClass.WPF, "WPF",
AsyncEventEnum.EventClass.WPF, "WPF",
"aaaa", "eeee", (uint)bytes.Length, bytes);
}å³3.3 éåæã€ãã³ãã®åŒã³åºã
C/S 2å±€ã¢ããªã±ãŒã·ã§ã³ã®ãµã³ãã«ã¯ ïœ\root\programs\C#\Samples\2CS_sample ã«ãããŸããC/S 2å±€ã¢ããªã±ãŒã·ã§ã³éçºã§ã¯ãPå±€ãã¬ãŒã ã¯ãŒã¯ (Windows Forms)ãBå±€ãã¬ãŒã ã¯ãŒã¯ (C/S 2å±€çš)ãDå±€ãã¬ãŒã ã¯ãŒã¯ã䜿çšã§ããŸãã
- äœ¿çš (ç¶æ¿)ïŒãæ¥åã³ãŒã芪ã¯ã©ã¹ïŒãã« C/S 2å±€çšã®ã¯ã©ã¹ã䜿çšãããæ¥åã³ãŒã芪ã¯ã©ã¹ïŒãããããç¶æ¿ããæ¥åã³ãŒã ã¯ã©ã¹ããæŽã«ãããç¶æ¿ããã
namespace Touryo.Infrastructure.Business.Business
{
/// <summary>
/// æ¥åã³ãŒã芪ã¯ã©ã¹ïŒ
/// </summary>
public abstract class MyFcBaseLogic2CS : BaseLogic2CS
{namespace xxxx
{
/// <summary>
/// LayerB ã®æŠèŠã®èª¬æã§ã
/// </summary>
class LayerB : MyFcBaseLogic2CS
{å³ 4.1-1ãC/S 2å±€çšã® Bå±€ãã¬ãŒã ã¯ãŒã¯ã䜿çšïŒç¶æ¿ïŒ
-
ãã©ã³ã¶ã¯ã·ã§ã³ã®éå§ïŒC/S 2å±€ã®ã¯ã©ã€ã¢ã³ãåŽã§ã¯ããµãŒãåŽãšç°ãªããéœåºŠã³ãããã»ããŒã«ããã¯ããæåã§å¶åŸ¡ãããBå±€ã®åŒã³åºãæã«
MyFcBaseLogic2CS.UOC_ConnectionOpenã¡ãœãããåŒã³åºãããã®ã§ãããã§ãã©ã³ã¶ã¯ã·ã§ã³ãéå§ãã (æ¢ã« DB æ¥ç¶ã確ç«ãããŠããå Žåã¯åŒã³åºãããªã)ã
// Bå±€ãçæ
LayerB myBusiness = new LayerB();
// æ¥ååŠçãå®è¡
TestReturnValue TestReturnValue =
(TestReturnValue)myBusiness.DoBusinessLogic(
(BaseParameterValue)testParameterValue, DbEnum.IsolationLevelEnum.ReadCommitted);å³ 4.1-2ãBå±€åŒã³åºãæã®ãã©ã³ã¶ã¯ã·ã§ã³åé¢ã¬ãã«ã®æå®
-
ãã©ã³ã¶ã¯ã·ã§ã³ã®çµäºïŒ
DbEnum.IsolationLevelEnum.NoTransactionãæå®ããŠããå Žåã以éã¯èªåã³ããã ãã©ã³ã¶ã¯ã·ã§ã³ãšãªã (å³4.1-3)ããã以å€ã®åé¢ã¬ãã«ã®å Žåã¯ãã³ãããã»ããŒã«ããã¯ãæåã§å¶åŸ¡ãã (å³4.1-4)ãDB æ¥ç¶ã»åæãªãŒããŒãããã®è»œæžã«ã¯ã³ãã¯ã·ã§ã³ ããŒãªã³ã° [2] ã䜿çšããã
// ã³ãã¯ã·ã§ã³ ã¯ããŒãº
BaseLogic2CS.ConnectionClose();å³4.1â3 DBæ¥ç¶ã®åæ
// ã³ããã
BaseLogic2CS.CommitAndClose();
// ããŒã«ããã¯
BaseLogic2CS.RollbackAndClose();å³4.1â4 ãã©ã³ã¶ã¯ã·ã§ã³ã®çµäº + DBæ¥ç¶ã®åæ
C/S 2å±€çšã® Bå±€ã»Då±€ãã¬ãŒã ã¯ãŒã¯ãå©çšããã®ã«å¿ èŠãª app.config ã®ãã©ã¡ã¿ããããŸã (ASP.NET Web éçºãšæ¯èŒããŠäœ¿çšã§ããªãæ©èœããããããäžèŠãªãã©ã¡ã¿ãããã€ããããŸã)ãåãã©ã¡ã¿ã®èª¬æã¯ãçºãè ç·šã1.2 ç¯ãåç §ããŠãã ããã
<configuration>
<appSettings>
<!-- å
±ééšåã®äœ¿çšãããã©ã¡ãŒã¿ - start -->
<!-- Log4Netã®ã³ã³ãã£ã°ãã¡ã€ã«ãžã®ãã¹ -->
<add key="FxLog4NetConfFile" value=".\Log\SampleLogConf.xml" />
<!-- 局ã®ããã©ãŒãã³ã¹ãã°åºåæ©èœã®onã»off -->
<add key="FxSqlTraceLog" value="on" />
<!-- 局ã®SQLæãã£ãã·ã¥æ©èœã®onã»off -->
<!-- éçºãã§ãŒãºã®ããšãèæ
®ããŠãããã©ã«ãoffã«èšå® -->
<add key="FxSqlCacheSwitch" value="off" />
<!-- 局ã®SQLããŒãæã®ãšã³ã³ãŒãã£ã³ã°ãæå®ïŒshift_jisãutf-8.etcïŒ -->
<add key="FxSqlEncoding" value="shift_jis" />
<!-- 局ã®SQLã®CommandTimeoutå€ãæå® -->
<add key="FxSqlCommandTimeout" value="30"/>
<!-- å
±ééšåã®äœ¿çšãããã©ã¡ãŒã¿ - end -->
<!-- ã¢ããªã±ãŒã·ã§ã³ã®äœ¿çšãããã©ã¡ãŒã¿ - start -->
<!-- SQLãã¡ã€ã«ãžã®ãã¹ -->
<add key="SqlTextFilePath" value=".\Dao" />
<!-- ã¢ããªã±ãŒã·ã§ã³ã®äœ¿çšãããã©ã¡ãŒã¿ - end -->
</appSettings>
<connectionStrings>
<!-- æ¥ç¶æåå -->
<add name="ïœ" connectionString="ïœ" />
</connectionStrings>
<system.web>
ïœ
</system.web>
</configuration>å³4.2â1 å¿ èŠãªã³ã³ãã£ã°ã¬ãŒã·ã§ã³
â» ãã®éšå㯠ZIPã©ã€ãã©ãªã®ãµããŒãåãã§ disconïŒãœãŒã¹ã¯æ®ã£ãŠããã®ã§å¿ èŠãªãä¿®æ£ããŠåŸ©æŽ»ãããããšã¯åºæ¥ãïŒ
Web ãããã€éšåã¯ãå®è¡ã¢ãžã¥ãŒã«ãã¯ã©ã€ã¢ã³ã端æ«ã«ãããã€ããããŒã«ã§ããå®è¡ã¢ãžã¥ãŒã«ãè€æ°ã® [ZIP ãã¡ã€ã«] ã«ã¢ãŒã«ã€ãããããŠã³ããŒãäžåŒã®æ å ±ã [é 眮ããã¥ãã§ã¹ã ãã¡ã€ã«] ã«çºããããšãã§ããŸããã¯ã©ã€ã¢ã³ããã [é 眮ããã¥ãã§ã¹ã ãã¡ã€ã«] ãžã® URL ãæå®ããã ãã§ãå®è¡ã¢ãžã¥ãŒã«äžåŒããããã€ã§ããŸã (å·®åã® ZIP ãã¡ã€ã«ã®ã¿ã®ããŠã³ããŒãã«ã察å¿)ã
[Zip ããã±ãŒãžãäœæ] ã¿ãã§ã[ãã©ã«ã] (å§çž®å¯Ÿè±¡)ã[ãã¡ã€ã«å] (å§çž®ãã¡ã€ã«å) ãå ¥åã [å§çž®] ãã¿ã³ãæŒäžããŸãã
å³ 5.1ãZIP ããã±ãŒãžã®äœæ
ãã€ã³ãã¯ãã§ã㯠ããã¯ã¹ã®ç¶æ ã§ãããªã (ããã©ã«ã) ã®å Žåã¯ã€ã³ã¹ããŒã« ãã£ã¬ã¯ããªçŽäžã« ZIP ãã¡ã€ã«åãšåãååã®ãã©ã«ããäœæã埩å ããŸã (ãã©ã«ãæ¯ã«å§çž®ããå Žåã«é©ãã)ããªã³ã®å Žåã¯ã€ã³ã¹ããŒã« ãã£ã¬ã¯ããªä»¥äžã«æ§æããã®ãŸãŸåŸ©å ããŸã (äžåºŠã«è€æ°ã®ãã¡ã€ã«ããã©ã«ããé 眮ããå Žåã«é©ãã)ã
[é 眮ããã¥ãã§ã¹ã] ã¿ãã§ãZIP ãã¡ã€ã«ã[ã€ã³ã¹ããŒã« ãã£ã¬ã¯ããª] (ç°å¢å€æ°äœ¿çšå¯èœ)ã[EXE å (ãã¹)] (ã«ã³ãåºåãã§èµ·åãã§ã㯠EXEãèµ·å EXE [3]) ãæå®ãã[ããã¥ãã§ã¹ããã¡ã€ã«ãäœæãã] ãã¿ã³ãæŒäžããŸãã
å³ 5.2ãé 眮ããã¥ãã§ã¹ãã®äœæ
äœæåŸã¯ã[é 眮ããã¥ãã§ã¹ã ãã¡ã€ã«] ãšå šãŠã® ZIP ãã¡ã€ã«ã WWW ãµãŒãäžã®åããã£ã¬ã¯ããªã«é 眮ããŸãã
[HTTP ã§ãããã€] ã¿ãããå®è¡ã¢ãžã¥ãŒã«ãã¯ã©ã€ã¢ã³ã端æ«ã«ãããã€ããã¿ãã§ãã
å³ 5.3-1ãWeb ãããã€ïŒGUI ã§å®è¡ïŒ
ãã®ããŒã«ã¯ CUI ãšããŠãå®è¡ã§ãã/HELP ãªãã·ã§ã³ã§ãã«ãã確èªã§ããŸãã
å³ 5.3-2ãWeb ãããã€ïŒCUI ã® /HELP ã³ãã³ããå®è¡ïŒ
WWW ãµãŒãã® URL ã«ã¯ [é
眮ããã¥ãã§ã¹ã ãã¡ã€ã«] ãžã® URL ãæå®ããCredential (èªèšŒãè³æ Œ) æ
å ± (ãŠãŒã¶ IDããã¹ã¯ãŒãããã¡ã€ã³å) ãå
¥åããŸãããããã· ãµãŒããçµç±ããå Žåã¯ããããã· ãµãŒãã® URL ãš Credential æ
å ±ãå
¥åããŸã (URL æå®ãç¡ãå Žå㯠IE èšå®ãé©çšãnone æå®ã§ãããã·æªäœ¿çš)ã以äžã® config å€ã調æŽå¯èœã§ãã
<!-- app.config -->
<!--éåæåŒã³åºãåŠçã®å€é床ïŒ2以äžã®èšå®ãå¿
é ïŒ-->
<add key="FxMaxThreadCount" value="3"/>
<!--ããã°ã¬ã¹ãã€ã¢ãã°ãéãããŸã§ã®åŸ
æ©èšå®ïŒç§ïŒ-->
<add key="PDWSleepSec" value="3"/>-
MSGDefinition.xmlïŒå皮衚瀺ã¡ãã»ãŒãžã®èª¿æŽ -
Log4DeployZipPackWithHTTP.xmlïŒãã°åºåèšå®ã®èª¿æŽ (log4net)
å³ 5.3-4ããããŒãã£ãŒãïŒããŒã«èµ·åãŸã§ã®æµã
å³ 5.3-5ããããŒãã£ãŒãïŒã¢ããªã®æŽæ°ïŒèµ·åãŸã§ã®æµã
discon JavaScriptçã¯äœãããïŒ
- ãªããã¯ã©ã€ã¢ã³ãã® På±€ã€ãã³ãåŠçæ©èœã察å¿ããã³ã³ãããŒã« ã€ãã³ã (5 ã€)ã
- ããŒã¿ ãããã€ãã®ã³ãã¯ã·ã§ã³ ããŒãªã³ã°æ©èœã
- ã«ã³ãåºåãã§èµ·åãã§ã㯠EXEãèµ·å EXE ãæå®ããã
- .NET ã§ããŒã¿ç§»éåŠçã®å®è£ ã§æ £äŸçã«å©çšãããã
- è¡ã®å€æŽã¹ããŒã¿ã¹ (DataRowState)ã
ïŒä»¥äžïŒ