פרוייקט ל5 יחידות בסביבת NET.-שאלות חשובות - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

פרוייקט ל5 יחידות בסביבת NET.-שאלות חשובות


MasterOr

Recommended Posts

אני עושה פרוייקט סוף שנה בסביבת NET. , לקחתי על עצמי פרוייקט די קשה של בניית תוכנה למסרים מיידים כמו אייסיקיו, מסנג'ר וכו'.

השימוש יעשה בWEB SERVICE ובסביבת ASP.NET תוך שימוש בVB.NET, בעיקרון אפשר כל שפה אבל איך אני יסביר לבוחן C# אם למדתי רק VB.

עכשיו השאלה החשובה היא האם זה פשוט לבנות שיטות שיעשו לי את העבודה של השליחה המיידית של ההודעה ממחשב למחשב. כל השימוש הזה בפרוטוקולים, ששכחתי תשם של הפרוטוקול שמבצע את השליחה הזאת, הוא קשה? או שאני יוכל ללמוד את זה ?

אם מישהו מכיר אתרים שיעזרו לי או אולי פורומים שונים שמתעסקים בנושא זה יעזור לי מאוד, אפילו דוגמאות מוכנות יעזרו-אני ינסה לשבת עם המורה שלי ולהבין מה קורה שם ולנסות לכתוב את זה בעצמי.

תודה.

קישור לתוכן
שתף באתרים אחרים

  • תגובות 41
  • נוצר
  • תגובה אחרונה

קצת בעייתי הייתי אומר.

איך אתה יוזם קריאה ל client?

הקליינט שלך יצטרך לבצע קריאה לסרבר כל כמה שניות... עכשיו שאני חושב על זה ..

לא נורא אבל גם לא מדהים.

בסך הכל רעיון נחמד.

ולעבוד ב tcp:ip זה לא מדהים.

אבל זו דרך טובה ללמוד על ..client server

על איזה DB אתה מתכוון לעבוד? SQL?

קישור לתוכן
שתף באתרים אחרים

אנחנו עובדים על מסדי נתונים קטנים אז משתמשים בACCESS דרך OLEDB.

לי לא אכפת שהודעות לא יגיעו LIVE ישירות בין 2 המחשבים. העיקר שהרעיון כולו יעבוד וישתמש בWEB SERVICE

כדי להגיע לרמה של 5 יחידות

קישור לתוכן
שתף באתרים אחרים

אתה לא צריך לעשות בדיקה כל X זמן, אתה יכול לפתוח socket על פורט מסויים ולשים אותו על listen, ו-socket נוסף שישמש לשליחת פקודות.

פעם (ואני מתכוון, ממש פעם) עשיתי משהו דומה ב-VB, סוג של remote access, בשביל ללמוד קצת איך כל העסק הזה עובד..

בעיקרון ממה שאני זוכר, זה פעל ככה שכל פעם שהתבצע ניסיון חיבור בין שני המחשבים נוצר Event של Socket.connected או משהו כזה (זה יכול להיות על אותו מחשב שמתחבר "לעצמו", או על מחשב אחר - אם יש לך את האיי-פי שלו. אנחנו מדברים כאן על חיבור ישיר בין שני מחשבים, נכון? לא כמו שזאת בעצם עבודה מול שרת אחד והרבה לקוחות..).

ואז ניתן היה לשלוח סטרינגים אחד לשני (string..). מה שאני עשיתי זה דיי פשוט. הכנסתי לו בתחילת ה-string את סוג הפקודה (נניח "msg", "file" או מה שלא תרצה להכניס לשם), משהו שישמש בתור divider (נניח, "||"), ואז את ה-arguments של הפקודה.

ה"לקוח", מצידו, זיהה את סוג הפקודה לפי ה argument הראשון, ותיפעל אותה לפי כל שאר ה-string...

עריכה:

מצאתי את התוכנית הקטנה והנחמדה הזאת איי-שם בסיפריות הארכיון שלי.. :smile1:

הנה מספר שורות קוד שאולי יעזרו לך להבין יותר טוב...

(בבקשה תשתדל להתעלם מרמת התכנות הנוראה, מדובר על קוד מאוגוסט 1999)

לחיצה על Connect:

