간편 리눅스(Ubuntu) GUI 앱 개발 초급 전편

간편 리눅스(Ubuntu) GUI 앱 개발 초급 전편



2021/4월 추가
Rider .net5에서 GUI 개발로 전환하고 있습니다.
우분투, Rider 및 C# GUI 앱 개발
  • Sqlite3 사용
  • Dapper 소개 Dapper에 대해 정리해 보았습니다.
  • Dapper Extension 도입 Dapper 확장 라이브러리 비교 검토
  • Swagger 사용 Stoplight Studio 등을 사용 정말 사용하기 좋은 OpenAPI (Swagger) 도구
  • C#에서 파이썬 실행 C#에서 Python 스크립트 호출
  • DataGridView와 Model의 바인딩 실현 URL treeView
  • Jetson Nano에 배포하는 방법

  • 개발은 Mac의 VisualSudioMac에서 수행

    전편은 5까지

    샘플 파일

    프로젝트는 Gtk#을 선택합니다.

    GTK# 정보



    Nuget에서 패키지 다운로드



    다운로드할 패키지

    Dapper 확장 라이브러리 비교 검토

    Dapper
    DapperExtensions
    Mono.Data.Sqlite를 다운로드합니다. Gtk2#의 경우 System.Data.Sqlite를 로드할 수 없습니다.



    Dapper를 사용한 Query



    Dapper Tutorial

    쿼리 결과를 자동으로 모델에 넣을 수 있습니다. 또한 Insert시 Update시 인수 대신 Model을 사용할 수 있습니다.
            static public void _dapperTest() {
    
                Mono.Data.Sqlite.SqliteConnection connection = new Mono.Data.Sqlite.SqliteConnection();
    
                connection.ConnectionString = @"Data Source=パス/test.sqlite";
                connection.Open();
    
                var query = "select * from testTable;";
    
                var result = connection.Query<testTable>(query);
                foreach(var p in result) {
                    Console.WriteLine("ID:" + p.test_id + " 名称:" + p.name);
                }
    
                connection.Close();
            }
    

    DapperExtension을 사용한 InsertUpdate 처리



    Model에서 Insert 및 Update 문을 자동으로 생성하고 처리할 수 있습니다.

    DapperExtension 정보

    내보낼 Sql 문의 형식을 변경합니다.
    DapperExtensions.DapperExtensions.SqlDialect = new DapperExtensions.Sql.SqliteDialect();
    
            static public void _dapperExtensionTest() {
    
                //Sql文を [testTable].[test_id]から [test_id]に変更する
                DapperExtensions.DapperExtensions.SqlDialect = new DapperExtensions.Sql.SqliteDialect();
    
                Mono.Data.Sqlite.SqliteConnection connection = new Mono.Data.Sqlite.SqliteConnection();
    
                connection.ConnectionString = @"Data Source=パス/test.sqlite";
                connection.Open();
    
                //DapperExtensionを使った処理
                testTable testTable1 = new testTable();
                testTable1.name = "aaaaaa111";
                connection.Insert<testTable>(testTable1);
    
                var query = "select * from testTable;";
                var result = connection.QueryFirst<testTable>(query);
    
                //DapperExtensionを使った処理
                result.name += "qqqq111";
                connection.Update<testTable>(result);
    
                connection.Close();
    
            }
    

    testTable 모델
  • 모델에는 Getter Setter를 반드시 쓰는 것
  •  public class testTable {
    
        public int test_id { get; set; }
    
        public string name { get; set; }
     }
    

    Swagger를 자동 생성



    Stoplight Studio를 사용합니다. APIURL과 파라미터를 등록하고 Swagger를 자동 생성합니다.

    정말 사용하기 좋은 OpenAPI (Swagger) 도구



    Swagger Codegen에서 API 클라이언트, 스텁 서버 및 HTML 정의를 자동 생성



    Swagger Codegen을 설치하고 API 클라이언트와 모델 파일을 지정된 언어로 내보냅니다.
    템플릿을 사용자 정의하는 것이 편리합니다.

    OpenAPI Generator에서 RESTful API 정의에서 다양한 자동 생성
    Swagger Codegen
    Swagger Codegen Git
    swagger-codegen generate -i http://petstore.swagger.io/v2/swagger.json -l 言語を指定する(csharp) -o 出力ディレクトリ 
    

    swagger 처음 만졌습니다.

    Azure에서 무료 제품 목록



    Azure Functions Free

    개발에 있어서의 포인트


  • Gtk2#는 Mono.Data.Sqlite를 사용한다. Dapper와 함께 사용할 수 있습니다
  • gtk의 샘플을 찾는 데 어려움을 겪었다. C# gtk hotexamples 조사하고 싶은 메소드명으로 조사하면 git에 오르고 있는 샘플을 일람할 수 있는 사이트를 찾을 수 있었다.
  • 모델에는 getter setter를 반드시 쓰는 것

  • DataMapping



    간편 리눅스(Ubunch) GUI 앱 개발 초급 후편
    간편한 Linux(Ubunch) Gui 앱 개발 입문
    간편한 Linux(Ubunch) GUI 앱 개발 부품 샘플집

    좋은 웹페이지 즐겨찾기