URL Routing در ASP.NET 4 Web Forms

نوشته شده در 4. بهمن 1388

vs2010_logo

URL Routing چیست؟

اولین بار در ASP.NET 3.5 SP1 مایکروسافت یاین قابلیت را رونمایی کرد، قابلیتی که پیشتر در ASP.NET MVC مرد استفاده قرار گرفته بود اینبار پا به دنیای WebForm گذاشت.

URL Routing به شما امکان استفاده از آدرس های تمیز تر، SEO-friendly (مناسب تر تر برای جستجوگرها) و web 2.0ی میدهد به عبارت ساده تر آدرس ها خواناتر، معنی دارتر خواهند شد، از این رو علاوه بر کاربرپسندتر شدن،موتور جستجوگرپسند تر هم می شود. برای مثال آدرس زیر را در نظر بگیرید:

http://www.mysite.com/products.aspx?category=software

نظرتون چیه آدرس زیر رو جایگزینش کنیم؟ بهتر نخواهد بود؟

http://www.mysite.com/products/software

در ASP.NET 4.0 قادر خواهیم بود از امکان فوق چه در معماری MVC بهره بگیریم چه در معماری WebForms.


checkmark_box_large_red 
چگونگی تنظیمات URL Routing در ASP.NET 4.0 MVC

در ASP.NET 3.5 SP1 آموختیم که چگونه با استفاده از URL Routing engine آدرس ها را به سادگی و در عین کارایی و قدرت تغییر دهیم. این کار را در رخداد آغاز نرم افزار (Global.asax )  و در بخش register/map انجام میدادیم.

مثال زیر را ببینید:

step1_thumb_5D48C8D9 


checkmark_box_large_red


چگونگی تنظیمات URL Routing در ASP.NET 4 WebForms

حال ASP.NET 4.0 به شما این امکان را می دهد تا از این قابلیت در WebForms نیز استفاده نمایید.

مثال زیر را ببینید:

step2_thumb_1A897DA1 استفاده و بایند:

step3_thumb_06FC1E00

step4_thumb_5E7D3BEB



question

چگونه با این آدرس ها کار کنیم؟

اکنون باید بتوانیم با استفاده از متدهای لازم هم آدرس های وارده را شناسایی کنیم و هم آدرس هایی که می خواهیم به عنوان خروجی لینک های استفاده نماییم.

لذا متدهای () Page.GetRouteUrl ()  ,Response.RedirectToRoute مورد استفاده قرار میدیم.

step6_thumb_15E34D1A 

نکته: در پست بک ها هم بدون مشکلی میتوانیم از این قابلیت استفاده نماییم:

<form action=”/products/software”>

web.config اما اینبار تمیزتر…

نوشته شده در 4. بهمن 1388

vs2010_logo

مختصر و مفید: کافیه تا ویژوال استدیو 2010 خودتون رو باز کنید:

File ->New Project –> create an empty ASP.NET 4.0 Web application

ویژوال استدیو 2008 سرویس پک یک، به صورت پیش فرض یک web.config با 126 خط دستور پیش روی شما قرار میده. بد نیست علتش رو بدونید:

دات نت 2 همراه با CLR 2.0 عرضه شد، پس از اون NET 3.0, 3.5, 3.5 SP1. بر پایه همون CLR 2.0 و تنها با افزوده شدن اسمبلی های جدید تولید شدند. پس طبیعی بود که web.config شما برای دسترسی و شناخت این اسمبلی ها نگارش به نگارش سنگین تر میشد و می بایست معرفی اسمبلی های بیشتری رو برای سیستم در بر میداشت.

و اما در NET 4.0. اینبار machine.config جدید که به طور موازی همراه با machine.config مربوط به CLR 2.0 در سیستم وجود داره که خودش کاربری های زیر رو در خودش رجیستر کرده:

  • ASP.NET AJAX
  • ASP.NET Dynamic Data
  • ASP.NET Routing (ASP.NET WebForms, ASP.NET MVC)
  • ASP.NET Chart Control (ASP.NET V4)

نتیجه اینکه شما با ساخت پروژه جدید با web.config جدید، تمیزتر، ساده تر و البته کوتاهتر روبرو خواهید شد:

