nav-right
امین مصباحی

مقدمه ای بر پروتکل های دسترسی به داده ها و Open Data Protocol

گاهی اوقات غربت یک مفهوم حتی صرف نظر از دانش اجرا در جامعه ی نرم افزاری کشور، علت نگارش پست های من میشه. Open Data Protocol هم از جمله ایین مفاهیمه، چرا که با وجود تمام قابلیت ها و امکانی که به سازمان ها و تولید کنندگان نرم افزار میده تا بتوانند با یک ساختار و پروتکل شناخته شده اطلاعات را از منابع مختلف اعم از دیتابیس های تولیدشده توسط شرکت های دگه، فایل هایی نظیر XML و حتی وب سرویس ها و … بازخوانی و ویرایش نمایند، هنوز نمیشناسند. درحالیکه ابزار استفاده از آن نیز در دات تحت عنوان WCF Data Services مدت هاست که عرضه شده و شرکت های بزرگی نظیر مایروسافت، IBM و SAP نیز از آن استفاده کرده اند. متاسفانه بعد از گذشت دو سال ازکنفرانس PDC09 که محصول WCF Data Services معرفی شده (در کنفرانس MIX07 تحت عنوان Astoria project معرفی و در سال 2008 با نام ADO.NET Data Servicesهمراه با NET Framework 3.5 SP1. عرضه نهایی شد و در کنفرانس PDC09 به  WCF Data Services تغییر نام داد) هنوز که هنوزه در بین اکثریت قریب به اتفاق برنامه نویس ها و مدیران تیم های نرم افزاری کشور غریب و ناآشنا است… معرفی Open Data Protocol که به اختصار OData ذکر می شود: امروزه با گسترش و فراگیر شدن نرم افزارها، با تولید حجم عظیم داده ها روبرو هستیم که در حال ثبت در دیتابیس ها هستند. به طور کلی، اکثریت نرم افزارها مکانیسم و فرمت خاص خود را برای ثبت و بازیابی داده ها به کار می گیرند و این تنوع در ساختار نگهداری اطلاعات، موجب دشمواری ارتباط بین سیستم ها و دیتابیس های مختلف از منظر فهم و ارتباط با ساختار اطلاعات ذخیره شده درآنها می باشد (ازنظر تکنیکال اکثر دیتابیس های استاندارد نظیر SQL Server و Oracle به راحتی با یکدیگر ارتباط برقرار می کنند و لی پس از برقراری ارتباط، چگونگی کوئری گرفتن، ثبت، ویرایش داده ها با در نظر گرفتن ساختارهای متفاوت جداول و طراحی دیتابیس و از حیث کنترل دسترسی ها و مسائل امنیتی نکته مهمی خواهد بود). همچنین گاها اطلاعات درون فایل ها و یا از سریق وب سرویس ها مورد دسترس اند و به دیتابیس ها محدود نمی شوند. با توجه به توضیح مختصر فوق، Open Data Protocol به عنوان یک پروتکل وب ( یک ساختار استاندارد مورد استفاده در وب) به وجود آمد تا عملیات کوئری گرفتن و ویرایش اطلاعات را با استفاده از روش هایی متفاوت با دسترسی مستقیم یا از طریق ساختارهای دلخواه برنامه نویسان محیا سازد. این دسترسی از طریق پروتکل هایی نظیر HTTP, Atom Publishing Protocol, JSON امکان پذیر است که تقریبا از کلیه ی نرم افزارهای وب قابل استفاده هستند، انجام می گیرد. OData را میتوان پروتکلی دانست که از دل تجربیات ناشی از تولید نرم افزارهای مبتنی بر AtomPub که طی چند سال گذشته به تولید رسیده اند، برخواسته است. OData محدود به  دسترسی داده های ذخیره شده در دیتابیس های رایطه ای مثل SQL Server, Oracle,…  یا وب سرویس ها یا CMS ها و… نیست. تمامی این اعمال از طریق متدهای استاندارد وب نظیر GET, POST, DELETE, PUT انجام می شود… به تصویر زیر دقت کنید که فرمان کوئری چگونه از طریق URI به سرویس پاس داده می شود و اطلاعات فراخوانی میشود… راه میانبر که به کیفیت و اهمیت و سهمی که این پروتکل در بازار از آن خود دارد نیم نگاهی است به استفاده کنندگان از این پروتکل: Microsoft SharePoint 2010 IBM WebSphere Microsoft SQL Server Reporting Services SAP NetWeaver Gateway Telerik OpenAccess ORM … پس دیدیم که استفاده از این پروتکل، خیلی زود و آوانگارد منشانه هم نیست… حالا بریم سراغ معرفی ابزار دات نتی جهت استفاده از OData… WCF Data Services یک از کامپوننت های NET Framework. می باشد که نرم افزار را قادر به استفاده از OData جهت دسترسی به داده های نزد متبع مختلف می کند. جهت آشنایی بیشتر با این لینک مراجعه کنید. میبینیم که روز به روز دامنه ارتباطات دات نت با دنیای بیرون از مرزهای نرم افزارهایی که ما مینویسیم گسترده تر میشه… حال فرض کنید اگر تولید کننده های نرم افزارهای مالی و اداری و تخصصی ایرانی از چنین مکانیسم هایی بهره می بردند… هزینه سازمان ها چقدرکاهش می یافت؟؟ ارتباط بین نرم افزارهای مختلف تسریع می شد و دامنه ی انتخاب خریداران از محدوده ی انتخاب مجموعه ای خاص که می بایست تمامی زیرسیستم های مورد نیاز یک سازمان را دارا باشد تا مشکل ارتباط بین سیستم ها حل شود، وسیع تر می شد. این به نفع تولید کننده ها هم بود تا بتوانند با دارا بودن تعداد نرم افزارهای کمتر ولی تخصصی تر مشتریان بزرگ را جذب کنند. لزوم مهاجرت به WCF سوالی است که مکررا باید به شرکت ها و تیم های طرف مشاوره پاسخ داد که مگر Web Service های کلاسیک چه کاری کمتر انجام می دادند؟ جواب واضح است: در مقایسه با میزان تخصص و استفاده مجموعه های داخلی از مفهوم سرویس، هیچی!! ولی در مقایسه با دنیای بیرون، محدودیت های وب سرویس های کلاسیک غیرقابل ورود ساختن یک شرکت تولید کننده نرم افزار به عرصه رقابت با امروز را تضمین میکند! این پروتکل یک رقیب سرسخت هم داره: GData — competing protocol از Google

