פיתוח Multi-Tier Apps בענן Microsoft Azure

יום שני, נובמבר 3, 2014

כאשר אנו רוצים להקים בסביבת ענן מערכות מורכבות מרובות שכבות (Multi-tier) אנחנו נדרשים לממש רכיבי Backend (שרתי אפליקציה או בסיס נתונים) אשר אינם חשופים לרשת האינטרנט החיצונית וניתן לגשת אליהם מתוך רשת פנימית של המערכת ללא יציאה לרשת האינטרנט וגם לתת יכולות גדילה (scale) ושרידות (redundancy). בפוסט זה נראה איך ניתן להגדיר Internal Load Balancer עבור שכבת ה Backend של המערכת שלנו ונראה את היכולת החדשה שנוספה ב- Azure SDK 2.4 להגדיר Internal Load Balancer עבור Web roles ו Worker roles. יכולת זו מאפשרת לנו לפתח את שכבת ה backend כ web/worker role ולא לתחזק מכונות וירטואליות (VM). הארכיטקטורה שנרצה לממש...
תגיות: , ,
אין תגובות

יכולות הזדהות חדשות באפליקציות באמצעות Visual Studio 2013 ו- Microsoft Azure

יום ראשון, אפריל 27, 2014

טוב, אז אחרי הפוסט הקודם בו הצגתי את עקרונות מנגנוני הזדהות מודרניים, בפוסט זה נראה איך מממשים את צורת ההזדהות באפליקציית web עם דגש על יכולות חדשות ש Visual Studio 2013 נותן לנו (ובדרך נעשה סדר מול גרסאות קודמות של Visual Studio). כמו שכתבתי בפוסט הקודם, ספריית WIF נמצאת אתנו כבר זמן ממושך, ויכולת השילוב של הספרייה בקוד שלנו השתפר בכל גרסאות Visual Studio - ב- Visual Studio 2010 היינו צריכים להתקין את WIF SDK 4.0 ולהשתמש באפשרות "Add STS Reference" או להגדיר בעצמנו את כל ה references והקונפיגורציות. ב- Visual Studio 2012 אחרי התקנת Nuget package המתאים נוספה לנו האפשרות הבאה...
אין תגובות

Breeze.js – משב רוח רעננה בפיתוח אפליקציות ניהול מידע

יום שלישי, ינואר 7, 2014

Breeze.js הינה ספריית Javascript המאפשרת ניהול מידע, בעיקר באפליקציות הנקראות Rich Client Applications, כדוגמת SPA (Single Page Applications), המשתמשים בכל מבול הספריות המכונות MV*. Breeze.js מביא עימו מספר יכולות: גרף ישויות – מחזיק גרף של אובייקטים Client-Side. הורדת Metadata – של הישויות מהשרת, אין צורך בהגדרת ישויות בצד ה – Client מעקב שינויים – שומר בזכרון פעולות CRUD שמתבצעות ב – Client תשתית תשאול – המאפשרת לבצע שאילתות דמויות .Linשמירה – יכולת לשמור חבילת שינויים בפניה אחת לשרת. בניגוד להרבה ספריות MV*, ל- Breeze יש גם רכיב .NET בצד השרת (!) המאפשר אינטגרציה עם תשתיות ORM כמו Entity Framework. בדרך כלל משלבים בין ספריות MV*,...
אין תגובות

Modern Authentication – איך בונים מנגנון הזדהות?

יום שלישי, דצמבר 17, 2013

כל מי שהתחבר לאחד משרותי הענן של מיקרוסופט - Azure, MSDN, Office 365 וכו' שם לב שבזמן ההזדהות משתנות הכתובות בדפדפן ומשהו "שונה" קורה. בפוסט זה נתחיל בהסבר על אופן המימוש של מנגנון הזדהות מודרני לאתרי אינטרנט, אפליקציות מובייל או דסקטופ. אז מה יש לנו היום בארגז הכלים? ב .NET Framework קיימים מספר מנגנונים לממש הזדהות ולשלב במערכת את ניהול זהויות המשתמשים (Identities), אשר חלקם חופפים וחלקם משלימים (שאלת ראיון עבודה - מתי נשתמש ב HttpContext.User ומתי ב Thread.CurrentPrincipal), כמו כן קיימים מגוון Membership providers ופיתוח עצמי רב של מנגנוני ניהול משתמשים. הניסיון המצטבר בתעשייה מראה כי בניית מנגנוני הזדהות "מקוריים"...
תגיות: , ,
אין תגובות

תכנות אירועים אסינכרוני באמצעות Reactive Extensions

יום חמישי, נובמבר 21, 2013

(Rx) Reactive Extensions הינה ספריה המאפשרת שילוב של פעולות אסינכרוניות ותוכניות מונחות ארועים, על ידי שימוש ב Observable וב- Linq.ניתן לחשוב על O כעל מערך של מידע,ובעוד זה מזכיר לנו קצת את Enumerable, למעשה הם הפוכים – בעוד Enumerable מבוסס על Pull Model, Observable מבוסס על Push Model. קריאה עמוקה יותר בנושא ניתן למצוא כאן. במאמר זה נראה כיצד להשתמש ב RX כדי לבנות Auto Complete ב- WinForms, ומיד אחר כך נבנה את אותו דבר, אך הפעם ל- Web עם Javascript, וניווכח שהם זהים למעשה. תסריט בסיסי נבנה שירות שמחזיר לנו מערך של מחרוזות התואמים למחרוזת נתונה עבור שתי הדוגמאות. נבנה...
תגיות: , , , , ,
אין תגובות

