DCSIMG
August 2011 - Posts - שלמה גולדברג (הרב דוטנט)

שלמה גולדברג (הרב דוטנט)

מרצה בסלע ויועץ בעולם ה - net.

August 2011 - Posts

jQuery - part 1

 

תחילת העבודה עם jQuery.
 
 
הקדמה.
במידה ואתם לומדים כרגע פיתוח לעולם ה - web או אפילו יש לכם ניסיון כלשהו בזה, סביר להניח ששמעתם כבר על המושג jQuery, כשמסתכלים בפעם הראשונה על קוד jQuery אפשר להבהל ולחשוב שזה מסובך וקשה ללמידה.
 
למעשה ההיפך הוא הנכון, jQuery היא אחת מה"טכנולוגיות" הקלות ביותר ללמידה כפי שנראה בהמשך הפוסט, מה שחשוב להבין זה מה זה בעצם jQuery למה היא נועדה וכיצד משתמשים בה.
 
מדריך זה אינו מתיימר להפוך אתכם למומחים הכי גדולים ב - jQuery אך תדעו להתחיל לכתוב קוד ב - jQuery ולהתקדם לבד כדי לעשות דברים הרבה יותר חכמים בצורה הרבה יותר פשוטה ממה שעשיתם עד היום.
 
 
נתחיל.
 
מה זה jQuery ?
jQuery היא למעשה framework העוטף פונקציונליות בשפת javascript, משמעות המשפט הקודם הוא, שלמעשה כל מה שאפשר לעשות עם jQuery אפשר לעשות גם לבד, מפני ש - jQuery אינה שפה חדשה אלא "בסך הכול "רשימת פונקציות" העזרות למפתח לכתוב קוד בצורה נקייה יותר ופשוטה יותר, וכפי שאף מתכנת לא יעלה בדעתו לממש את פונקציית Console.WriteLine לבד אלא הוא ישתמש ב - framework של net החושף פונקציה שכזו, כך המתכנת בשפת javascript לא צריך לכתוב קוד מסובך כדי לעשות אנימציות או כדי לשנות אלמנטים בעמוד ואפשר להשתמש ב - framework החושף פונקציות לעשות דברים אלו.
 
 
למה זה טוב ?
יש ל - jQuery כמה יתרונות,
ראשית עבודה איתו חוסכת הרבה זמן כתיבה ותחזוקה של הקוד, לדוגמא במידה ונרצה מקוד למצוא את כל האלמנטים מסוג a הנמצאים ב - div כלשהו ולהגדיר להם style מסוים, נוכל לכתוב את זה בשורה אחת במקום לרוץ על כל האלמנטים בלולאה ולבדוק תנאים.
 
שנית (וזה מאוד חשוב) קוד ב - jQuery יעבוד בכל הדפדפנים באותה צורה בלי צורך לוודא מה סוג וגרסת הדפדפן.
 
ל - jQuery יש מספר רב של תוספות שאחרים כתבו המתבססות על ספריית jQuery, כך שבמידה ותרצו להשתמש ב - plugin היודע להציג תמונות כמו בגלריית התמונות של פייסבוק לא תצטרכו לממש שום דבר, ותוכלו להשתמש במשהו מוכן מראש, כל עוד שאתם עובדים עם jQuery.
 
 
תחילת הלימוד.
באתר http://jquery.com/ תוכלו להוריד את קובץ הבסיס לעבודה עם jQuery, ישנם שני download, בחרו בגרסת פיתוח והורידו אותה.
 