Private Sub Command1_Click()
'10049 - localhost
'40020 - invalid ip
On Error Resume Next
sck.RemoteHost = ip1
sck.Connect
StatusBar1.SimpleText = "Connection..."
If Err And (ip1 = "127.0.0.1" Or ip1 = "localhost") Then
StatusBar1.SimpleText = "Unable to connect."
MsgBox "Unknown error while tring to resolve localhost. plz restart the server and try again."
delay (10)
StatusBar1.SimpleText = "Status"
GoTo 10
End If
If Err = 40020 Then
StatusBar1.SimpleText = "Unable to connect."
MsgBox "Unable to resolve hostname: " & ip1
delay (15)
StatusBar1.SimpleText = "Status"
GoTo 10
End If
If Err Then
MsgBox Err.Description
delay (10)
StatusBar1.SimpleText = "Status"
End If
10:
End Sub

חיבור מוצלח לשרת:


Private Sub sck_Connect()
StatusBar1.SimpleText = "Connected. " & "[ " & sck.RemoteHost & " ]"
End Sub

שליחת מידע:


Private Sub sender_Click()
On Error Resume Next
Dim strdata, strtype As String
Dim changed As Boolean
Dim z, leng
changed = False
If Combo1.ListIndex = 0 Then strtype = "msgbox"
If Combo1.ListIndex = 1 Then strtype = "shell"
If Combo1.ListIndex = 2 Then strtype = "delfile"
If Combo1.ListIndex = 3 Then
strtype = "dir"
z = InputBox("Enter number of files to get: ")
leng = Len(z)
strdata = strtype & Text1.Text & z & leng
changed = True
End If
If Not changed Then strdata = strtype & Text1.Text
'Send it!
sck.SendData strdata
If Err Then MsgBox "Error. Connection alive ?"
End Sub

קבלת מידע חוזר: (מהשרת חזרה אל הלקוח, מעיין "אישור קבלה")


Private Sub sck_DataArrival(ByVal bytesTotal As Long)
Dim strdata, i As String
sck.GetData strdata, vbString
If strdata Like "errr*" Then
i = Right(strdata, Len(strdata) - 4)
MsgBox "Error report from remote machine: " & i
End If
End Sub

פתיחת תוכנית השרת:


Private Sub Form_Load()
On Error Resume Next
Call StartSysInfo
sck.Listen
If Err Then End
End Sub

זיהוי חיבור ע"י תוכנת השרת:


Private Sub sck_ConnectionRequest(ByVal requestID As Long)
If sck.State <> sckClosed Then sck.Close
sck.Accept requestID
End Sub

חיבור מוצלח:


Private Sub sck_Connect()
Dim i
'i = "Connection has been just started. The IP is: " & sck.RemoteHostIP
'MsgBox i
End Sub

קבלת מידע מהלקוח אל השרת: (אני אחסוך ממך את תוכן הפונקציה, הוא לא מעניין..)

Private Sub sck_DataArrival(ByVal bytesTotal As Long)

End Sub

קישור לתוכן
שתף באתרים אחרים

קודם כל תודה על ההשקעה!

בקשר לקוד- אני לא רוצה לעשות חיבור ישיר בין 2 מחשבים אני רוצה שזה יהיה ככה-

Client1--Web Service--Client2

אני חושב שהקוד שלך עדיין מתאים רק שקצת קשה לי להבין אותו.

בעיקרון הWS אמור להכיל את כל הפרוצדורות שמטפלות בכל העניין והאתר ASP אמור להתחבר אליו.

ככה שאם אני שולח הודעה אז היא מתקבלת ע"י הWS דרך XML והוא אמור לעשות את כל הטיפול של לאן לשלוח את ההודעה.

אני חושב שכל העניין טמון במה שאמרת לגבי הפרוטוקולים שפתוחים על פורט מסויים, רק שאין לי מושג בכל זה ואין חייב ללמוד אותם איכשהו

קישור לתוכן
שתף באתרים אחרים

כן, זה פחות או יותר פועל על אותו עיקרון...

רק שבמקום לשלוח את המידע ישירות בין שני המחשבים, המחשב הראשון שולח לשרת, בייחד עם הכתובת של מחשב היעד

ואז השרת שולח את המידע למחשב היעד לפי הכתובת שהוא קיבל