برچسب ها: ,

هشدار: ضعف امنیتی برای ASP.NET 1.1 تا ASP.NET 4.0

امروز عصر، روی فید اسکات گاتری، معاون مایکروسافت در توسعه تکنولوژی دات نت، خبری مبنی بر ضعف امنیتی NET Framework. قرار گرفت… این ضعف امنیتی در کلیه نسخه های ASP.NET از 1.1 تا 4.0 موجود می باشد. این ضعف امنیتی در آخرین ساعات روز جمعه در یک کنفرانس امنیتی اعلان شده است… این ضعف امنیتی قادر به چه کاریست؟ مهاجم از طریق نرم افزارهای تولید شده توسط ASP.NETفایل هایی نظیر web.config که عموما حاوی اطلاعات مهم و محرمانه می باشد را دانلود نماید! همچنین مهاجم بوسیله این ضعف امنیتی قادر به رمزگشایی  اطلاعات رمزنگاری شده ارسال شده به سمت کلاینت نظیر viewstate خواهد بود. این ضعف امنیتی چگونه کار میکند؟ پیش از هرچیز باید با برخی واژه های علم رمزنگاری آشنا شویم. oracle: به صورت تئوری میتوان آن را یک Black Box نامید که طی پروسه رمزنگاری وظیقه پاسخ دادن رندم از بین توزیع یکنواخت دامنه خروجی را داراست. oracle موضف است به کلیه درخواست های این حوزه پاسخ دهد. حال ضعف ASP.NET در بخش oracle رمزنگاری است که اجازه می دهد تا مهاجم متن رمز شده را به سمت سرور ارسال نماید و پاسخ را پیرامون اینکه متن به درستی از حالت رمز درآمده با نه را تحت کدی که از طرف سرور برمی گردد دریافت نماید. بدین صورت مهاجم شروع به ارسال متن های مختلف به صورت آزمون و خطا خواهد کرد و بر اساس پاسخ سرور متوجه متن از رمز درامده خواهد شد. و اما راه حل مقابله با این ضعف: خیلی ساده است: اولین راهکار اینه که بخش <customErrors> را در فایل web.config تنظیم نمایید تا تمام خطاهای اتفاق افتاده کاربر را به سمت یک صفحه هدایت نماید. چرا؟ زیرا مهاجم متوجه نوع خطا و کد خطا نگردد، اگر فقط برخی خطاها موجب هدایت کاربر به سمت صفحه اعلان خطا گردد، خیلی خطاهای دیگه بدون درنظرگرفته شدن به مهاجم اعلام می شود و نمایش کد و متن خطا یکی از موهبات الهی برای مهاجم است. مثال:                                    

