אתה יכול לשלב מציג מסמכים ללא תוספים ביישום ASP.NET Core, MVC או WebForms מבלי לבקש מכל משתמש להתקין דבר.
חברות שמספקות חוזים, שרטוטים או נכסי עיצוב זקוקות למציג שמכבד את מדיניות האבטחה הארגונית ולעולם לא מכריח משתמשים להתקין תוספי דפדפן מיושנים. Doconut מספקת SDK של מציג מסמכים ל‑.NET עבור זרימות עבודה של PDF, Office, CAD, דוא״ל ותמונות בדפדפן. זה אינו שירות מאוחסן שאתה קורא לו: אתה מתקין אותו באפליקציה שלך, והוא מציג שם. פוסט זה מתאר את החלטות האינטגרציה מבלי להסתמך על קוד לדוגמה ספציפי לגרסה.
הבהרה ראשונה, מכיוון שהשניים קלים לבלבול. Doconut.app הוא מציג האינטרנט החינמי — קובץ אחד, נפתח בלשונית דפדפן, נמחק לאחר מכן. זה לא משהו שאתה משלב. מה שאתה משלב הוא Doconut Viewer, ה‑SDK, וכל מה שלמטה מתייחס אליו.

1. למה אבטחה והצגה ללא תוספים חשובה לאפליקציות רשת .NET
חברות מודרניות מתייחסות לכל מסמך כאל פוטנציאל לדליפת מידע. כאשר אתה משלב מציג שמסתמך על ActiveX, Flash או לקוח מקומי, אתה יורש שלושה סיכונים:
| סיכון | השפעה על יישום .NET שלך | איך Doconut App מבטל זאת |
|---|---|---|
| תלות בתוסף | המשתמשים חייבים להתקין או להפעיל תוסף דפדפן, מה שמוביל לפניות תמיכה וכאבי ראש של תאימות. | Doconut פועל לחלוטין ב‑HTML5/Canvas, ללא צורך בתוספים. |
| העברה לא מוצפנת | קבצים עוברים ב‑HTTP או נשמרים בטקסט גלוי, מה שמפר את GDPR, HIPAA או מדיניות פנימית. | ה‑SDK רץ בתוך האפליקציה שלך, ולכן ההעברה והאחסון נשארים תחת מדיניות TLS וההצפנה שכבר אתה מיישם. Doconut לא מוסיף קפיצה נוספת. |
| מחזור חיים בלתי מבוקר | קבצים עלולים להישאר על השרת, מה שמרחיב את משטח הפגיעה. | ניהול השמירה הוא שלך, מכיוון שהמסמכים לעולם לא עוזבים את הסביבה שלך. פלט רינדור זמני נכתב במקום שאתה מגדיר ונמחק לפי לוח הזמנים שלך. |
העובדה האדריכלית החשובה היא שה‑SDK מותקן בסביבה שלך ואינו מבצע קריאות לשרתים של Doconut. שום דבר אינו מועלה אלינו, ולכן אין מעבד צד שלישי להוסיף למפת הנתונים ואין מדיניות שמירת ספקים של צד שלישי להתאים עם שלך.
2. הכנת פרויקט .NET
השתמש בחבילה, בתיעוד ובדוגמאות המתאימות לגרסת Doconut שנבחרה לפרויקט. דף ההורדה הרשמי של Doconut הוא נקודת ההתחלה האמינה.
לפני האינטגרציה, אמת את סביבת הריצה של .NET, רשום את גרסת החבילה, שמור את תצורת הרישיון מחוץ לבקרת גרסאות, והתחל עם מסמכים מייצגים. ל‑ASP.NET Core, MVC ו‑WebForms יש מחזורי חיים של אפליקציה שונים, ולכן אין להתייחס להגדרות שלהם כאילו הן זהות.
3. בניית נקודת קצה מאובטחת להעלאה – AES‑256, SSL, ומחיקה אוטומטית
ה‑SDK יכול לקרוא מסמך ממסלול פיזי, זרם, מערך בתים, מסד נתונים, כתובת URL, מיקום אינטרנט, או ספק ענן כגון S3, Azure Storage, Google Cloud או Dropbox. מה שלעולם אין לקרוא הוא מסלול שנבחר על ידי הדפדפן. יש להציב בדיקת הרשאה בין הבקשה למסמך, לא משנה מה המקור. למטה מוצגת צורה נפוצה של נקודת קצה זו ב‑ASP.NET Core; הרעיונות זהים ל‑MVC ול‑WebForms.
תהליך עבודה בצד השרת
- קבל את הקובץ שהועלה – השתמש ב‑
IFormFileהסטנדרטי (אוHttpPostedFileב‑WebForms) כדי לקבל את המסמך מהלקוח. - הצפן את הקובץ עם AES‑256 – לפני שמירת ה‑stream, הצפן אותו באמצעות ספרייה מוכחת כגון
System.Security.Cryptography.Aes. אחסן את ה‑blob המוצפן במיקום מאובטח (למשל, Azure Blob Storage עם הצפנה בצד השרת מופעלת, או דלי S3 עם SSE‑AES256). - צור כתובת URL חתומה מראש קצר‑חיי – צור URL תקף למספר דקות (למשל, 5 דקות). ה‑URL צריך להיות HTTPS ולכלול אסימון קריפטוגרפי ש‑Doconut יכול לאמת. רוב ספקי האחסון בענן מציעים תכונת “כתובת URL חתומה מראש” המתאימה לצורך זה.
- החזר את ה‑URL החתום ללקוח – שלח תגובת JSON המכילה את ה‑URL. הלקוח יעביר URL זה לצופה של Doconut.
- תזמן מחיקה אוטומטית – לאחר שה‑URL החתום פג תוקף, משימה ברקע (Hangfire, Azure Functions וכו') מסירה את ה‑blob המוצפן, ומבטיחה שהקובץ לא יישאר על השרת.
ההקבילות ב‑MVC / WebForms
- MVC – מקם את הלוגיקה זהה בתוך פעולה רגילה של בקר והחזר
JsonResult. - WebForms – מימוש מטפל
.ashxאו שיטת עמוד שעוקבת אחרי אותם הצעדים: קבלRequest.Files[0], הצפן, צור כתובת URL חתומה מראש, וכתוב את תגובת ה‑JSON.
ההבדל היחיד הוא תחביר הניתוב; תהליך האבטחה נשאר זהה.
4. הצגת המסמך באמצעות ה‑SDK המותקן
שמור גישה למסמך על השרת והפעל אימות לפני עיבוד קובץ או stream. סדר הרינדור והאתחול של הממשק הוא ספציפי לגרסה; פעל לפי התיעוד הרשמי שמגיע עם הבנייה המותקנת במקום להעתיק API JavaScript גלובלי שלא נבדק.
למה זה עובד עם כל גרסת .NET
- ASP.NET Core Razor – האתחול נמצא באותו תצוגה שמארחת את טופס ההעלאה, ולכן יש דף אחד לחשוב עליו.
- MVC – השתמש ב‑
@section Scriptsכדי להזריק את הקטע הזה; הבקר מחזיר JSON ש‑$.ajaxשל MVC יכול לצרוך. - WebForms – רשום את הסקריפט עם
ClientScript.RegisterStartupScriptלאחר סיום ההעלאה, ואז קרא ל‑launchViewerבאותו אופן.
הרינדור מתבצע על השרת שלך, וזה המטרה: הדפדפן מקבל דפים מרונדרים במקום המסמך המקורי, ולכן קובץ DWG או PSD נפתח במכונה שאין בה AutoCAD או Photoshop. התאם את גודל השרת בהתאם — PDF סרוק של 300 עמודים הוא עבודה משמעותית, ועכשיו זה השכבה שלך שמבצעת זאת.
5. התאמת הצופה לתואם את הפורטל שלך
בארגונים בדרך כלל נדרש שהצופה ייראה כחלק מהמוצר שבו הוא משולב, ולא כחלון לתוך מוצר של מישהו אחר. המראה של הצופה והקבוצה של פקדים שהוא מציג ניתנים להגדרה, והאפשרויות הקיימות תלויות בבנייה שהותקנה.
קח את שמות האפשרויות מהתיעוד שמגיע עם הגרסה שלך ולא ממאמר בבלוג. ממשקי הגדרת הצופה הם בדיוק הסוג של דברים שמשנים שם בין גרסאות, וקטע שהועתק ממאמר ישן משתי גרסאות נכשל באופן שמזכיר בעיית רישוי.
ההחלטה שכדאי לקבל לפני פתיחת התיעוד היא אילו פקדים כל תפקיד צריך לראות. האם משתמש יכול להדפיס, להוריד, או רק לדפדף במסמך היא שאלה של הרשאות שהיישום שלך כבר יודע את התשובה לה. הגדר את הצופה בהתאם לתשובה הזו, במקום לחשוף כל פקד ולתקוות שאף אחד לא ילחץ.
6. ביצועים וקנה מידה – שמור על חווייה מהירה
הטמעת צופה בפורטל עם תעבורה גבוהה מעלה שני חששות מעשיים: זמן טעינה ו‑רינדור מקבילי. Doconut App מתמודדת עם שניהם כבר מהקופסה, אך ניתן לחזק את ביצועי המערכת עם כמה טריקים ספציפיים ל‑.NET.
| נושא | מה לעשות |
|---|---|
| שיהוי של הדף הראשון | טעינה אוטומטית של הדף מאפשרת לקורא לראות את הדף הראשון בעוד שהשאר עדיין מתכונן. הפעל דחיסת קבצים סטטיים (app.UseResponseCompression()) ושמור במטמון את נכסי הלקוח. |
| צפיות חוזרות באותו קובץ | מסמך שנפתח בתדירות גבוהה ניתן לרנדר פעם אחת ולשרת מהפלט השמור במטמון במקום לרנדר מחדש בכל בקשה. השאלות השכיחות (FAQ) מכסות את האפשרות .DCN בדיוק למטרה זו. |
| עלות הרינדור | הרינדור הוא עבודה של השרת. הורדת רזולוציית התמונות כאשר האיכות אינה קריטית היא המנוף הגדול ביותר, והיא שינוי הגדרה ולא שינוי קוד. |
| קונקרנציה | בדוק את הגדרות ה‑timeout וה‑AutoClose תחת עומס, וקרא את דוגמאות ה‑web farm לפני שאתה מניח שמספיק צומת אחד. הגבל קצב (rate‑limit) את נקודת הקצה של ההעלאה. |
מדוד עם המסמכים שלך. PDF מבוסס טקסט של 5 MB וסריקה של 5 MB של אותו דוח מתנהגים באופן שונה לחלוטין, ורק אחד מהם מופיע בבנצ'מרק סינתטי.
נקודות מרכזיות
- Doconut Viewer הוא SDK של .NET ללא תוספים שעובד עם ASP.NET Core, MVC, ו‑WebForms. המשתמשים שלכם אינם מתקינים דבר.
- הוא מותקן בסביבה שלכם ואינו מבצע קריאות לשרתים של Doconut, ולכן המסמכים נשארים בתוך הגבול שכבר אתם שולטים בו.
- אבטחת ההובלה, הצפנה במנוחה ושמירת נתונים הם באחריותכם להגדיר, מכיוון שהקובץ לעולם אינו עוזב את התשתית שלכם. Doconut אינו הופך למעבד במפת הנתונים שלכם.
- הקטלוג של ה‑SDK כולל 75 סוגי קבצים ב‑18 משפחות — PDF, Office, CAD, Visio, Project, דוא״ל, eBook ותמונות, עם DICOM דרך תוסף משלו.
- ההמרה מתבצעת על השרת. זה מה שמאפשר לדפדפן לפתוח קובץ DWG, והוא גם הפריט שבו יש להתחשב בגודל.
- הבקרות שהמשתמש רואה — הדפסה, הורדה, או דפדוף בלבד — צריכות להתאים להרשאות שכבר יש לאפליקציה שלכם.
- קחו את שמות אפשרויות ההגדרה מהתיעוד של הגרסה המותקנת שלכם, ולא ממאמר.
שאלות נפוצות
Q1: האם אני מתקין משהו על השרת?
A: כן. Doconut Viewer הוא SDK של .NET שאתה מתקין באפליקציה שלך — התחל מדף דף ההורדה והשתמש בחבילה ובתיעוד עבור הגרסה שבחרת. אין נקודת קצה מתארחת לשיחה, ושום דבר אינו מוגש מ‑CDN של Doconut.
Q2: מי מוחק את הקובץ לאחר הצפייה?
A: אתה. מכיוון שהמסמך וכל פלט רינדור זמני מתארחים בסביבה שלך, השמירה היא הגדרה באפליקציה שלך ולא הבטחה מספק. החלט היכן נכתבים הקבצים הזמניים ומה מסיר אותם, לפני שאתה עובר לייצור.
Q3: האם משתמשים יכולים להדפיס את המסמך?
A: הדפסה היא יכולת של הצופה, וניתן לאפשר או למנוע אותה לכל משתמש. שים לב שהדפסה מבוקרת היא חלק מהצופה עצמו — היא אינה אחת מארבעת התוספים המורשים, שהם Annotation, Converter, DICOM ו‑Search.
Q4: האם הוא יכול להמיר מסמך לפורמט אחר?
A: זהו תוסף ה‑Converter, ברישיון נפרד. צפייה והמרה הן מוצרים שונים כאן, וכדאי להיות ברורים לגבי איזה מהם באמת נדרש בתהליך העבודה.
מוכן לשלב צופה מסמכים ללא תוספים באפליקציית .NET שלך? התחל מדף דף ההורדה של Doconut — רישיון הניסיון חינמי. ואם מה שהיית צריך באמת הוא לפתוח קובץ אחד היום, Doconut.app עושה זאת בלשונית דפדפן ומוחק אותו לאחר מכן.