web2

section اول مروط به قابلیت multi target (چند تارگتگی!! به معنای اینکه با ویژوال استدیو 2010 میتونید برنامه هایی جهت کار با دات نت 2.0 و 3.0 و 3.5 تولید نمایید)

section دوم جهت ماهنگی با IIS 7 در مد integrate می باشد .

ASP.NET 4.0 به دنبال آشتی با آنکه می جوید و می یابد…

نوشته شده در 3. بهمن 1388

seo


در باب اهمیت توجه به مسائل پیرامون بهبود دادن ارتباط بین سایت ها و موتورهای جستجو یا به عبارت دیگر Search Engine Optimization که به اختصار SEO بیان می شود، نیاز به بحث نیست.

حتی اون دوست درازگوش زحمتکش هم میدونه که یک لینک بالاتر بودن در موتورهای جستجو چه قدر به رشد و پیشرفت سایت چه من حیث مسائل تجاری برای سایت های اون حوزه چه از نظر خواننده برای سایت های تخصصی و… تاثیر دارد.

تو دنیای Web 3.0 که به اصطلاح Semantic Web  نامیده می شود و مسائل وابسته ی آن به شدت دنبال می شود، این موضوع اهمیت بیشتری پیدا میکند.

متاسفانه بسیاری از دوستان که دستی بر آتش دارند چه در زمینه ی آتش های اطلاع رسانی وب چه در زمینه سامانه های سازمانی و اداری به موضوع محتوا و جستجو اهمیتی نمی دهند. Full Text Search یک عنصر سوسول مآبانه بیشتر به شمار نمیاد !!


مایکروسافت جندیست Free SEO Toolkit رو برای بهبود وضعیت وب سایت ها به صورت رایگان عرضه کرده. این بسته به شما کمک خواهد کرد تا بتونید سایتتون رو با موتورهای جستجوی اصلی یعنی گوگل، بینگ و یاهو و دیگرموتورها هماهنگ کنین.

SearchEngineLogos

اسکات گاتری « معاون مایکروسافت » و مرد اول ASP.NET دراین باره می گوید:

QuoteIcon2

Free SEO Toolkit به شما کمک می کند تا ترافیک و تعداد بازدیدکنندگان سایت خود را افزایش دهید، در نتیجه درآمد شما به صورت مستقیم و یا غیرمستقیم از این راه افزایش خواهد یافت.

این ابزار با آنالیز ساختار صفحات شما، ضعف ها و نکاتی که با برطرف ساختن آنها میتوانید جستجوگرها رو در راه رسیدن به بهترین شناخت از دیتای سایتتان کمک کنید، شناسایی می نماید. تصاویر زیر کاملا گویا ست.

file file1

file2 file4


و اما اصل مطلب:

در ASP.NET 4.0 بهبودهای بسیار مطلوبی در ایم زمینه داریم:

برخی بهبودها رو در ادامه خواهیم دید:

» پراپرتی های جدید Page.MetaKeywords , Page.MetaDescription

» URL Routing جدید که برای Web Form پشتیبانی شده است

» متد جدید () Response.RedirectPermanent

مثال: در حالت عادی استفاده از کلیدواژه ها به شکل زیر است:

image_thumb_2188A842

با استفاده از Page.MetaKeywords و Page.MetaDescription خواهیم داشت:

image_thumb_2DAA2269

آیتم های جدیدی که در Page directive@ افزوده شده اند:

image_thumb_0BDE49D8

 

 

استفاده از URL Routing جدید که در WebForms پشتیبانی می شود (مانند آنچه در MVC داریم) آدرس زیر که چندان خوانا و گویا نیست:

http://www.mysite.com/products.aspx?category=software

تبدیل خواهد شد به:

http://www.mysite.com/products/software

استفاده از () Response.RedirectPermanent نیز به شیوه زیر است:

همون طور که تو کلاس کاربردی هم شرح میدیم متد () Response.Redirect موجب بازخورد کد 302 که بیانگر انتقال موقت است خواهد بود ولی Response.RedirectPermanent(string url) موجبات کد 301 که انتقال دائمی را دربر دارد خواهد شد، پس موتور جستجو هم به عنوان یک لینک انتقال دائمی در نظر خواهد گرفت و در نتیجه در نتایج جستجو تاثیر خواهد داد.

