ADO_NET 2010 0402
DB관련된 Dll의 클래스 다이어그램이다.
Biz만드는것은 추상객체 DataBase_Business 객체를 상속받아서 만들어낸다.
입력패널이나 그리드뷰패널등에서의 데이타 수집을 하여 IUniDataParameter 를 통해 받아서 처리된다.
이 인터페이스는 컨트롤패널에 구현되어 컨트롤에 데이타유효값들을 파라미터와 매칭시켜 수집하는 역할을 맡는다.
컨트롤 -> Biz -> Dac -> DB 순서로 데이타가 이동하여 DB에 전달된다.
DB에서는 반대로 리턴되서 반환되는데 DataSet or DataTable or 값타입별로.. 보내준다.
컨트롤에 바인딩 역시 IUniDataSet 인터페이스로 표준화 되어있다.
'# 9) My Program(.NET) > JsFW20' 카테고리의 다른 글
Exception 2010 0402 (0) | 2010.04.02 |
---|---|
Debug 2010 0402 (0) | 2010.04.02 |
CommonWin 2010 0402 (0) | 2010.04.02 |
CommonUtil 2010 0402 (0) | 2010.04.02 |
BaseObject 2010 0402 (0) | 2010.04.02 |
Xml 관련 객체가 한번더 정리가 되었다.
클래스에 Attribute를 붙여서 Xml화 하는 것에 대한 글을 썼었는데
바로 써먹으려니... 잘못된게 많아서 그것을 토대로 새롭게 바꾸어 나갔다.
Befor : Add시 바로 Xml화 했던 것...
After : XmlTransform 객체를 두어 변환객체를 중간에 둠.
Load -- > 변경.... --> 저장
루트로 가는것은 변경하지 않음.
변경 시 Add할때 바로 Xml화 하던걸 다른 객체에 위임시켰고.
Add는 Add기능으로만
내부적으로 XID라는 속성을 부여하고 이것을 이용한 Update, Delete를 구현하였음.
또 기존 XmlHelper 객체의 XmlElmt 를 확장하여 현재 XmlFileMng 객체가 쉽게 사용되어지도록 변경함.
물론 dll외부에서는 확장된 내용은 접근 못함. ( 굳이 노출시켜줄 이유가 없으므로.. 패쓰.. )
아 있다면 Element Name정도? 랄까?
Xml 관련 하여 기존 프로그램도 바꾸어야 되는가 싶었는데 영향은 없다.
업글차원에서라면 모를까 냅두자!!
원래는 네임스페이스를 나열하고 해당 객체들 멤버를 정리하려했으나.. 지금 말고 나중에 툴로 한번에 해야겠다!!
'# 1) 프로그래밍' 카테고리의 다른 글
컨트롤 타원 회전시키기... (0) | 2010.04.08 |
---|---|
프로그래밍 설계? (0) | 2010.04.05 |
XML 클래스다루기... (0) | 2010.03.31 |
Attribute를 직접 정의해서 쓸줄이야... (0) | 2010.03.30 |
개발을 하다보니... (0) | 2010.03.29 |
XML 클래스다루기...
집에서 각 Element를 수정 처리를 위해 고민중이었는데
아침 출근 버스에서 떠오른 생각이 있다.
XID 라는 고정 필드를 두는 방법
XmlBaseObject를 두고 여기에 Internal 필드 XID를 둔채로
작업을 한다.
저장시 리플랙팅 중 들어온 객체가 XmlBaseObject를 상속했는가를 체크 하고.
obj.GetType().IsS..( typeof( XmlBaseObject )) == true 이면... 캐스팅을 통해 XID를 부여하고
이값을 Element에 속성으로 추가!!
업데이트구문에서는 이 필드로 각 Element를 찾는 Key로 사용 , 삭제역시...
실제 클래스를 만들때는 XmlBaseObject를 상속하여 구현한다. 물론 없어도 저장되는건 차이가 없다.
업데이트나, 삭제를 따로 구현해야되는 귀차니즘이 생길뿐...
또한 이필드는 internal로 지정되있으므로 상속 후 구현되는 위치가 Xml Dll 외부라면 접근할수 없다!
xmlHelper를 조금 손봤는데... 이전에 작성한 프레임웍에 영향이 있을듯 싶다.
이러한 이유로 아직... 내공이 부족하다는것을 또한번 느낀다...
'# 1) 프로그래밍' 카테고리의 다른 글
프로그래밍 설계? (0) | 2010.04.05 |
---|---|
Xml 관련 객체가 한번더 정리가 되었다. (0) | 2010.04.01 |
Attribute를 직접 정의해서 쓸줄이야... (0) | 2010.03.30 |
개발을 하다보니... (0) | 2010.03.29 |
배열 정렬하기...? (0) | 2010.02.25 |
Attribute를 직접 정의해서 쓸줄이야...
일정관리 프로그램을 설계중 데이타를 저장하고 꺼내 써야 하는 곳에 dB까지 쓸필요없으니 xml을 또 남용하자 하여
XmlHelper를 FileMng라 붙여서 매니져급을 만들었다.
이제 클래스 하나에 매니져 상속해서 저장하고 꺼내쓰면 된다 싶었는데... 왠걸..
데이타클래스가 세가지일때 세가지를 모두 정의해야 되는 상황이 발생하였다. 아.. 좀 애매한데... 싶어서..
어디선가 본 [DataContract]와 [DataMember] 를 찾아서 열심히 뒤지던중..
Hoons C# 강좌란에 김태훈님이 기록하신 글중 예제에 첨부된걸 보고 바로 MSDN검색에 들어갔으나..
아줸장... 예제 대로 쳐놓았으나.. 파일은 오간데 없고 저장이 되어도 xml형태가 아니다. 오~~ ...
이런걸로 시간끌수 없다라고 판단하여 조금더 고민끝에... Attribute라는 걸 다시 뒤적 뒤적...
이유인즉 XmlFile을 만들때 데이타를 일정한 구조로 XmlHelper를 통해 읽고 쓰고 하는데 이때
XmlHelper를 사용하는 클래스는 엘리멘트나 속성을 모두 상수로 지정해주었었다... 이리 조낸 복잡해진다.
이걸 그냥 Class 선언할때 Attribute로 붙이면 어떻게든 되지 않을까 싶었다.
솔직히 이전까지도 Attribute가 어떤놈인지 알고는 있는데 막상... 어따가 어떻게 써먹어? 했었는데...
이제 써먹을 수 있게 되었다.
[XmlRootTag("CATEGORY", "CODE")]
public class JsFWCategory
{
string _Name = string.Empty;
[XmlATT_Tag]
public string Name
{
get { return _Name; }
set { _Name = value; }
}
string _Desc = string.Empty;
[XmlATT_Tag]
public string Desc
{
get { return _Desc; }
set { _Desc = value; }
}
}
위에 클래스가 XmlFileMng를 통해 XmlHelper로 전달되고 Xml파일 내 하나의 Element 행이 된다.
오.. 멋져..
이제부턴 상수선언할필요도 없고 넣을녀석 Class만 정의하고 던져주면 저장이 된다. 또 읽어올때는 object 주고, type지정해서 던져주면 꺼내올수 있다.
CategoryTb c = new CategoryTb(); // XmlFileMng 를 이용할뿐...
c.Load(); // XmlFile읽기.
- 저장할때
JsFWCategory j = new JsFWCategory();
j.Desc = "jsDEsc";
j.Name = "jsNAme";
c.AddRow(j);
c.Save(); // 저장
- 꺼내올때
XmlElmt exml = c.Find("015"); // xmlFile에서 ID값 015번에 Element를 찾아서 반환해줌.
object obj = null;
if( exml != null) obj = c.GetRow(exml, typeof(JsFWCategory));
if (obj is JsFWCategory) this.textBox1.Text = ((JsFWCategory)obj).Name;
아래는 만들어진 내용...
<?xml version="1.0" encoding="utf-8" ?>
완성!
이제 좀더 xml이 쉽게 다뤄질듯 함..
'# 1) 프로그래밍' 카테고리의 다른 글
Xml 관련 객체가 한번더 정리가 되었다. (0) | 2010.04.01 |
---|---|
XML 클래스다루기... (0) | 2010.03.31 |
개발을 하다보니... (0) | 2010.03.29 |
배열 정렬하기...? (0) | 2010.02.25 |
Enum객체 관련 설명. (0) | 2010.02.10 |
개발을 하다보니...
프레임웍을 개발하다보니 실제적으로 객체를 추상화한후 이를 구체화 하고 구현하기 시작하면서
눈덩이처럼 불어나는 객체 크기가... 아.. 아직 실력이 멀었구나 싶었다.
메서드 하나 들어날때마다 추가되는 변수들이 정말 필요한것인가를 생각하다 일정을 미루기 그래서
구현부터 하다보면 어느새 객체는 내가 생각했던것 이상으로 부풀어 있었다.
객체와 객체간에 메세지 통신을 규격화 하는데 있어서 대리자를 적절히 써서 dll내부에 감춤으로써 외부에 노출되지 않도록 하는게 조금 시간을 많이 잡아먹었다.
internal 키워드를 이용하는 방법이 나름 잘 써먹었다.
객체들을 추상화 하다보면 안보이던것들이 구현하면서 부족한 객체들이 하나 둘 나올땐.... 아 그땐 왜 생각을 못했을까 싶었다.
이번에 만들 일정관리(NEW)는 좀더 추상화작업과 구체화 작업들을 좀더 체계적으로 바꿔나가야겠다.
자료는 기존과 같이 xml을 이용하고 내가 만든 개발프레임웍을 이용하면 좀더 빠르게 만들어낼수 있을듯 하다.
이번에도 컨트롤을 만들어야 할까? 아님 만들어둔 것들로 가능하려낭...?
'# 1) 프로그래밍' 카테고리의 다른 글
XML 클래스다루기... (0) | 2010.03.31 |
---|---|
Attribute를 직접 정의해서 쓸줄이야... (0) | 2010.03.30 |
배열 정렬하기...? (0) | 2010.02.25 |
Enum객체 관련 설명. (0) | 2010.02.10 |
삼항연산자 중복... (0) | 2010.02.05 |
드디어 내 프로그램이 완료 되었다!!
회사 일 덕분에 원래 일정보다 일주일 늦어버렸지만...
플러그인 프로그램이 만들어졌고 이 프로그램에 사용하던 툴 프로그램을 붙여넣었다.
이제부터 부착될 프로그램들은 위 경로의 dll을 참조하여 모두 완성되어 질것임.
이제 남은 일은 여기에 추가하기로 한 프로그램 몇가지를 추가하는것임.
1. 일정관리 (NEW )
2. 간단한 테트리스 ( 옛날에 만들어 둔거.. )
3. DB관련 툴
4. JsFW_HelpDocument ( 문서 제작용 MSDN같은... )
기타...
'# 9) My Program(.NET)' 카테고리의 다른 글
My CodeGen ] 프로젝트 디자이너 [ 가제 ] (0) | 2011.08.25 |
---|---|
My CodeGen ] 새프로젝트 ? 템플릿? 코드젠 (0) | 2011.08.22 |
나만에 개발 프레임웍 dll Helper 문서. (0) | 2010.05.12 |
참조경로 관하여.. (0) | 2010.03.24 |
드디어 제모습을 갖춰가는 나만에 프레임웍. (0) | 2010.03.22 |
속성에 UIEditor 달기( PropertyGrid 이용 )
PropertyGrid를 처음 접한건 와이즈엠( 처음 c#을 시작한 곳) 시절에 이사님이 사용하시던거였는데
뭔가 찾아보라고 하셨는데... 당시 프로그래밍 자체가 첨이던 시절 영어도 안되고.. 이래저래... C#문법도 겨우 공부하고 있던 시절이라... 사설은 접고...
클래스 폼에 속성을 하나 넣고 이를 변경할 UI를 구성하는 폼을 붙여넣어보자!!
http://www.gisdeveloper.co.kr/197 참고 블로그 [ 설명도 기가막히게 써있다 ]
요새 만드는 프레임웍에 폼 기능중 하나로 속성에 스타트포지션을 화면을 9개로 나누어 임의로 구석에 붙이는 걸 하려고 한다.
그래서 데모용으로 만들었다.
위 링크 들어가서 보면 잘 설명되있으므로 소스 설명은 없다.
이제 나름 소스를 봐도 이해가 되는건... 그나마 공부를 쉬지 않고 해서 아닐까... 앞으로 3.5도 해야되는데... 4.0이 나온다는데...
'# 2) .Net ( Vs 2005 ) > WinForm' 카테고리의 다른 글
서버 - 클라이언트 ... (0) | 2010.05.08 |
---|---|
타이머 구현... (0) | 2010.04.08 |
MDI 폼 스크롤바 없애기 (0) | 2010.03.25 |
폼에 파일 드래그앤드랍 하기 (0) | 2010.03.25 |
목록 - 로테이션 응용컨트롤... (0) | 2010.03.19 |
MDI 폼 스크롤바 없애기
폼을 MDI 컨테이너로 지정하고 폼을 MDI로 넣으면
MDIClient가 추가가 되는데 위치는
폼.Controls[ 폼.Controls.Count -1 ] 위치에 MDIClient 라는 컨트롤이 추가되어있는것을 확인할수 있다.
이것에 Scroll을 비활성 시키는 방법은 딱 한가지뿐이었다.( 내가 발견한 방법 )
public Form1()
{
InitializeComponent();
AutoScrollMinSize = new Size(int.MaxValue, int.MaxValue);
}
이렇게 해주면 내부 MDI 폼을 화면 끝넘어서 이동시켜도 스크롤이 안생긴다.
'# 2) .Net ( Vs 2005 ) > WinForm' 카테고리의 다른 글
타이머 구현... (0) | 2010.04.08 |
---|---|
속성에 UIEditor 달기( PropertyGrid 이용 ) (0) | 2010.03.25 |
폼에 파일 드래그앤드랍 하기 (0) | 2010.03.25 |
목록 - 로테이션 응용컨트롤... (0) | 2010.03.19 |
리스트 박스를 구현... (2) | 2010.03.12 |
폼에 파일 드래그앤드랍 하기
플러그인 메인을 만들면서 플러그인 아이템(dll)파일을 등록하기위해
OpenFileDialog를 사용하여 로딩하기도 했지만.
파일 드래그앤 드랍기능도 추가하였다.
방법은 간단하지만... 기록해둔다..
해당 폼에 AllowDrop = true를 설정하고
두개의 이벤트를 지정한다.
private void Form1_DragDrop(object sender, DragEventArgs e)
{
this.Text = Path.GetFullPath( ((string[])(e.Data.GetData(e.Data.GetFormats()[7])))[0].ToString());
}
private void Form1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Link;
}
꼴랑 이게 끝이다.
주의 할것은.
((string[])(e.Data.GetData(e.Data.GetFormats()[7])))[0].ToString()
이구분에 인덱스 처리부분이다.
위 이미지는 GetData에 넣어주는 Format 값에 대한것이다.
현재는 [7] 이라고 넣어주었지만 FileName 이라 넣어주는것이 좋을듯 하다.
노트북(Win7)은 8가지가 나오지만 데크탑(XP)은 7개만 나온다.
직접 FileName을 넣는것이 나을듯 하다.
파일명을 얻어왔으니 이제 파일을 컨트롤하면 된다.
플러그인 모듈을 가지고 직접 Dll을 특정폴더로 이동시키고 xml목록에 업데이트 하는 동작구현시 아주 잘된다.
여기에 가미된것은 Path객체로 FullPath를 얻어오는부분일 뿐..
모듈을 만들때 그냥 썼더니 긴 경로명은 ~ 처리가 된다. 물론 파일 경로에 접근하는데는 무리가 없으나
파일을 이동시켰을때 ~로 바뀌어버리므로 의도적으로 바꾸는게 아니라면 주의 해야겠다.
'# 2) .Net ( Vs 2005 ) > WinForm' 카테고리의 다른 글
속성에 UIEditor 달기( PropertyGrid 이용 ) (0) | 2010.03.25 |
---|---|
MDI 폼 스크롤바 없애기 (0) | 2010.03.25 |
목록 - 로테이션 응용컨트롤... (0) | 2010.03.19 |
리스트 박스를 구현... (2) | 2010.03.12 |
트레이 구현하기... (0) | 2010.02.23 |
참조경로 관하여..
음 지금 프로그램을 만드는데 있어서 필요한것이 dll 분리하는것인데...
몇가지 테스트 해보니 아하! 싶은것들이 있군.
지금 나눠야 할 그룹은
1. JsFW ( 개발프레임웍 dll )
2. 1의 dll내 객체를 참조한 플러그인메인모듈, 플러그인아이템dll , 기타 개발프로그램
1 을 이용한 플러그인 메인모듈개발과 관련된 2번 개발을 하다보니
1을 위치를 결정하는것이 참으로 중요하다는 생각이 들어서 몇가지 테스트를 해보았다.
JsFW를 특정 폴더위치에 고정시켜 설치하는 프로젝트를 하나 만들어 설치하여 개발 dll들을 위치 시켜 개발Pc로 만든 후
2번에 해당 하는 프로젝트를 생성하여 참조경로를 1번의 설치시 지정된 특정폴더로 참조시킨다.
2번 개발 완료 후 배포관련해서는 dll 묶음을 같이 보낼지 1번 설치 프로젝트를 제공할지만 결정하면 될듯 하다.
----------------------
플러그인 아이템 관리용 폴더를 만들고 해당 dll을 위치시켜도 해당 dll이 참조하는 dll 위치가 고정된 위치가 되겠금 하여야 에러가 없을듯 하니...
'# 9) My Program(.NET)' 카테고리의 다른 글
My CodeGen ] 프로젝트 디자이너 [ 가제 ] (0) | 2011.08.25 |
---|---|
My CodeGen ] 새프로젝트 ? 템플릿? 코드젠 (0) | 2011.08.22 |
나만에 개발 프레임웍 dll Helper 문서. (0) | 2010.05.12 |
드디어 내 프로그램이 완료 되었다!! (0) | 2010.03.28 |
드디어 제모습을 갖춰가는 나만에 프레임웍. (0) | 2010.03.22 |