וכשהלקוח ("היעד") מקבל מידע כלשהוא מהשרת, הוא מקבל אותו ביחד עם נתון כלשהוא שמציין את המקור.

סה"כ זה לא כל-כך מסובך אחרי שאתה יודע עם איזה מודולים להשתמש במערכת הספציפית שלך (VB.NET) כדי לבצע את החיבורים בפועל.

קצת לא יזיק בקטע הזה...

קישור לתוכן
שתף באתרים אחרים

כן, זה פחות או יותר פועל על אותו עיקרון...

רק שבמקום לשלוח את המידע ישירות בין שני המחשבים, המחשב הראשון שולח לשרת, בייחד עם הכתובת של מחשב היעד

ואז השרת שולח את המידע למחשב היעד לפי הכתובת שהוא קיבל

וכשהלקוח ("היעד") מקבל מידע כלשהוא מהשרת, הוא מקבל אותו ביחד עם נתון כלשהוא שמציין את המקור.

סה"כ זה לא כל-כך מסובך אחרי שאתה יודע עם איזה מודולים להשתמש במערכת הספציפית שלך (VB.NET) כדי לבצע את החיבורים בפועל.

קצת לא יזיק בקטע הזה...

יופי של פיתרון.

אך פיספסת את כל הפואנטה.

הוא מבקש לעשות זאת עם WS.

WS לא עובד עם socket. זה פרוטוקול אחר לגמרי.

SOCKET עובד בצורה בינרית לא?

יש לי בערך 7 שנות ניסיון בפיתוח ו 3 שנים ב .net.

אז אני מאמין שאני יודע על מה אני מדבר.

MasterOr ... מה אתה יכול לספר לי על WS?

אך הוא עובד?

מה העקרונות שלו?

אני רוצה לראות שאתה מבין מה אתה רוצה ולא זורק סתם מושגים....

בהמשך נגיע גם לארכיטקטורה של הבנייה . . . . אני לא רוצה להאכיל אותך בכפית

:xyxthumbs:

קישור לתוכן
שתף באתרים אחרים

אני יודע מה זה WS ברמה של בית ספר כלומר 5 יחידות כנראה שזה לא הרבה.

גם למדתי את זה רק בשיעור האחרון אבל זה ממש פשוט.

אני שולח מידע לWS ששם יש את כל השיגרות שמטפלות במידע שלי והוא מחזיר לי מה שאני ביקשתי, עוד אנשים יכולים להשתמש באותו WS וכו'

אין לי הרבה כח לרשום על זה אבל אני יבין מה שתגיד לי.

קישור לתוכן
שתף באתרים אחרים

אני שולח מידע לWS ששם יש את כל השיגרות שמטפלות במידע שלי והוא מחזיר לי מה שאני ביקשתי, עוד אנשים יכולים להשתמש באותו WS וכו'

אין לי הרבה כח לרשום על זה אבל אני יבין מה שתגיד לי.

תאר לי מה אתה יודע בצורה יותר מפורטת?

1.מה אתה שולח?

2. מה נוצר לך כתוצאה?

3.אך בנוי WS ? (תאור כללי)

4.על איזה פרוטוקול WS מבוסס.

אל תכתוב מגילה ... רק את העיקר. (בסוף שבוע יהיה לי יותר זמן אני מקווה אז נמשיך לפתח את הרעיון)

:yelclap:

קישור לתוכן
שתף באתרים אחרים

אני שולח פרמטרים לWS, הWS מפעיל את השיגרות שלו, סאריליזציה לXML שנשלח לקליינט ובקליינט תהליך נוסף של סאריליזציה...

פרוטוקול באמת שאני לא יודע כי אין לי מושג בפרוטוקולים בכל הקשור לשימוש בהם בתיכנות. רקע כללי עליהם ואיך עובדים אני די מבין.

קישור לתוכן
שתף באתרים אחרים

הפרוטוקול עליו מבוסס WS הוא HTTP.

Definitions of HTTP:

(HyperText Transfer Protocol) - The protocol for moving hypertext files across the Internet. Requires a HTTP client program on one end, and an HTTP server program on the other end. HTTP is the most important protocol used in the World Wide Web .

Definitions of Client :