image_thumb_558D21C8

image_thumb_41FFC227

Entity Framework یا Linq 2 SQL یا همون ADO.NET ؟

نوشته شده در 30. دی 1388

aa937709_EF_AtAGlance_1b(en-us,MSDN_10)

یکی از بحث های داغی که تو جلسات بحث و مشورت معماری نرم افزار رایجه صحبت سر انتخاب تکنولوژی دسترسی و مدیریت داده هاست…

گزینه های پیش رو:

» ADO.NET

» Linq 2 SQL یا به اختصار L2S

» و فرزند جدید و حاصل مدت ها تحقیق و تلاش و بهبود مایکروسافت: Entity Framework  به اختصار EF

NET Framework 4.0. بلوغ EF به شمار میاد، و عملا مایکروسافت بسیار محترمانه درخواست کرده که جناب برنامه نویس ایرانی که هر 20 سال یه بار یه روش جدید رو تجربه میکنی… خواهشا سنت شکنی بفرمایید و این محصول رو یه تست بزنید بلکه به نظر ملوکانه تون بد نیومد… تو این پست سعی دارم تا این 3 تکنولوژی رو کمی مقایسه کنم البته قصد ندارم معرفی کنم بلکه هدف مقایسه است… خواهیم دید EF نسبت به SubSonics که خود من بهش خیلی ارادت دارم من حیث معماری



point مقدمه { Microsoft Entity Framework چیست ؟؟} :

ADO.NET Entity Framework به گونه ای طراحی شده است تا توسعه دهندگان را قادر سازد در مقابل مدل های مرسوم مفهومی (conceptual)، از یک مدل جدید با امکان دسترسی و برنامه نویسی مستقیم بر اساس ساختار یک دیتابیس رایطه ای استفاده نمایند، هدف از تولید این مدل کاهش چشمگیر میزان کدنویسی، سهولت گسترش، ترمیم، بهبود و نگهداری  برنامه ها بوده است. به طور خلاصه میتوان از مزایای آن به موارد زیر اشاره کرد:
» برنامه های کاربردی قادر خواهند بود تا در مدل مفهومی خود (conceptual model) محوریت بیشتری به خود برنامه ببخشند به گونه ای که شیء گرایی، ارث بری، گونه ها (Type) های پیچیده تر و روابط بین جداول و اشیاء بهتر پیاده سازی شوند.
» برنامه ها (برنامه نویس ها) از هارد کدینگ (کدنویسی زیادی ابلهانه و طاقت فرسا) رها می شوند.
» بدون کوچک ترین تغییر کد برنامه خواهیم توانست مدل ارتباط بین ساختار دیتابیس و مدل مفهومی را تغییر دهیم.
» توسعه دهندگان (برنامه نویس ها ! :D ) قادرند تا با ساختار شیء گرایانه سازگار با انواع سیستم های مدیریت دیتا کار کنند.
» مرتبط شدن چندین مدل مفهومی به یک ساختا دیتابیس.
» پشتیبانی Language-integrated query (LINQ) موجب اعتبارسنجی عبارات پرس جو (Query) در حین کامپایل میشود.


p2 انتخاب بین L2S و EF

خیلی خلاصه طبقه بندی کردم:


question چه موقع از Linq to SQL استفاده خواهیم کرد؟


وقتی میخواهیم:



از یک
ORM استفاده کنیم  و دیتابیس ما در یک رابطه 1 به 1 با مدل اشیاء قرار دارد.


از یک
ORM که  ساختار سلسله مرتبی ای را که در یک جدول ذخیره شده است ارث بری کرده باشد.


استفاده از کلاس هایی که خودمون نوشتیم در کنار کلاس های تولید شده توسط سیستم  یا ارث بری از کلاس های پایه یا پیاده سازی اینترفیس ها در کلاس ها.


استفاده از
LINQ به عنوان ابزار Query نویسی


استفاده از یک
ORM با حفظ کارآیی و امکان بهبود آن از طریق Stored Procedure ها و Query های کامپایل شده.