באתר ישנם לינקים למדרכים ולתיעוד (http://docs.jquery.com/) של jQuery, אתר התיעוד הוא אחד מהאתרים הטובים ביותר שפגשתי אי פעם ללימוד, הוא כתוב בצורה מאוד נוחה לשימוש.
 
 
(פוסט זה הוא הקדמה לעבודה עם jQuery, זה לא יהיה מדריך ארוך אני אכתוב שניים/שלושה פוסטים בהם אני אסביר ואדגים כיצד מתחילים לעבוד עם jQuery)

רישום לאירוע בזמן סגירת הדפדפן

אחד מהדברים שאנחנו כמפתחי WEB נתקלים בהם מידי פעם, היא כיצד לדעת מתי הדפדפן נסגר, בדרך כלל הסיבה שאנחנו רוצים לדעת זאת היא בכדי לנקות Session שאין צורך בו עוד, אך לא רק.
 
הבעייה הגדולה עם הרצון לדעת מתי המשתמש לחץ על ה - X הוא שזה נוגד את חוקי ה - Security של הדפדפן, הפיתרון הלכאורה פשוט הוא להרשם לאירוע unload ולכתוב קוד כלשהו, הבעייה עם השיטה הזו היא שאירוע זה קורה בכל PostBack מה שאומר שאם יש טופס עם לחצנים כל לחצן יפעיל את הקוד שלכאורה אמור להתבצע רק בזמן סגירת הדפדפן.
 
באחד הייעוצים בהם הייתי, ראיתי פיתרון מאוד מעניין - אמנם משתמשים בו במשהו מאוד ישן - אך עובד.
 
הרעיון הוא להגדיר frameset המכיל שני frames, העליון בגובה של 100% המכיל את האפליקצייה עצמה, והשני שלא רואים אותו יכיל רישום לאירוע של unload, האירוע הזה יתבצע בהכרח רק כשהדפדפן ייסגר מכיוון שבכל PostBack אחר מה שמתרפרש הוא החלר העליון.
 
 
קובץ ה - frameset:
 

<html>

<frameset rows="100%,0%">

  <frame src="application.htm" />

  <frame src="buttom.htm" />

</frameset>

</html>

 

קובץ ה - application הוא כמובן האתר שלכם, קובץ ה - buttom מכיל את הקוד הבא:

    <script>

        $(window).unload(function () {

            $.ajax({

                url: "http://localhost:3328/WebService1.asmx/EndSession",

                async: false

            });

        });

    </script>

 
חשווב להשתמש עם ספריית AJAX המאפשר פעולת סינכרונית, asp.net ajax עם script manager לא מאפשר פעולות סינכרוניות ובמקרה כזה הדפדפן עלול להסגר לפני הקריאה לשרת, מה שיגרום לביטול הקריאה לשרת.
 
קוד ה - service:

    public class WebService1 : System.Web.Services.WebService

    {

        [WebMethod(EnableSession = true)]

        public void EndSession()

        {

            HttpContext.Current.Session.Abandon();

        }

    }

 
חשוב כמובן להוסיף בקונפיג את הקוד הבא:

      <webServices>

        <protocols>

          <add name="HttpGet"/>

          <add name="HttpPost"/>

        </protocols>

      </webServices>

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

להדפיס תוכן מהדפדפן בלי שאלות (להפעיל ישירות את המדפסת)

 

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

 
 
התשובה היא שכן, זה אפשרי.
 
צריך לכתוב את הקוד הבא:
 

<script>

    function Print() {

        if (document.all) {

            WebBrowser1.ExecWB(6, 2)

            WebBrowser1.outerHTML = "";

        }

        else {

            window.print();

        }

    }

</script>

 

 

<body>

    Bla Bla

    <object id="WebBrowser1" width="0" height="0" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2">

    </object>

    <a href="#" onclick="Print()">Print this page</a>

</body>

 
 
כמובן שזה יעבוד רק ב - IE ובסביבה שאנחנו יכולים לשלוט על הקונפיגורציה.
 
נוסף על הקוד צריך לסמן בהגדרות ה - Security של הדפדפן את הדבר הבא:
 
IE Security Settings
 
 
הגעתי לתשובה דרך כאן וכאן.

WCF 4 (Windows Communication Foundation) for Beginner - Table of content

 

כתבתי מדריך די מפורט בעל ארבעה עשר פרקים למתחילים בעולם ה - WCF,
 
לכל מי שמתחיל בעולם ה - WCF, או מי שרוצה להבין את היסודות, המדריך הזה הוא המקום להתחיל.
 
 
 
חלק ראשון - בו אדבר על מה זה Service ומה זה Contract.
נושאים בחלק ראשון:
  • מה המשמעות של Service.
  • מה זה Contract ומה ההבדל בין ServiceContract לבין OperationContract.
  • כיצד מתחילים לכתוב Service.
  • מה זה DataContract ומה זה DataMember.
 
חלק שני - בו אספר לכם כיצד להרים Services לאויר (Hosting)
נושאים בחלק שני:
  • סיכום דוגמת קוד להגדרה של Service מהפרק הקודם.
  • מי מחזיק את השירות באויר.
  • מה זה Endpoint.
  • הגדרה של Endpoint בקונפיג.
  • מה זה Binding.
  • הגדרה של Service Host והרמת השירות הראשון שלנו לאויר.
חלק שלישי - בו אספר כיצד לתקשר עם Service שבאויר.
נושאים בחלק שלישי:
  • סיכום דוגמת קוד מהפרק הקודם.
  • מה Client צריך לעשות כדי לתקשר עם ה - Service.
  • יצירת Client ראשון בעזרת ChannelFactory.
  • יצירת Client שני בעזרת Service Reference.
 
חלק רביעי - בו אסביר על החלקים השונים של קובץ הקונפיג.
נושאים בפרק רביעי:
  • סיכום הפרקים הקודמים.
  • ממה מורכב האלמנט Binding.
  • סוגי ה - Bindings השונים.
  • הבנת המאפיין bindingConfiguration של אלמנט Endpoint
  • הבנת המאפיין behaviorConfiguration של אלמנט Endpoint
  • הבנת המאפיין behaviorConfiguration של אלמנט Service
 
חלק חמישי - בו נמשיך להתעמק בקובץ הקונפיג.
נושאים בפרק חמישי:
  • סיכום הפרקים הקודמים.
  • יצירת Binding מותאם אישית.
  • האופצייה להגדיר יותר מ - endpoint אחד לשירות.
  • הכרת האלמנט host ו - baseAddress.
  • הכירות עם protocolMapping.
חלק שישי - אירוח השירות בפלטפורמות שונות.
נושאים בפרק שישי:
  • אירוח שירות ב - Console Application, Windows Form Application, Windows Presentation Foundation.
  • אירוח שירות ב - Windows Service
  • אירוח שירות ב - Internet Information Services - IIS
  • אירוח שירות ב - Windows Process Activation Service - WAS
  • אירוח שירות ב - AppFabric
 
חלק שביעי - בו אסביר כיצד להפעיל Service ב - javascript בעזרת Script Manager.
נושאים בפרק שביעי:
  • דוגמא להגדרה של הפעלה השירות מתוך javascript.
  • הכרת המאפיין namespace של ServiceContract.
  • בעבודה עם ajax למה עדיף WCF מאשר Web Service
 
חלק שמיני - בו אסביר כיצד הכתיבה של שירותים ב - web style והפעלה שלהם בעזרת קריאות GET ו - POST.
נושאים בפרק שמיני:
  • מה המשמעות של כתיבת שירותים web style.
  • להכיר את webHttp behavior וחלק מהמאפיינים שלו.
  • להכיר את WebGetAttribute, WebInvokeAttribute וחלק מהמאפיינים שלהם.
  • צריכה של שירות המוגדר כ - webHttp.
  • להכיר את WebServiceHost
 
חלק תשיעי - כתיבה של שירותים ב - web חלק 2.
נושאים בפרק תשיעי:
  • סיכום הפרק הקודם.
  • שימוש במנגנון ה - caching של asp.net
  • הפעלה של השירות בעזרת ScriptManager גם כשהשירות יושב בשרת אחר מהדף המשתמש בו.
 
חלק עשירי - יצירת RSS Feed בעזרת WCF
נושאים בפרק עשירי:
  • מה זה RSS Feed ומה זה ATOM.
  • הכרת המחלקות הרלוונטיות.
  • יצירת RSS Feed לדוגמא.
 
חלק אחד עשר - נכיר את המושג Messaging Patterns
נושאים בפרק אחד עשר:
  • מה זה Messaging Patterns.
  • המשמעות של Request-Respone Pattern.
  • המשמעות של One-Way Pattern, ודוגמת קוד.
  • המשמעות של Duplex Pattern.
  • המשמעות של Streaming Pattern, והרבה קוד.
 
חלק שנים עשר - Duplex Pattern
נושאים בפרק שנים עשר:
  • סיכום הפרק הקודם.
  • מה זה Duplex.
  • חסרונות ויתרונות בעבודה עם Duplex.
  • דוגמת קוד.
חלק שלושה עשר - נקודות אירוח WCF על IIS.
נושאים בחלק שלושה עשר:
  • הסבר על אירוח שירות ב - IIS.
  • לאפשר לגשת מ - WCF Service ל - HttpContext.
  • לאפשר לגשת מ - WCF Service ל - Session.


חלק ארבעה עשר - היכרות עם האופציות להגדרת המופעים של ה - Services, ועבודה עם כמה תהליכים במקביל.
נושאים בחלק ארבעה עשר:
  • היכרות עם הגישות השונות של יצירת מופעים.
  • כיצד לאפשר PerSession גם ב - http.
  • היכרות עם הגישות השונות לעבודה עם כמה קריאות לשירות בו זמנית.
 
Posted: Aug 17 2011, 11:50 PM by Shlomo | with 2 comment(s)
תגים:,