Üretim hattında gerçek zamanlı veri akışı kurmak, birçok işletme için hem operasyonel verimlilik hem de tedarik zinciri görünürlüğü anlamına gelir. Ancak sahadan gelen cihazların çeşitliliği, ağ kısıtları, veri tutarsızlıkları ve ERP ile senkronizasyon gibi pratik problemler çoğu zaman projelerin başarısını engeller. Bu yazıda hedefimiz tek bir somut arama niyetini karşılamak: "ASP.NET Core ve IoT kullanarak üretim hattında güvenilir, düşük gecikmeli veri toplama ve SQL Server + ERP entegrasyonu nasıl kurgulanır?"

Uygulama örnekleri ve teknik öneriler ticari bir satış yazısı değildir; gerçek işletme problemini çözmeye yönelik uygulanabilir yaklaşımlar sunar. İlgili hizmet altyapımız ve detayları görmek isterseniz özelleştirilmiş yazılım çözümlerimiz sayfasına bakabilirsiniz.

1) Hangi sorunu çözüyorsunuz? (Netleştirme)

Projeye başlamadan önce açıkça tanımlayın:

  • Hangi cihazlardan hangi frekansta veri alınacak? (PLC, IoT sensör, barkod okuyucu, weigh scale)
  • Verinin kritikliği nedir? (girişim yüzünden kaybolursa nasıl telafi edilir?)
  • Gerçek zaman derinliği nedir? (saniyeler, milisaniyeler, dakikalar)
  • ERP ile hangi veri akışı gerekiyor? (stok güncelleme, üretim tamam raporu, parti/lot eşleme)

Bu sorular, çözümün protokol, gecikme toleransı, veri modeli ve hata politikalarını belirler.

2) Önerilen mimari - yüksek seviyede bileşenler

Önerilen temel bileşenler ve veri akışı şöyledir:

  • Cihaz Katmanı: PLC/IoT sensörler, barkod okuyucular. Bazı cihazlar MQTT/HTTP destekler; eski PLC'ler için edge gateway gerekecektir.
  • Edge Gateway / Cihaz Ajanı: C# ile yazılmış hafif ajanlar veya Raspberry Pi gibi cihazlarda çalışan yazılım. Lokal buffering, saat senkronizasyonu ve protokol dönüşümü (ör. Modbus→MQTT) sağlar.
  • Mesajlaşma Katmanı: MQTT broker veya Kafka gibi mesaj kuyruğu. Bu katman yüksek trafikte tamponlama ve tüketici ayrıştırması sağlar.
  • API Katmanı: ASP.NET Core Web API veya minimal API'ler; giriş verilerini doğrulama, idempotency key kontrolü ve ön işleme yapar.
  • İşleme Katmanı: Arka plan servisleri (IHostedService) ile kuyruktan gelen verileri toplama, toplu yazma ve iş mantığını uygulama.
  • Veri Deposu: SQL Server - staging tablolar + normalleştirilmiş üretim ve stok tabloları. Zaman serisi verileri için ayrı partitioning stratejisi önerilir.
  • ERP Entegrasyon Katmanı: Event-driven push veya batch sync. API gateway veya ESB üzerinden dönüşümlü mesajlar gönderilir.

Pratik akış (örnek)

Cihaz → Edge Agent (buffer, retry) → MQTT → ASP.NET Core API (idempotent) → Staging → İşleme/Bulk write → Ana tablolar → ERP event

3) Veri modeli ve SQL Server için öneriler

Performans ve izlenebilirlik için iki kademeli saklama stratejisi kullanın:

  • Staging (Ham) Tablolar: Gelen ham olaylar için. Kolonlar: EventId (GUID), DeviceId, TimestampUTC, Payload JSON, ReceivedAt, ProcessedFlag. Bu tabloya yazım tek noktadan ve hızlı olmalı; minimal indeksleme ile önce yazın.
  • Normalized İş Tabloları: WorkOrder, Operation, SerialTrace, Inventory. Staging'den ETL/semplice stored procedure veya arka plan servisi ile toplu taşıma yapılır.

SQL Server önerileri:

  • Zaman temelli partitioning uygulayın (örn. aylık). Bu, büyük Event tablosunun yönetimini kolaylaştırır.
  • Staging için minimal logging ve batch commit kullanın (TOPLUDATA: SqlBulkCopy veya TVP + stored proc).
  • Değişiklik takibi ve hata ayıklama için temporal tables veya ek bir event_log tablosu düşünün.

4) ASP.NET Core ile pratik entegrasyon detayları

Asp.Net Core tarafında dikkat edilmesi gerekenler:

  • Idempotency: Her cihaz olayına client tarafından üretilen benzersiz EventId ekleyin. API, aynı EventId tekrar gelirse sadece 200/204 döndürmeli, duplicate işlem yapmamalıdır.
  • İçerik Doğrulama: JSON Schema veya FluentValidation ile giriş validasyonu uygulayın; hatalı veriyi staging'e işaretleyin ama ana işlemi durdurmayın.
  • WebSocket / SignalR vs MQTT: Gerçek zamanlı yönetim ekranları için SignalR kullanın; cihaz iletişimi için MQTT tercih etmek genelde daha hafiftir. ASP.NET Core, MQTT broker ile bridge kurabilir veya MQTT client kütüphanesi ile doğrudan abone olabilir.
  • Performans: EF Core tek tek satır yerine batch işlemler için uygun değildir. Toplu yazım için SqlBulkCopy, Dapper ile stored procedure çağrısı veya EF Core 7+ özelliklerini değerlendirin.
  • Background Processing: IHostedService ile kuyruğu tüketen, validation ve transform yapan bir arka plan servisi yazın. Bu servis hata durumunda retry, DLQ (dead-letter queue) ve alert tetiklemelidir.