question چه موقع از LINQ to Entity استفاده خواهیم کرد؟


وقتی میخواهیم:



وقتی میخواهیم برنامه ما به دیتابیس های دیگری به جز
Microsoft SQL Server  نیز دسترسی پیدا کند.


وقتی میخواهیم
domain models برای برنامه مان تعریف کنیم و از آن به عنوان لایه persistence استفاده نماییم.


استفاده از کلاس هایی که خودمون نوشتیم در کنار کلاس های تولید شده توسط سیستم  یا ارث بری از کلاس های پایه یا پیاده سازی اینترفیس ها در کلاس ها.


از یک راهکار
ORM ی استفاده کنیم که ممکن است کلاس هایمان رابطه ای 1:1 با دیتابیس داشته باشد یا ممکن است ساختاری بسیار متفاوت و پیچیده در ارتباط با دیتابیس دارا باشد.


می خواهیم از یک
ORM استفاده کنیم که ساختارهای سلسله مرتبی در آن معادل های دیتابیسی متفاوتی دارا باشد مانند وقتی که جدولی جهت نگهداری سلسله مراتب، جداولی برای هر یک از کلاس ها و جدولی جهت نگهداری گونه (Type)
خاص داریم.


وفتی میخواهیم از
LINQ جهت نوشت Query ها استفاده کنیم در حالیکه Query در دیتابیس به شیوه خاص و در سلطه سازنده آن عمل می کند
.


استفاده از یک
ORM با حفظ کارآیی و امکان بهبود آن از طریق Stored Procedure ها و Query های کامپایل شده.

 

question
چرا از Entity Framework استفاده کنیم؟

» دسترسی به داده ها را ساده می سازد و به من اجازه می دهد تا مدل مفهومی مورد نیاز برای کسب و کارم را ایجاد کنم.

» EF  اجازه می دهد تا شما روابط چند به چند (n:n) را بدون join ها متعدد مدیریت نمایید.

» جهت کاهش پیچیدگی کد جداول مرتبط را در یک Entity مدل کنید.

» پشتیبانی قئی و خفن از ارث بری ها برای جدول به ازای سلسله مراتب، زیرکلاس (subclass) و تایپ های به هم چسبیده (concrete type).

» Consolidation برای اشیاء پیچیده بسیار ساده است.

» چون دارای مکانیسم بسیار قوی Query گیری از Entity هاست. کسانی که مایل با استفاده از LINQ  نیستند می توانند از  EntityClient provider  همرا با EntitySQL استفاده نمایند.

» میتوانید با استفاده از ADO.NET Data Services (Astoria). دیتای مدل شده خودتان را انتشار دهید.

» مستقل از نوع دیتابیس می باشد و بر اساس استاندارد ADO.NET Providers. کار می کند.

»  هم اکنون تعداد زیادی شرکت های دیگر provider هایی ارائه و پیشنهاد کرده اند مانند:

    * Devart جهت استفاده ازOracle, MySQL  و  PostgreSQL EF توصیه می شود.
    *  Phoenix Software Solutionجهت استفاده از SQLite  EF را توصیه می کند.
    * Npgsql برای استفاده از PostgreSQL  provider دیگری را توصیه کرده.
    *  OpenLink Software طیف وسیعی را جهت استفاده از for Oracle (versions 7.x to 11.x), Microsoft SQL Server (6.x to 2005), IBM DB2 , Sybase (4.2 to 12.x+), IBM Informix (5.x to 11.x), Ingres (6.4 to 9.x), Progress (7.x to 10.x), MySQL, PostgreSQL,  و Firebird  پیشنهاد کرده است.
    * Sybase SQL Anywhere  از SQL Anywhere پشتیبانی می نماید.
    * IBM پشتیبانی دیتابیس هایی مانند DB2, Informix  و U2  را خودش عهده گرفته است.

» بخش های دیگر زیادی به آن افزوده خواهد شد...


ee402630_blog_lg

 نتایج یک مقایسه بین Entity Framework و Subsonic

با اینکه Subsonic رو به لحاظ معماری خیلی قبول دارم ولی یه مقایسه ساده رو میزارم تا ببینید چقدر به لحاظ کارآیی Entity Framework سره:

