推薦文章

[料理佳餚] 使用 dotnet-svcutil 手動從 WSDL 檔案產生代理類別並整合進 .NET Core 專案

以往我們要呼叫 ASMX Web Service 的服務,大多透過 Visual Studio 的「加入 -> 服務參考」的程序,自動產生 Reference.cs 程式碼檔案,裡面就有我們要用的服務代理。但現在因為開發環境無法連線 Web Service,所以無法使用這個方式,我們手上有的是一個 *.wsdl 檔案,要改用手動的方式建立服務代理。

...繼續閱讀 »
on supershowwei

[廚餘回收] Entity Framework Core 錯誤:「...cannot be tracked because another instance...」的原因與解法

從應用程式日誌看到下面這個 Entity Framework Core(以下簡稱 EF Core)發出的例外錯誤:

The instance of entity type 'MyTable' cannot be tracked because another instance with the same key value for {'Key'} is already being tracked. When attaching existing entities, ensure that only one entity instance with a given key value is attached.

它的意思是,相同主索引鍵的實體無法被追蹤,因為已經有另一個實體正在被追蹤,我們來看看怎麼回事。

...繼續閱讀 »
on supershowwei

在 Visual Studio 連接 macOS 透由 .NET MAUI 開發 iOS 應用 (下載 xip 在 Mac 上安裝 Xcode)

這篇有提到:

在 macOS 上最主要就是要安裝 Xcode,而如果要安裝 Xcode 的管道,基本上有兩種:

  1. 透過 macOS 上的 App Store 安裝。(登入 Apple 帳號後即能免費下載使用)
  2. 透過 Apple Developers 網站來下載 .xip 安裝。(需要先有訂閱 Apple 開發者帳號才能下載使用)

本篇就來談談如何透過 .xip 來安裝 Xcode。

...繼續閱讀 »
on jamestsai

觀察 .NET Core Container 的 Exec Mode 和 Shell Mode 差異

上篇 得知 .NET Core 應用程式可以接收 SIGINT/SIGTERM訊號,來完成 graceful shutdown;在處理批次流程中,當應用程式接收到 SIGINT/SIGTERM 訊號後,就要進入狀態的保存,避免服務被強制中斷,導致狀態混亂。預設 Container 預設等待 10 sec,也就是這個時間範圍內就要完成狀態保存,如果超過時間就可以考慮送出 Timeout 參數,延長工作關閉流程。Linux 執行應用程式的時候有區分 shell model 以及 exec mode,若使用不當,會導致接收不到 SIGINT/SIGTERM 訊號,無法 graceful shutdown。

...繼續閱讀 »
on yc421206

在 Visual Studio 連接 macOS 透由 .NET MAUI 開發 iOS 應用 (用 App Store 安裝 Xcode)

如果要順利在 Visual Studio 來連接 macOS 透由 .NET MAUI 開發 iOS 的話,對於要連接的 macOS 上是需要事先安裝好 Xcode 等 Apple 所設計的 iOS 開發工具的。

不然,就算有開啟遠端登入等功能讓 Visual Studio 能夠連線並自動安裝 mono 等軟體元件,那也沒有 iOS 的相關 SDK 供使用。

在 macOS 上最主要就是要安裝 Xcode,而如果要安裝 Xcode 的管道,基本上有兩種:

  1. 透過 macOS 上的 App Store 安裝。(登入 Apple 帳號後即能免費下載使用)
  2. 透過 Apple Developer 網站來下載 .xip 安裝。(需要先有訂閱 Apple 開發者帳號才能下載使用)

本篇介紹是使用第一種方式來完成唷~~~

...繼續閱讀 »
on jamestsai

Nuget 的中央軟體套件管理 (CPM) 使用

在 Nuget 的相依協助下,已經某種程度上可以是協助擺脫 dll hell 的一大工程(功臣?)

但是如果在一個解決方案當中有多個專案要引用相同的 Nuget 套件時,可能會發生各個不同的專案有各自使用不同 Nuget 套件的版本(套件相同版本不同)。

而每次要更新某個 Nuget 套件時就會要針對不同專案要處理更新,就會顯得相當繁瑣。

在 .NET 6.0 的設計中,開始可以使用中央的套件管理 Central Package Management (CPM) 的處理方式來處理這個問題。

...繼續閱讀 »
on jamestsai

監視 Docker Container 資源 (cAdvisor + node-exporter + prometheus + grafana)

cAdvisor 是一個開源的容器資源使用情況和效能分析工具,主要由 Google 開發。它專門用於收集、聚合、處理和匯出有關執行中容器的資訊。
Node-Exporter 收集主機層級的各種指標,包括:CPU 使用率、記憶體使用情況、磁碟 I/O 統計、網路流量、檔案系統使用率、系統負載

  • Node Exporter:關注整個主機/節點層級的指標
  • cAdvisor:專注於容器層級的指標

再搭配上 Prometheus 收集指標,用 Grafana 呈現資訊

圖片

出自 https://blog.techbridge.cc/2019/08/26/how-to-use-prometheus-grafana-in-flask-app/

...繼續閱讀 »
on yc421206

進修課程