HTTP Server תחת Win32

zahalul

New member
HTTP Server תחת Win32

שלום,
עלי לכתוב אפליקציה העוסקת בהקלטות מהירות לדיסק. איני רוצה לערב .NET אלא רק Win32 (גם כדי שאוכל להמיר בקלות ללינוקס).
האפליקציה הזו תכיל גם שרת HTTP ע"מ לקבל בקשות מ- Client שכתוב ב- JS.
האם זה אפשרי ?
תודה,
צהלול
 

Guy Yafe

New member
אתה סותר את עצמך

אם תכתוב ב - Win32, אתה תצטרך להתחיל פחות או יותר מההתחלה כדי להעביר ללינוקס.
אם ההמרה ללינוקס קריטית עבורך, הייתי ממליץ לך לכתוב דווקא בJAVA, אבל יכול להיות שתשלם בביצועים (אם כי זה בכלל לא בטוח).
אם הביצועים חשובים לך, כתוב את האפליקציה בC++, ונסה להשתמש בכמה שפחות API של חלונות: השתמש בBOOST וב - QT.
&nbsp
לגבי שרת HTTP: כמעט בכל שפה מישהו כתב שרת. בחר את השרת שקרוב לליבך והתקן אותו.
יש הרבה שרתים שניתן להטמיע אותם (embedded) באפליקציה. TOMCAT למשל מאפשר את זה, כך שאם אתה כותב בJAVA, אתה יכול להטמיע את השרת בתכנה שלך.
מצד שני יכול להיות שהפתרון הנכון הוא להקים שרת HTTP, ולהקים את האפליקציה שלך ולתת להם לדבר אחד עם השני.
&nbsp
פרט יותר על הפרוייקט שלך ואפשר יהיה לייעץ יותר טוב על הארכיטקטורה.
 

zahalul

New member
האם APACHE הוא רלבטי במקרה זה ?

שלום,
כיצד אפליקציית ה server מדברת עם ה- http server ?
האם מישהו יכול לספק דוגמת קוד ?
האם APACHE הוא רלבנטי ?
אני מחפש פתרון חינמי שהוא גם OpenSource.
איך גורמים לכך שבקשת HTTP שהגיעה ל- HTTP Server תפעיל קוד באפליקציית ה- Server שלי ?

תודה,
צהלול
 
גגל mod_mono לאפצ'י.

ניתן להריץ קוד C# מתוך האפצ'י בדרך זו.
https://www.google.co.il/search?q=mod_mono+apache
&nbsp
וכך ניתן לכתוב קוד asp.net ולהריץ בלינוקס.
&nbsp
לחליפין - אפשר גם לממש את מה שכתבתי ולבנות שרת משלך (ירוץ ללא בעיות על לינוקס).
&nbsp
אפשר גם לבנות שרת בפיתון, אבל הביצועים בסביבת חלונות ירודים מאד.
&nbsp
 
מקצת נסיון ...

כתיבה של קוד .net תרוץ על מרבית הלינוקסים ללא שכתוב קוד (כל עוד לא השתמשת בwin32api) תחת מונו.
&nbsp
מבדיקה שביצעתי - גם שרת HTTP תוך שמוש באוביקט HttpListener.HttpListener - עבד גם על לינוקס.
 

zahalul

New member
איני יכול להשתמש ב- .NET

שלום,

מה זה האובייקט HttpListener ? באיזה שרת אני משתמש במקרה זה ?

תודה,
צהלול
 

zahalul

New member
בשל בעיית Performance איני רוצה להשתמש ב- .NET

אני כותב אפליקציה שמקליטה בקצב של עשרות Gb/Sec לשניה. איני רוצה להפעיל את ה- Framework ברקע.
תודה,
צהלול
 

Guy Yafe

New member
תוכל להרחיב יותר על האפליקציה שלך?