تست ساده ایه که میتونم سورسش رو بزارم برای دانلود، ملاک اینجا زمان مورد نیاز جهت لود کردن مقادیر مختلفی از اطلاعاته:

Subsonic

Entity Framework

3937

1312

1906

140

1062

156

1078

140

1062

140

مقادیر به میلی ثانیه است

 

 

میبینید که Entity Framework نتیجه بسیار بهتری داره…

امیدوارم معمارهای نرم افزار و برنامه نویس های ایرانی هم همگام شن تا بتونیم این فضاحت کنونی عرصه کیفیت نرم افزارهای تولید داخل رو بهبود بدیم Praying

DevLabs یکی از تفاوت های ما و از ما بهترها

نوشته شده در 21. دی 1388

در اینکه امت همیشه در صحنه ایران، بهترین و پیشرفته ترین و خلاق ترین و.. مردم دنیا هستند و هر روز صاحب فناوری هایی می شوند که حداکثر 1 یا 2 کشور در دنیا بهش دسترسی داشتند و n میلیارد دلار صرفه جویی ارزی و… {آمار و ارقام اینا رو میگن از خودم که نمیگم}

نمونه اش: سیستم عامل ملی، اینترنت ملی، کفش ملی، سوپرکامپیوتر ملی، خودرو ملی، شبکه های ملی و…

در کل 3 یا 4 تا تکنولوژی هست که طی چند ساله ی گذشته بهش نرسیدیم که تا چند وقت دیگه به همشون میرسیم و اسناد و مدارک پیشرفت هاش هم ارائه خواهد شد…

در ادامه با یکی از بخش های تحقیقاتی آشنا میشیم که ما هم میتونستیم نمونه اش رو لابلای بودجه های کلان پروژه های تحقیقاتی ایزایران و داده پردازی و تبیان و… داشته باشیم ولی ترجیه دادیم بریم سراغ اینترنت ملی… وقتی میبینم فارغ  التحصیل ها و شرکت های نرم افزاری معتبر کشور حتی با اصول ابتدایی مهندسی نرم افزار به شکل کاربردی و عملی آشنا نیستند… بد نیست با بخش های تفریحی و اوقات فراغت پرکن شرکت های معتبر آشنا شیم…

Devlabs DevLabs یکی دیگه از بخش های مایکروسافته که با هدف خلق ایده های نو و همراهیشون تا وقتی که بتونن به عنوان محصولی مستقل و یا بخشی از محصولات فعلی عرضه بشوند، توسط برنامه نویس های خود مایکروسافت و یا به شکل پروژه های اجتماعی فعالیت میکنه.

چطوره با برخی از پروژه هاشون آشنا شیم؟

ReactiveExtensions

Reactive Extensions for .NET یا Rx

کتابخونه ای از ابزارهای مورد نیاز جهت برنامه نویسی Asynchronous. با استفاده از اینترفیس  های جدید IObservable و IObserver که در دات نت 4 معرفی شده اند…

 

SpecExplorer

 

Spec Explorer

افزونه ای برای ویژوال استدیو 2010 جهت مدل سازی رفتارهای نرم افزار،متصورسازی (ویژوالایز) تحلیل رفتارهای نرم افزار و ایجاد تست های لازم. (امیدوارم در مهندسی نرم افزار خونده باشید Praying )

 

DoLoTo

Doloto

ابزاری جهت افزایش راندمان و سرعت نرم افزارهایی که از تکنولوژی AJAX (اِی جکس) استفاده می کنند، عموما بین 30 تا 40 درصد بسته به شرایط شبکه. بازنویسی نرم افزار بر اساس لود جاوا اسکریپت بنا بر تقاضا.

 

STMNET

STM.NET

Software Transactional Memory.NET شما را قادر می سازد تا بخش هایی از کدتون رو به طور مستقل (atomic) اجرا کنید. تراکنشی مستقل از دیگر تراکنش ها در شرایطی ایزوله… توضیح مفصلی داره که شاید بعدا بهش پرداختم ولی کاربرد جدی و موثری در تولید برنامه های چند رشته ای (Multi Thread) و استفاده از هسته های پردازش گر داره (Multi Core programming).

 

AXUM