Kod pratikleri

  • Model binding ve veri transfer objelerinde sadece ihtiyaç duyulan alanları kullanın.
  • Activity/CorrelationId başlığı ile istekleri takip edilebilir hale getirin (OpenTelemetry uyumlu).
  • Bağımlılıkları (DB, broker) resiliency pattern'leriyle (retry, circuit breaker) sarın: Polly kütüphanesi uygundur.

5) Barkod/Depo senaryosu: Uygulanabilir adımlar

Barkod cihazları ve depo süreçleri için dikkat edilmesi gereken teknik noktalar:

  • Barkod okuma olayları genelde tekrarlı gelir; debouncing ve deduplication gerekir. EventId + timestamp ile kısa süreli duplicate kontrolü yapın.
  • Saat senkronizasyonuna dikkat edin: Cihaz saatleri farklı olabilir. Tüm zaman damgalarını UTC olarak saklayın ve cihaztan gelen yerel zamanı meta alanında tutun.
  • Offline çalışma: Cihaz bağlantısı kesilirse ajan local olarak SQLite gibi hafif bir veritabanına yazar ve bağlantı geri geldiğinde toplu gönderir.
  • Envanter güncellemeleri için önce staging'e yazıp sonrasında atomik işlemlerle stok tablosunu güncelleyin (transaction + stored proc kullanımı).

6) ERP entegrasyonu: Senkron veya asenkron karar verme

ERP ile entegrasyon iki ana yaklaşımdan biriyle yapılır:

  • Senkron: API çağrısıyla anlık stok güncellemesi veya operasyon tamam bildirimi. Basit ama ERP cevap süreleriyle sisteminiz bloklanabilir.
  • Asenkron/Event-driven: Üretim tamam olayı kuyrukla ERP middleware'ine gönderilir; retry stratejisi ve DLQ uygulanır. Bu yöntem ölçeklenebilir ve daha dayanıklıdır.

Teknik tavsiye: Kritik finansal kayıtçı işlemler için ERP tarafında bir onay/karşılama mekanizması kurun; çakışmaları önlemek için idempotent API'ler veya transaction token'ları kullanın.

7) Güvenlik, izlenebilirlik ve operasyon

  • İletişim Güvenliği: Cihaz↔Edge ve Edge↔Broker/API arası TLS. Mümkünse mTLS kullanın.
  • Yetkilendirme: Cihaz bazlı kimlik doğrulama (certificate veya per-device token). API için JWT ve RBAC.
  • Log ve Telemetri: Yapılandırılmış log (Serilog), metrik (Prometheus) ve takip (OpenTelemetry). CorrelationId ile uçtan uca izleme sağlayın.
  • Monitoring ve Alert: Kuyruk gecikmesi, işleme hataları, DB yazma hataları için KPI tanımlayın ve uyarı kurun.
  • Yedekleme ve Kurtarma: Staging verilerini kısa süreli saklayın; ana tablolar için düzenli yedekleme ve restore prosedürlerini test edin.

8) Test stratejisi

Gerçek cihazlara ulaşamıyorsanız cihaz simülatörü yazın. Testleriniz şu senaryoları içermeli:

  • Ağ kesintileri ve bağlantı geri gelmesi
  • Duplicate event gönderimi
  • Yük testi: saniyede gelen olay sayısına göre ölçeklenme
  • ERP hata senaryoları ve compensation (geri alma) testleri

9) Uygulama planı: 6 adımlık yol haritası

  1. Analiz ve veri envanteri: Hangi cihazlar, hangi frekans, kritik veriler tanımlanır.
  2. POC (Proof of Concept): Bir üretim hattında küçük kapsamlı POC. Edge agent, MQTT veya HTTP köprüsü, ASP.NET Core API ve staging tablosu.
  3. Veri modeli ve SLA belirleme: Partitioning, retention ve SLA tanımları yapılır.
  4. Uygulama geliştirme: Device agent, API, background worker ve ERP connector geliştirilir.
  5. Test ve güvenlik hardening: Simülasyon testleri, penetration test, sertifika yönetimi.
  6. Fazlı üretime geçiş: Kademeli rollout, izleme ve performans optimizasyonu.

Uygulama boyunca teknik ve operasyonel sorularınız olursa, doğrudan konuşmak isterseniz iletişim sayfamızdan ulaşabilirsiniz. Bu sayede saha koşullarınıza özel riskler ve öncelikler değerlendirilebilir.

Sonuç

ASP.NET Core, C# ve SQL Server ekosistemi üretim hattı verilerini toplamak ve ERP ile senkronize etmek için güçlü bir temel sunar. Ancak başarının anahtarı doğru mimari kararları, idempotent veri akışı, reliable edge buffering ve iyi tanımlanmış entegrasyon kontratlarıdır. Yukarıdaki adımlar; sahadan uygulamaya, veri modellemeden operasyonel izlemeye kadar pratik bir yol haritası sağlar. Her işletmenin cihaz parkı ve öncelikleri farklıdır; uygulanabilir bir POC ile başlayıp kademeli olarak büyütmek en az riskli yaklaşımdır.

Teknik danışmanlık veya uygulama desteği ihtiyacınızda, özel ihtiyaçlarınıza göre çözüm tasarlamak için özelleştirilmiş yazılım çözümlerimiz sayfasını inceleyebilir veya iletişime geçebilirsiniz.

Bu konuyu kendi işletmeniz için değerlendirelim.

Mevcut süreci ve kullandığınız sistemleri anlattığınızda uygulanabilir seçenekleri birlikte çıkarabiliriz.

Projenizi anlatın →