ניהול תלויות באמצעות NuGet

יום רביעי, אוקטובר 16, 2013

ניהול תלויות (Dependencies) הינו נושא מורכב בכל פרויקט תוכנה, כיום קיימות ספריות קוד ו רכיבי תוכנה רבים (צד שלישי או open source) אשר שימוש בהם מאפשר לחסוך זמן פיתוח רב אולם שימוש בספריות קוד חיצוניות מביא אתו גם סיבוכיות של ניהול תלויות בין הרכיבים השונים כיוון שלעיתים קרובות גם לספריות הקוד עצמן ישנן תלויות לרכיבים נוספים. עכשיו נוסיף למשוואה גם את הצורך בניהול גרסאות וניהול תצורת הקוד והעניינים מתחילים להסתבך... NuGet הינו פתרון לניהול תלויות בין רכיבי תוכנה בפרויקט אשר מוטמע כחלק אינטגרלי בתוך Visual studio החל מגרסת 2012 כ Visual Studio extension, NuGet הינו פרויקט Open...
אין תגובות

כיצד לייצר קוד איכותי יותר באמצעות VIsual Studio Code Metrics

יום ראשון, ספטמבר 8, 2013

בפוסט זה נעסוק בשאלה מהו קוד איכותי, דרכים שונות למדוד איכות קוד וכיצד באמצעות שימוש בכלים המובנים ב- Visual Studio 2013 אנו יכולים לייצר קוד איכותי יותר. כיוון ש”איכותי” זוהי הגדרה יחסית, ראשית אגדיר מהו קוד איכותי בעיני: קוד איכותי הוא קודם כל קוד קריא, כזה שברגע שמישהו אחר קורא אותו הוא מבין את "כוונת המשורר" ללא מאמץ, קוד זה יהיה נוח יותר לתחזוקה בטווח הארוך (צריך לזכות שכ 60-80% מפיתוח התוכנה בעולם מתבצע על קוד קיים ורק השאר על קוד חדש). הסממן השני לקוד איכותי הוא האם כשאני רוצה לעשות שינוי בקוד אני צריך...
2 תגובות

שירות הנוטיפיקציות בענן – Windows Azure Notification Hub

לפני מספר שבועות הוכרזה גרסת GA של Windows Azure Notification Hub, שהיה זמין למפתחים בגרסת preview כמספר חודשים. הכרזה על גרסת general availability היא סיבה מצוינת ע"מ לכתוב פוסט בנושא. מפתחי אפליקציות windows 8 שביננו מכירים את שרות Windows Notification Service המאפשר לאפליקציה לקבל מרכיב ה-backend של המערכת notifications בצורה יעילה וחסכונית באמצעות מנגנון דחיפה שקיים במערכת ההפעלה ה-Windows Push Notification (ראו פוסט קודם בנושא). גם לאנדרואיד ו-iPhone ישנה תמיכה ברמת הפלטפורמה ושירות בענן המאפשרים דחיפה של notifications (Apple Push Notification service , Google Cloud Messaging). יכולת זו מאפשרת לאפליקציה לספק למשתמש מידע בזמן אמת שמגיע אליו...
אין תגובות

Factory Design Pattern – איך מחליטים מה להחזיר?

יום חמישי, יולי 18, 2013

Factory משתייך לקבוצת ה- Creational Patterns, ומשמש ליצירת אובייקטים מטיפוס מסויים בזמן ריצה. הקוד שקורא ל- Factory מבקש טיפוס שמממש ממשק (Interface) או יורש ממחלקה מסויימת, ועל פי קריטריונים בזמן ריצה, מקבל את האובייקט המתאים. היתרון ברור – יש מקום אחד בתכנית שלנו שאחראי על יצירת אובייקטים של הירארכיית אובייקטים מסויימת. במאמר זה נעבור על מספר טכניקות להחלטה על איך לבחור את האובייקט המתאים בזמן ריצה?   תסריט בסיסי נניח שיש לנו הירארכיה של אובייקטים העוסקים בשליחת דואר. נגדיר פריט שרוצים לשלוח:   public class MailItem { } נגדיר ממשק IPOST: public interface IPost{ ...
תגיות: , , ,
אין תגובות

פיתוח אתרים רב-לשוניים ב-SharePoint באמצעות וריאציות

יום ראשון, מאי 26, 2013

יכולת הווריאציות (Variations) ב-SharePoint מאפשרת ליצור עותקים מדויקים של אתר פרסום אחד או יותר בכדי להציג אתר הזמין במספר שפות. לדוגמה, יכולת זו תהיה שימושית עבור ארגון הנדרש להקים אתר הזמין בעברית ובאנגלית, כאשר עורכי התוכן שלו כותבים את התכנים בעברית, וצוותי תרגום מתרגמים אותם לאנגלית. בגרסאות קודמות יכולת הווריאציות תמכה גם בהתאמה של האתר למספר מדיות (לדוגמה: אתר למחשב, לטאבלט ו/או לטלפון), אך מגרסת 2013 התאמות מסוג זה יש לבצע בעזרת Cross-site publishing.   SharePoint Variations – עותקים של אותו אתר בשפות שונות עבור כל אוסף אתרים יכולה להיות מוגדרת היררכיית וריאציות אחת, שכוללת מספר...
תגיות: , ,
אין תגובות