AXUM

زبانی است که بر روی معماری وب، اصول انزوا(ایزوله سازی)، نقش آفرین ها (Actors) و جابجایی پیغام ها تولید شده تا بتواند به ایمنی، پاسخ دهی پایدار، مقیاس پذیری و تولید بهبود ببخشد. براساس مدل برنامه نویسی موازی PPM بوده تو ویژوال استدیو 2010 هم هست.

 

CodeContent

Code Contracts

شامل کتابخونه ای از متدهای استاتیک جهت مشخص کردن رفتارهای کد.کنترل زمان اجرا و حالت ایستای نرم افزار همه به بهبودهای رفتار کد خواهد انجامید.

 

 

SmallBasic

Small Basic

یه زبون برنامه نویسی با فقط 15 کلیدواژه اصلی برای اینکه نوآموزاها رو به این وادی وارد کنه. یعنی هدف ساختاردهی ذهن جهت تفکر سیستماتیکه، چیزی که میتونه فرد رو به یه برنامه نویس خوب شدن یا هر چیز دیگه ای سوق بده.

 

PEX

PEX
Automated White Box Testing for .NET

PEX یا Program EXploration  در حقیقت ابزاری هوشمند برای برنامه نویس به شمار می رود، بر اساس یک Unit Test (نمیدونم معادل فارسی براش چی بنویسم من که Unit Test میگم، Unit Test هم درس میدم، نمیدونم فارسیش چی میشه Big Grin) پارامترایز شده، خود PEX یونیت تست (اینم فارسیش) کامل که کل کد رو تحت پوشش قرار میده تولید میکنه که برنامه نویس با کمترین زحمت کاملترین تست رو حهت تولید محصول با کمترین باگ کمک کنه.

 

CHESS

CHESS

ابزاری برای تست و شناسایی باگ های همزمانی مثل assertion violations, deadlocks, livelocks, data-races, and memory-model errors، چیزی که تو نرم افزارهای ایرانی به شکل افتضاحی مدیریت میشه. جالبه که هم برای کدهای دات نتی هم غیردات نتی کاربرد داره.

پیش نمایش CAT.NET 2.0، راهنمای مسیر امن توسعه

نوشته شده در 19. دی 1388

CAT.NET

دپارتمان امنیت اطلاعات مایکروسافت نسخه پیش نمایش CAT.NET ویرایش دوم رو که بخشی از Assessment & Protection (A&P) خواهد بود، رونمایی کرد.

کمی راجع به Assessment & Assessment & Protection (A&P) Suite: مجموعه ای از ابزارهای لازم جهت برآورد امنیت و محافظت کد در برابر حملات و ضعف های امنیتی، که شامل بخش های اصلی زیر خواهد بود:

* Web Protection Library یا به اختصار WPL که منظور محافظت کد در برابر XSS, SQL Injection, SRE, CSRF و… در محیط وب به کارگرفته می شود.

* CAT.NET که در ادامه به توضیح آن خواهم پرداخت

* Web Application Configuration Analyzer یا به اختصار WACA.

* و ابزارهای دیگری که به مرور افزوده خواهد شد.

CAT.NET ابزاری است جهت بررسی، شناسایی و بر طرف سازی ضعف های کدهای تولید شده با تکنولوژی NET. نظیر آسیبپذیری های XSS, SQL Injection, SRE, CSRF, و… نسخه پیش نمایش 2 هم اکنون به صورت خط فرمان (Command Line) موجود می باشد و رابط کاربری گرافیکی ندارد ولی نسخه نهایی این محصول به عنوان یکی از بخش های ویژوال استدیو همراه را رابط کاربری گرافیکی در اختیار خواهد بود.

به زودی سعی خواهم کرد تا مثالی از کاربرد CAT.NET آماده کنم… متاسفانه کمتر برنامه نویس ایرانی ای رو میبینم یا شرکت نرم افزاری که از چنین ابزارهایی استفاده کنند.

http://blogs.msdn.com/securitytools

لطفا در این سایت SQL تزریق ننمایید!

نوشته شده در 1. مرداد 1388

SQL_INJECTION