برچسب ها: ,

یاداوری: Silverlight 4.0 و پشتیبانی از RTL

صد بار سر کلاس گفتم، باز هم میگم RIA یا Rich Internet Applications که امروز زیاد تو بلاگ ها، کتاب ها و محافل فنی شنیده میشه، سهم زیادی رو از آینده وب تشکیل خواهند داد. چون نمیخوام طولانی شه، مختصر میگم، RIA به شما امکان تجربه ای نزدیک به حس کار با نرم افزارهای دسکتاپ ولی روی بستر وب خواهد داد. Adobe Flex, Microsoft Silverlight و Google Web Toolkit مدعیان این ورطه از رقابت بین بزرگان وب هستند. مدتیست سیلورلایت 4 عرضه نهایی شده، برای بار n ام تکرار میکنم، سیلورلایت 4 از زبان های راست به چپ مثل عربی و فارسی پشتیبانی رسمی میکنه، هرچند تا قبل از این هم با کمی همت و کدنویسی میشد فارسی رو بهش خوروند و ما خوروندیم! نمونه های عملی پیاده شده (متاسفانه نمیتونم اطلاعات نمونه پروژه های انجام شده داخلی رو ارائه بدم) http://funcruisedeals.us شهر هودسون امریکا لینک آموزش سیلورلایت 4 در کانل 9  MSDN

برچسب ها:

URL Routing در ASP.NET 4 Web Forms

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.   چگونگی تنظیمات URL Routing در ASP.NET 4.0 MVC در ASP.NET 3.5 SP1 آموختیم که چگونه با استفاده از URL Routing engine آدرس ها را به سادگی و در عین کارایی و قدرت تغییر دهیم. این کار را در رخداد آغاز نرم افزار (Global.asax )  و در بخش register/map انجام میدادیم. مثال زیر را ببینید:   چگونگی تنظیمات URL Routing در ASP.NET 4 WebForms حال ASP.NET 4.0 به شما این امکان را می دهد تا از این قابلیت در WebForms نیز استفاده نمایید. مثال زیر را ببینید: استفاده و بایند: چگونه با این آدرس ها کار کنیم؟ اکنون باید بتوانیم با استفاده از متدهای لازم هم آدرس های وارده را شناسایی کنیم و هم آدرس هایی که می خواهیم به عنوان خروجی لینک های استفاده نماییم. لذا متدهای () Page.GetRouteUrl ()  ,Response.RedirectToRoute مورد استفاده قرار میدیم.   نکته: در پست بک ها هم بدون مشکلی میتوانیم از این قابلیت استفاده نماییم: <form action=”/products/software”>

برچسب ها: ,

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

مختصر و مفید: کافیه تا ویژوال استدیو 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 جدید، تمیزتر، ساده تر و البته کوتاهتر روبرو خواهید شد: section اول مروط به قابلیت multi target (چند تارگتگی!! به معنای اینکه با ویژوال استدیو 2010 میتونید برنامه هایی جهت کار با دات نت 2.0 و 3.0 و 3.5 تولید نمایید) section دوم جهت ماهنگی با IIS 7 در مد integrate می باشد .

برچسب ها: ,

درباره نویسنده

محمدامین مصباحی، همین و بس!

نمونه سوالات آزمون ارزیابی #C

آزمون ارزیابی c#
دانلود نمونه سوالات ارزیابی دانش برنامه نویسی #C جهت ثبت نام در دوره های:

 

WCF

ASP.NET (MVC, Web Forms)

SharePoint (Development)

Silverlight

Design Patterns

 

دانلود

 

 

آرشیو ماهانه پست ها