מה בדיוק אתה רוצה להקליט ואיפה?
אם אני מבין נכון, אתה רוצה להקליט מוזיקה?
אם כן מאיפה המוזיקה הזו תגיע, באיזה פורמט ואיפה היא הולכת להישמר? האם הלקוחות מקליטים על המחשב שלהם ומשדרים אליך (בסגנון של סקייפ)?
הסיבה שאני שואל היא שאתה מציין שאתה רוצה להקליט עשרות Gb/S, ובו בזמן אתה מדבר על שרת HTTP.
רוחב פס במקרה הטוב הוא עשרות Mb/s, כלומר אלפית ממה שאתה עושה, ולכן ביצועי השרת לא אמורים לעניין אותך מפני שממילא לא תקבל מידע בקצב שיעמיס על השרת.
לגבי השימוש ב - .net: כאחד שמשתמש בעיקר בJAVA ובלינוקס, אני יכול להגיד שהביצועים של .net על שרתי חלונות הם מאוד גבוהים, כמעט ברמה קוד NATIVE. בנוסף, אני לא חושב שהמחשבה של Cross-Platform צריכה להטריד אותך. אתה הולך לבנות שרת שכנראה לאורך זמן. בחר לעצמך פלטפורמה ורוץ איתה.
 
אם אפשר להוסיף משהו על דבריך

כמישהו ש"משחק" הרבה עם מערכות לינוקס, הביצועים של .net על לינוקס לא שונים בהרבה מהביצועים שלהם על חלונות (כל עוד לא השתמשת בtweaks או בwin32api מתוך היישום שלך).
&nbsp
 

Guy Yafe

New member


 

zahalul

New member
פירוט לגבי האפליקציה

ברוב המקרים זוהי אפליקציה שמנטרת חומרה המחוברת למחשב (למשל ב- PCI). כמו כן היא כותבת לחומרה הצבות.
במקרה מאוד מסוים, זוהי אפלקיציה שמקליטה מידע דגום בקצב מהיר מאוד ממערכת מבצעית. ה- Client (מתוך דפדפן) יכול להתחיל / לעצור הקלטה, לקבוע ספריית הקלטה, וכן להציג קצב דגימה (מהמערכת) וקצב הקלטה (לדיסק).
בד"כ ה- target (אליו מתחבר ה- client) מריץ Windows ובמעט מאוד מקרים, Linux.
השאיפה היא שצד ה- Client מכיל רק דפדפן. כל ה"חוכמה", כולל JS, HTML נמצא ב- Server.
למיטב ידיעתי, האופציות הן לכתוב Web Serviceב- WCF או ב- Node.js.
האם תוכל לחוות דעתך ?
תודה,
צהלול
 

Guy Yafe

New member
בוא נראה אם הבנתי נכון

1. יש לך אפליקציה כלשהי שיושבת על מכונה ועושה הרבה עבודת IO ועיבוד.
2. אתה רוצה לגשת לבקרה של אותה מערכת דרך הדפדפן שיושב על אותה מכונה או על מכונות אחרות.
&nbsp
אם היית עובד בJAVA, הייתי מציע Embedded Tomcat: זו דרך להריץ שרת WEB מתוך אפליקציה.
אם אתה עובד ב - .net אתה יכול לבדוק אם יש משהו דומה (Embedded IIS?), או שתקים שרת WEB לבחירתך, והוא יתקשר עם האפליקציה בפרוטוקול לבחירתך (TCP, זיכרון משותף, פסיקות...)
מכיוון שמדובר רק בבקרה ולא בהעברת המידע עצמו, אין סיבה להסתבך ותוכל להעביר הודעות על הרשת בלבד.
 
תוספת - אם הוא עובד ב.net יש משהו דומה.

כנ"ל אם הוא עובד בפייתון (אם כי הביצועים של פייתון בחלונות הם סיבה טובה להמנע מהדבר הזה).
 

Guy Yafe

New member
נשמע הגיוני

קשה להאמין שיש פיצ'ר בשפה אחת שאי אפשר למצוא באחרת
 

zahalul

New member
תיאור מדויק - השאלה באיזה טכנולוגיה לבנות את השרת

1. WCF
2. Node.Js
האם שווה לבנות שרת ביחד עם אפליקציית ה- IO או לחוד ?
 
לא הייתי נעזר בWCF

אני לא רואה סיבה לסיבוך המיותר הזה. (מחייב שכבת תאימות, לא הכי טוב ללינוקס). NODE יכול להיות שרת בפני עצמו. אישית הייתי מפריד את השרת והIO להליכים נפרדים (כאשר הIO "מקבל פקודות" עם שקע UDP או דרך מערכת הקבצים), כך שניתן להוריד אחד מהשרותים בלי לפגוע בשני (תחזוקה?) ובמקרה הצורך ליצור מערכת מקומית במקום השרת לניהול התפעול.
&nbsp
 
למעלה