پدربزرگ حملات دیتابیس ها را می توان SQL Injection یا تزریق کدهای SQL نامید. فرض کنید درون تکست باکسی که برنامه نویس عزیز انتظار نام و نام خانوادگی را می کشد به جای “حسن” و “تقی” عبارتی شبیه عبارت زیر وارد شود:

ali’);—delete from students;--     Devil

Ali وارد شده و فرمان با تک کوتیشن و پرانتز و سمی کولون به پایان می رسد. ولی فرمان جدیدی از راه میرسد که کل رکوردهای جدول دانش آموزان را پاک می کند و فرامین بعدی را کامنت (چمن) می کند.

گرچه امروزه این نوع حمله بسیار  احمقانه به شمار میان ولی پرداختن بهش چندان هم خالی از لطف نیست.

راه حل ها:

1: استفاده از Stored Procedure

2: استفاده از پارامتر در فرامین ارسالی از سمت کاربر

3: استفاده از ابزارهای پیشگیرانه

4: استفاده از سطح دسترسی SQL Execute-only

حالا برای تحلیل اینکه کد ما چه قدر خفن  و یا داغون نوشته شده، سنگ محک های زیادی وجود داره که به عنوان نمونه میشه از Microsoft Source Code Analyzer for SQL Injection tool است.

لینک دانلود

لینک اطلاعات بیشتر

پیاده سازی Case به روایت LINQ

نوشته شده در 31. تير 1388

Linq

بر حسب موارد مطروحه لازم دیدم یه مثال ساده از چگونگی پیاده سازی ساختار Case که در زبان TSQL مورد کاربرد قرار میگیره رو به شکل LINQ داشته باشیم.

برای همین یک سناریو رو با هم دنبال خواهیم کرد.

1: جدول اطلاعات و نمرات دانشجویان را به شرح زیر می سازیم.

2: گزارش خود را مثال کد زیر به شکلی می نویسیم که با استفاده از دستور Case برحسب مقدار ستون grade نتایج متفاوتی را برای کاربر محیا سازد.

   1: -- ساخت جدول
   2: create table student(
   3: id int identity(1,1) primary key,
   4: first_name nvarchar(120) not null,
   5: last_name nvarchar(120) not null,
   6: grade tinyint null)
   7:  
   8: -- گزارش
   9: select first_name N'نام',last_name N'نام خانوادگی', case grade
  10: when 1 then  N'دبستان'
  11: when 2 then  N'راهنمایی'
  12: when 3 then  N'دبیرستان'
  13: when 4 then  N'دانشگاه'
  14: End AS N'مقطع تحصیلی'
  15: from student

نهایتا کد LINQ مورد نیاز شما که دقیقا نتیجه ای معادل کر TSQL گزارش فوق را برگرداند اینچنین خواهد بود.

   1: from c in StudentsDT
   2: select new
   3:         {
   4:           c.first_name,
   5:           c.last_name,
   6:           grade= c.grade == 1 ? "دبستان" : 
   7:           c.Temperature ==  2 ? "راهنمایی" :
   8:           c.Temperature ==  3 ? "دبیرستان" :
   9:           c.Temperature ==  4 ? "دانشگاه" : ""
  10:         }

وب، ASP.NET، حمله های XSS و کتابخانه Anti-XSS

نوشته شده در 30. تير 1388

xss-threat3

یکی از رایج ترین حملات وب Cross Site Scripting هستند، کاراکتر X بیانگر Cross بوده و SS هم که مخفف Site Scripting است. حملات XSS عمدتا توسط کدهای JavaScript انجام می شوند و از طریق بخش های ورودی و یا خروجی تزریق می شوند.

ابتدایی ترین روش مقابله با XSS مقابله با Dangerous characters یا کاراکترهای خطرناک است، کاراکترهایی که مقدمه ورود کدهای ویژه ی حمله هستند یعنی این ها:
> < ( ) [ ] ' "  ;  : / |
این کاراکترهای ملعون Devilباید به تگ های HTML ی تبدیل شوند تا قابلیت اجراییشون رو از دست بدن به طور مثال < به gt& تبدیل شه. ابتدایی ترین شکل مبارزه با این نوع حمله در ASP.NET با دو عمل زیر شروع میشه:

