1. Microsoft OpenXML (.docx ve .xlsx) Dosya Anatomisi
2007 yılından bu yana kullanılan modern Microsoft Office belgeleri (.docx, .xlsx, .pptx), aslında sıkıştırılmış birer PKZip arşivinden ibarettir. Herhangi bir .docx veya .xlsx dosyasının uzantısını .zip yaparak arşiv yöneticisiyle açtığınızda standartlaştırılmış bir XML dosya ağacıyla karşılaşırsınız (ECMA-376 ve ISO/IEC 29500 standartları):
my_document.docx (ZIP Arşivi)
├── [Content_Types].xml <- MIME türleri ve parça tanımları
├── _rels/
│ └── .rels <- Ana ilişkiler tablosu
├── word/ (Excel için: xl/)
│ ├── document.xml <- Metin blokları ve paragraflar (<w:p>, <w:r>, <w:t>)
│ ├── styles.xml <- Fontlar, başlık stilleri, satır aralıkları
│ ├── numbering.xml <- Madde işaretleri ve numaralı listeler
│ ├── media/ <- Belgeye gömülen görseller (PNG, JPEG)
│ └── _rels/
│ └── document.xml.rels <- Görsel ve köprü bağlantı ID'leri2. Tarayıcıda ZIP Çözümleme ve DOMParser Dönüşümü
İstemci tarafında bir .docx belgesi açılırken tarayıcı JSZip benzeri kütüphanelerle arşivi RAM belleğinde açar. Ardından document.xml içeriği tarayıcının yerel DOMParser API'si ile bir XML DOM ağacına ayrıştırılır.
Paragraflar (<w:p>) HTML5 <p> etiketlerine, biçimlendirilmiş metin akışları (<w:r><w:t>) ise <span> etiketlerine dönüştürülür. Kalın (<w:b>), italik (<w:i>) ve renk (<w:color>) etiketleri CSS sınıflarıyla eşleştirilerek kullanıcının düzenleyebileceği bir contentEditable editörüne aktarılır.
3. Excel Tablolarında Performans ve DOM Sanallaştırması (Virtual Scrolling)
Büyük bir Excel tablosunda on binlerce satır ve onlarca sütun bulunabilir. 10.000 satırlık bir tablonun tüm hücrelerini aynı anda HTML <table> olarak DOM'a basmak tarayıcı belleğini gigabaytlarca şişirir ve sayfayı dondurur.
Bu sorunu çözmek için Sanallaştırma (Virtualization) tekniği kullanılır: Ekranda o an yalnızca kullanıcının görüş açısına giren 30-40 satır render edilir. Kullanıcı aşağı doğru kaydırdıkça, görünümden çıkan satırlar DOM'dan silinir ve yeni satırlar anlık olarak hesaplanarak aynı DOM düğümlerine yeniden yazılır.
| Ölçüt | Klasik DOM Render (10.000 Satır) | Sanallaştırılmış Grid (Virtual DOM) |
|---|---|---|
| DOM Düğümü Sayısı | 100.000+ DOM Elemanı | Yalnızca ~150 DOM Elemanı |
| İlk Yükleme Süresi | 4 - 8 Saniye (Tarayıcı Donar) | < 80 Milisaniye (Anında) |
| RAM Tüketimi | 800 MB - 1.5 GB | 40 - 60 MB |
| Kaydırma Akıcılığı (FPS) | 10 - 20 FPS (Kekeleme) | 60 FPS Sabit |
4. Formül Motoru ve Bağımlılık Grafı (Dependency Graph)
Elektronik tablolarda bir hücredeki değer değiştiğinde (örneğin A1 hücresi), bu hücreye bağımlı olan =TOPLA(A1:A10) veya =ORTALAMA(A1:B5) gibi tüm formül hücrelerinin anlık olarak yeniden hesaplanması gerekir.
Yazılım Motoru Ofis Stüdyosu, döngüsel bağımlılıkları (circular reference) önlemek için bir Yönlü Döngüsüz Grafik (DAG - Directed Acyclic Graph) yapısı kullanır. Hücre güncellendiğinde sadece etkilenen hücreler güncellenerek gereksiz hesaplama yükü engellenir.
5. Kurumsal Gizlilik ve Sıfır Veri Saklama
Finansal tablolar, çalışan maaş listeleri ve şirket sözleşmeleri en yüksek derecede gizlilik gerektiren belgelerdir. Yazılım Motoru Ofis Stüdyosu ile açtığınız tüm Word ve Excel belgeleri %100 yerel bilgisayarınızın RAM belleğinde işlenir; dosyalarınız asla üçüncü taraf bir sunucuya iletilmez.