A software program that is used to contact and obtain data from a Server software program on another computer, often across a great distance. EachClient program is designed to work with one or more specific kinds of Server programs, and each Server requires a specific kind of Client. A Web Browser is a specific kind of Client.

Definitions of Server :

A server is a fancy name for a computer that's hooked up to a network (such as your office LAN, or the Internet) or a piece of software that helps that computer do its job. Servers send files across the network where your computer (the "client") receives and interprets them

אז WS שעובד הפרוטוקול HTTP מבוסס על Text. את זה כולנו מבינים.

מה היתרון של WS על .... Sockets ,לדוגמא?

Socket עובד על Connection שנוצר בין מחשבים בצורה בינרית TCP or UDP (אם אני מבין נכון) לא כתבתי מחיי אפליקציות עם זה.

כדי שתוכנה תעבוד בעקרון זה אתה צריך לכתוב גם client שיותקן על כל מחשב כמו ... או messenger וגם תוכנה ל SERVER שיספק שרותים ויאזין ל clients .

אם אתה משתמש ב WS אז יש לך תשתית מוכנה ב server שהוא שרת ה web :

IIS - information server

ההתרון הגדול של HTTP הוא שהוא שקוף ל Firewalls מפני שהוא כמו שנאמר בהתחלה הפרוטוקול הנפוץ בעולם.

וברוב המקומות הfirewall מאפשר גישה ל WWW .

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

כדי שהפורמט יהיה מסודר ותיהיה תבנית מובנת ומוגדרת לWS עובדים אם XML.

xml:Extensible Markup Language - A flexible way to create standard information formats and share both the format and the data on the World Wide Web

המבנה של WS יושב בתוך מעטפת שמוגדרת בשם Soap.

Soap מבוסס XML.

Soap :Simple Object Access Protocol) The standard for web services messages. Based on XML, SOAP defines an envelope format and various rules for describing its contents. Seen (with WSDL and UDDI) as one of the three foundation standards of web services, it is the preferred protocol for exchanging web services, but by no means the only one; proponents of REST say that it adds unnecessary complexity

.

אפשר להכנם יותר לעומק על מבנה ה soap. אבל זה לא חשוב כרגע.

מה שחשוב להדגיש שבפרוטוקול HTTP ה client פנייה לSERVER .

הSERVER מאזין "לאינטרנט" כל הזמן ... כשהוא מקבל בקשה מסויימת (פנייה לדף לדוגמא) הוא מעבד את הדף ומחזיר לclient תוצאה.(בבקשב מגיעה הכתובת IP של הclient).

אין מצב שה server יפנה בעצמו ל client .

ולכן .... אך כדי לתכנן את הפרוייקט שלך כדי שיעבוד במגבלות האלה?

ועכשיו בקצרה על WS.

אני שולח פרמטרים לWS, הWS מפעיל את השיגרות שלו, סאריליזציה לXML שנשלח לקליינט ובקליינט תהליך נוסף של סאריליזציה...

פרוטוקול באמת שאני לא יודע כי אין לי מושג בפרוטוקולים בכל הקשור לשימוש בהם בתיכנות. רקע כללי עליהם ואיך עובדים אני די מבין.

לא ממש מדוייק.

ה WS מיצג במבנה טקסטואלי את צורת הבקשה והקבלה של הפונקציות והאובייקטים שה WS עובד איתם.

כשאתה פונה ל WS מה שאתה מקבל בסביבת הפיתוח שלך (עם מה אתה עובד? interDev ?) את אותו תאור ...

אתה פותח web reference ...

כתוצאה נוצר PROXY

סביבת הפיתוח שלך יודעת לקרא את המידע וליצר לבד קוד לפי התאור שהיא מקבלת מהWS זה ה PROXY .

כך שכשאתה פונה מהתוכנה שלך לפונקציות של ה WS אתה עובד מול פונקציות ואוביקטים אמיתיים שיושבים אצלך.

"סאריליזציה לXML " כמו שאמרת ... ה XML הוא תוצאת הסאריליזציה שמתבצעת לאובייקטים.

אצלך בסביבת הפיתוח אתה עובד מול אובייקטים אמיתיים.

אבל הPROXY כתב לך את כל הפונקציות שדרוש כדי להעביר את האובייקטים סאריליזציה (לXML) והכין אותם לשליחה דרך ה WS.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.


×
  • צור חדש...