1: تنظیم validateRequest="true" در Directive صفحه (تگ Page@>).
2: استفاده از توابع زیر جهت کد کردن مبادی حمله:

»  HtmlEncode
»  HtmlAttributeEncode
»  JavaScriptEncode
»  UrlEncode
»  VisualBasicScriptEncode
»  XmlEncode
»  XmlAttributeEncode

تا اینجا مبادی Input یا ورودی رو کد کردیم، خروجی ها مونده که باید با کتابخونه مایکروسافت به نام Microsoft Anti-Cross Site Scripting Library  که به اختصار Anti-XSS نامیده می شود و یا ابزارهای دیگه ای که توسط افراد یا شرکت های دیگه تولید شده اند کد شوند.

همه این ها رو گفتم تا بگم نسخه نهایی ورژن 3.0 آماده دانلود و استفاده شد.

لینک دانلود

در ضمن در دوره کاربردی وب در سطوح مختلف با انواع روش های حمله و روش های ضدحمله آشنا خواهیم شد…

پینوشت: به یاری خداوند، به زودی دومین دوره مقدماتی رو آغاز خواهم کرد…

Azure، ابر لاجوردی رنگ مایکروسافت که بر فردا سایه می افکند..

نوشته شده در 29. تير 1388

WindowsAzure

سال گذشته، مایکروسافت در سمینار Microsoft Professional Developers Conference 2008 (PDC) پرده از تکنولوژی جدیدی برداشت که برای توسعه و بهبود ارائه سرویس های غیرمتمرکز طراحی شده و هرچند هنوز نسخه نهایی این سرویس عرضه نشده است ولی می توان آینده روشنی را برایش ترسیم کرد. Azure در لغت به معنای “آبی لاجوردی” است و به مجموعه ای از سرویس و تکنولوژی جدیدی گفته می شود که به برنامه نویس ها این امکان را میدهد تا انواع مختلفی از سرویس ها را تولید و بر روی دیتاسنتر مایکروسافت به اجرا در بیاورند.

به بیان ساده تر مجموعه ای از سرویس هایی که افراد مختلف در سرتاسر دنیا بر روی این دیتاسنتر به اجرا در می آورند و از همه جا یا هر گونه تکنولوژی مورد استفاده قرار میدهند، علاوه بر اینکه خود برنامه نویسان دیگر می توانند امور بسیاری را به صورت Azure برای خود و دیگران به اشتراک بگذارند… به بیان واضح تر توسط Azure ابری پدید می آید که سایه اش بر فراز جهان سایبر گسترانیده می شود و صدها هزار سرویس بر روی آن ارائه می شود.

SQLAZURE

SQL Server Data Services یا SSDS سرویس جدیدیه که داده های شما دیگه روی یک سرور درون سازمانی همراه با هزینه های جاری نگهداری و ارتقاء، مصیبت های نگهداری، امنیت، راندمان و… قرار نخواهد گرفت، بلکه داده های سازمانی در فضای دیتاسنتر مایکروسافت نگهداری شده و ارتباط با آن توسط Azure تامین می گردد.

DotNetFramework

توسعه سرویس های NET. ی مبتنی بر تکنولوژی WCF نیز از جمله مزایای Azure به شمار میرود، فرض کنید شما وب سرویسی با کاربران متعدد و یا نیازمند در دسترس بودن پایدار داشته باشید، چه جایی بهتر و مطمئن تر از این ابر لاجوردی رنگ؟؟

LiveServices

استفاده از مجموعه سرویس های لایو مایکروسافت و تعامل با آنها نیز میسر می باشد….

 

تمام این ابزارها فقط به یک بهانه دور هم جمع گردیده و اون هم کاهش هزینه های سازمانی همراه با توسعه و پایداری سرویس دهی که منتهی میشه به سودههی بیشتر سازمان.

از طرفی ایده مایکروسافت که از این طریق سهم گسترده تری در سرویس های آنلاین و مارکت IT به دست میاره و درآمدزایی هنگفتی براش به دنبال داره قابل تحسینه!

صفحه اصلی Azure
تعرفه ها
 سازمان هایی که از Azure بهره می گیرند به همراه توصیف پروژه و نمونه های کاربردی