۱۳۹۰/۱۱/۲۹

Hook چیست


Hook چیست
Hook یک تابع callback میباشد که به برنامه ما این امکان را میدهد تا اطلاعات قبل از رسیدن به مقصد انها را دریافت کند و hook میتواند این اطلاعات را قبل از رسیدن به مقصد وارسی یا تغییر دهد ویندوز دارای هوک های مختلفی میباشد که هر نوع به منضور دسترسی به اطلاعات خاصی طراحی شده اند بطور مثال میتوان با استفاده از WH_MOUSE hook پیغامهای مربوط به موس را مانیتور کرد هنگامی که برنامه ما از یکی این تابع callback که انرا hook procedure می نامنداستفاده میکند هنگامی که پیغامی که وابسته به ان هوک باشد ارسال شود ویندوز ان پیغام را به hook مورد نظر که به ثبت رسیده باشد ارسال میکند
لیستی از hook procedure در زیر امده است
CallMsgFilter CallWndProc CallWndRetProc CBTProc DebugProc GetMsgProc
ForegroundIdleProc JournalPlaybackProc JournalRecordProc KeyboardProc MessageProc MouseProc ShellProc SysMsgProc

برای استفاده از یک هوک ابتدا باید انرا نصب نمود(انرا به ویندوز معرفی کرد مدیریت هوک ها را بخشی بنام chain hook بر عهده دارد)
2نوع هوک وجود دارد LocalHook و System Wide Hook
Local Hook بر روی یک برنامه یا یک thread نصب می شود و کدها درون برنامه قرار می گیرد اما System Wide Hook بر روی همه برنامه ها و Therad ها اجرا می شود و کدها باید درون dll قرار بگیرد
برای نصب هوک در hook chain ما از تابع SetWindowsHookEx استفاده میکنیم این تابع 3 پارامتر دارد و مقداری که بر میگرداند id هوک نصب شده در hook chain می باشد
Hook chain بخشی ار سیستم عامل می باشد که hook ها در انجا ثبت می شوند


کد:
HHOOK SetWindowsHookEx(
    int idHook,
    HOOKPROC lpfn, 
    HINSTANCE hMod,
    DWORD dwThreadId )

پارامتر idHook نمایانگر نوع هوکی هست که میخواهیم نصب کنیم

WH_CALLWNDPROC:مانیتور کردن پیغامها قبل از رسیدن به پنجره هدف
WH_CALLWNDPROCRET:مانیتور کردن پیغامها بعد ار ارسال به پنجره هدف
WH_CBT:برای مانیتور کردن اعلانات برنامه های computer-based training
WH_DEBUG:برای اشکال زدایی هوک های دیگرمناسب میباشد
GetMsgProc:برای مانیتور کردن system calls هنگامی که یک message از برنامه ای دریافت میکند
ForegroundIdleProc:مانیتور کردن بیکار idle بودن thread ریسمان مورد نظر
WH_GETMESSAGE :برای مانیتور کردن پیغامهایی که به صف پیغامهای یک پنجره post می شود
WH_JOURNALPLAYBACK:ارسال پیغامی که قبلا توسط این هوک ذخیره شده است
WH_JOURNALRECORD :پیغامهایی را که به system message queueارسال می شود را ذخیره میکند
WH_KEYBOARD:مانیتور کردن کلیدهای فشرده شده
WH_MOUSE:مانیتور کردن فعالیت های موس
WH_MSGFILTER:مانیتور کردن پیغامهایی(event message) که توسط dialog box, message box, menu, یا scroll barایجاد می شود
WH_SHELL:برای مانیتور کردن اعلانات notification های برنامه های shell
WH_SYSMSGFILTER: مانیتور کردن پیغامهایی(event message) که توسط dialog box, message box, menu, یا scroll barایجاد می شود برای تمام برنامه ها

Lpfn یک مقدار از نوع اشاره گر که به ادرس تابع هوک اشاره میکند

hMod شناسه dll که تابع hook در ان قرار دارد
dwThreadId مشخص کننده thread ریسمانی میباشد که هوک بر روی ان نصب می شود

برای غیر فعال کردن hook از تابع UnhookWindowsHookEx استفاده می شود که دارای 1 پارامتر میباشد

کد:
BOOL UnhookWindowsHookEx( HHOOK hhk );

Hhk : هندل تابع هوک مورد نظر میباشد

برای ارسال اطلاعات به هوک بعدی درhook از تابع CallNextHookEx استفاده می شود زیرا ممکن است بر روی سیستم چندین هوک نصب شده باشد

معماری ویندوز بر پایه پیغامها هست وقتی شما مثلا رو یه دکمه کلیک میکنین یه پیغام به WM_LBUTTONDOWN با استفاده از تابع sendmessage به برنامه مورد نظر فرستاده میشه در هر برنامه در حال اجرا یک تابع peekmessage برای گرفتن پیغامها و یک تابع WindowProc برای پردازش پیغامهای دریافتی وجود داره وقتی WindowProc پیغامی دریافت میکنه از رو پارامترهای sendmessage مثل handle میفهمه که این پیغام مربوط به کدام کنترل هست و از روی نوع پیغام هم میفهمه چه عملی انجام شده و کدام رویداد یا دستورات باید اجرا بشه

حالا مثلا ما به notepad یک منوی جدید اضافه کردیم یا مثلا میخواهیم کنترل کنیم که روی برنامه ما کلید prt-sc فشرده شده یا نه در اینجا ما از هوک استفاده میکنیم هوک میاد و واسط میشه بین سیستم عامل و برنامه ما و این پیغامها قبل از رسیدن به برنامه مقصد به هوک میرن و بعد از اون به برنامه میرسن اینجوری وقتی دقیقا روی برنامه شما دکمه printscreen فشار داده بشه قبل از ارسال این دکمه به برنامه مورد نظر هوک شما اونو دریافت میکنه و شما متوجه میشین یا میتونین این دستور رو از صف پیامها حذف کنین انگار هیچ اتفاقی نیفتاده یا میتونین کلیپبورد رو پاک کنین یا در مورد همون نوت پد وقتی شما اون منو رو انتخاب میکنین باید عمل مورد نظر شما انجام بشه پس باید متوجه کلیک شدن روی منویی که اضافه کردین بشین اینجا هم با یه هوک میشه متوجه شد که کدام item از منو کلیک شده و اگه منویی که شما اضافه کردین بود عمل مورد نظر شما اعمال بشه

۱۳۹۰/۱۱/۲۷

مقايسه دات نت نيوک و شيرپوينت سرور


مقايسه دات نت نيوک و شيرپوينت سرور
در اين مقاله سعي شده که مقايسه اي بين دات نت نيوک 4 و شير پوينت سرور 2003 انجام شود.
همانطور که مي دانيد مايکروسافت براي نشان دادن قابليت هاي asp.net يک پرتال را براي فروش کالاها به نام IBuySpy ارائه داد که امکانات خوبي دارد . مثل اضافه کردن ماژول بصورت دايناميک به صفحات و مخفي کردن بعضي مطالب براساس سطح دسترسي ها و نحوه پيمايش سايت بصورت ساده .

IBuySpy
يک نقطه شروع براي ساير پرتال ها شد. در سال 2002 شان واکر يکسري امکانات به آن اضافه کرد که بزودي مورد توجه قرار گرفت و در ادامه منجر به ظهور دات نت نيوک گرديد. پرتال هاي ديگري هم بر همين اساس ساخته شدند مثل Rainbow و ....هر دوي DNN و SharePoint داراي کارايي هاي زيادي هستند ولي يکسري موارد هم هست که ندارند . حال در ادامه اشاره اي به تفاوت ها و تشابهات آنها مي پردازيم


Modules vs Web Parts
مفهوم ماژول که در دات نت نيوک وجود دارد همان چيزي است که شيرپوينت به آن وب پارت مي گويد .آنها اساسا يک چيز هستند . يک کد دات نت که منطق و ظاهر را براي يک کارخاص ارائه مي دهد که مي توان آنرا در هر جايي از قرار داد. يک وب پارت شيرپوينت مثل يک ماژول دات نت نيوک يک کامپوننت است که مي توان آنرا در سايت بکار برد.در دي ان ان ما آنها را به صفحع اضافه مي کنيم و در شيرپوينت آنها را به صفحات وب پارت اضافه مي کنند. با مفاهيم يکسان مثل موقعيت . شخصي سازي و امکانات .

دي ان ان داراي يکسري خواص هست که آنها بصورت مشابه در شيرپوينت وجود دارند مثل RSS feed و کانتينرهاي دلخواه و قابليت پرينت .

يک قابليت بزرگ که در شيرپوينت وجود دارد که در دي ان ان نيست اينست که وب پارت هاي شيرپوينت را مي توان در سيستم هاي ديگري که براساس سرويس شيرپوينت کار ميکنند استفاده کرد ولي ماژول هاي دي ان ان را فقط مي توان در خودش استفاده کرد. بطور کلي وب پارت ها اشيا با ارزشي هستند که مي توان آنها را هم در ASP.NET و هم در شيرپوينت استفاده کرد.

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


Core Modules
ماژولهای اصلی
دی ان ان در حدود 25 ماژول اصلی را تهیه کرده است . که می توان این ماژول ها را در هر صفحه ای از سایت استفاده کرد. همچنین دارای قابلیت template است که بوسیله آن می توان یک مجموعه از صفحات و اسکین ها را فورا به سایت انتقال داد . این قابلیت بصورت مشابه در شیرپوینت وجود دارد.


در ادامه به مقایسه بعضی از ماژولها در دی ان ان و شیرپوینت می پردازیم :




Visibility
میدان دید
در شیرپوینت یک قابلیت اصلی وجود دارد که کاربر را می توان محدود به دیدن چیزهایی کرد که فقط نیاز دارد در دسترس او باشد . در دی ان ان هم این قابلیت از طریق نقش ها و توارث سطوح امنیتی صفحات قابل دسترس است . اما برای یک کاربر خاص مجبوریم یک نقش تعریف کنیم و سپس کاربر را در آن نقش قرار دهیم تا بتوانیم سطح امنیت و دسترسی به یک ماژول خاص را برای آن کاربر ایجاد کنیم (البته این مطلب برای قبل از دی ان ان 4.8 است فکر می کنم ) . البته کاربران عادی تا وقتی که عضو نشده اند و یا دسترسی خاصی به آنها داده نشده فقط اطلاعات محدودی را می توانند مشاهده کنند.


Custom Look and Feel –
ظاهر یا نمای دلخواه
در این قسمت دات نت نیو ک برنده است . چون با قابلیتهایی همچون اسکین و کانتینر و اسکین آبجکت می توانید به هر شکلی که می خواهید ظاهر صفحه را طراحی کنید.طراحی یک اسکین بسیار ساده است و در چند دقیقه امکان پذیر است . در دی ان ان هر صفحه ای می تواند اسکین مربوط به خود را داشته باشد. در صورتیکه در شیرپوینت از مسترپیج استفاده می شود که امکانات کمتری دارد.


Infrastructure –
زیر ساخت
اساسا شیرپوینت برای مقیاس های بزرگ مثل تیم هایی شامل 250.000 عضو طراحی شده است در صورتیکه دات نت نیوک برای اینترانت ها طراحی شده است . ولی می توان آن را برای مقایس های بزرگ مثل شرکت هایی همچون IBM , NASA که دارای تعداد کاربران زیاد هستند بکار برد .

البته شیرپوینت دارای قابلیتهایی مثل Enterprise Search, Single Sign-on, or separate indexing را در معماری خود دارد که در دی ان ان بصورت محدودی وجود دارد. ولی دی ان ان قابلیتهای زیربنایی زیادی را که در ASP.NET وجود دارد را فراهم آورده است مثل logging . دی ان ان مکانیسمی را برای آگهی ها و نحوه پرداخت برای آنها را فراهم آورده است . همچنین دی ان ان مکانیزمی را برای مدیریت اعضا و نحوه دسترسی آنها به سایت فراهم کرده. بهترین قسمت درمورد دی ان ان آنست که یک کاربر عادی می تواند براحتی مطالب را به آن اضافه – ویرایش یا حذف کند. اینکار در شیرپوینت هم امکان پذیر است ولی برای بیشتر کابران مبتدی مشکل است .


Community –
انجمن ها
همانطور که می دانید انجمن های دات نت نیوک بسیار بزرگ تر و بیشتر از انجمن های شیرپوینت هستند. و هزاران سایت تجاری . کلوب . و شخصی وجود دارند که براساس دی ان ان می باشند در مقابل صد ها سایت وجود دارند که براساس شیر پوینت هستند . و این بخاطر اینست که دات نیو نیو ک رایگان می باشند در صورتیکه استفاده از شیرپوینت هزینه دارد. مطلب دیگر اینست که شیرپوینت دارای فروشنده های تجاری معروفی مثل ADVIS , OmniSys , CorasWorks ,… می باشد در صورتیکه دی ان ان دارای فروشنده های محدودی هست که معروفترین آنها SnowCovered می باشد . در حالیکه در آنهم اکثر ماژول ها راهنماهای کاملی ندارند یا ماژول های غیر ضروری و کم کارآمدی هستند .بطور مثال یک ماژول برای گوگل adsens وجود دارد در حالیکه این فقط یک کد html است که باید آن را در یک ماژول Text قرار دهید . البته شیرپوینت هم وب پارت های خوبی را ارائه داده است ولی خیلی گران هستند.

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


ASP.NET
در ASP.NET 2 ما می توانیم براحتی یک دیتاگرید رو روی فرم قرار دهیم و آنرا به یک کلاس بزینس با استفاده از ObjectDataSource متصل کنیم و سپس متدهای انتخاب . بروزرسانی و حذف اطلاعات را با کمی کدنویسی اجرا نمائیم. که در هر دوی دی ان ان و شیرپوینت براحتی انجام می شود.

قبلا اینکه شروع به نوشتن کد برای پرتال خود بکنیم باید بررسی کنیم کدام روش بهتر است کارهای زیادی با asp.net می توان انجام داد ولی گاهی اوقات نیازی به انجام آن نیست و می توان از ماژول های آماده یا وب پارت ها استفاده کرد.

همچنین یک ماژول دی ان ان یا یک لیست شیرپوینت referential integrity نیرومندی ندارند. اگر من یک چیزی دارم که به خاسته من نزدیک است چرا باید آنرا دوباره بسازم ؟ اگر من می تونم چیزی رو که دارم توسعه بدم این خیلی بهتر است . پس برای شروع کار بجای استفاده از یک صفحه خالی asp.net 2 بهتر است از یک پرتال شروع کنیم . این پایه کاری است که این پرتالها فراهم آورده اند. بطور مثال چه کسی است که بخواهد یک صفحه feedback بازخورد طراحی کند و یا برنامه ای برای اعضا بنویسد در صورتیکه شما می توانید بصورت داینامیک آنها را به سایت خود اضافه کنید. حال با این توضیحات آیا شما باز می خواهید پرتال تان را خودتان بسازید ؟ 


Development –
توسعه
دات نت نیوک و شیرپوینت هر دو براساس دات نت هستند و می توانید از ویژوال استودیو برای ساخت برنامه هایتان استفاده کنید. البته ساختن یک وب پارت برای شیرپوینت کار مشکلی است . و همچنین برای دات نت نیوک کمی مشکل است . البته اگر به راهنماهای موجود در زمینه برنامه نویسی ماژول مراجعه کنید می بینید که در حدود 35 صفحه مطلب رو باید بخونید تا به نقطه شروع نوشتن یک ماژول برسید . همچنین برای شیرپوینت این کار مشکلی هست . این مسئله برای توسعه دهندگان شیرپوینت نگران کننده تر است زیرا گاهی اوقات بعضی از دستورا تAPI درست کار نمی کنند و یا راهنمای درستی ندارند. بطور مثال برای نوشتن یک guestbook برای شیرپوینت کافی است از یک دیتا ویو استفاده کنید. البته در دی ان ان کمی مشکل تر است . البته مزیت دی ان ان به شیر پوینت اینست که آپن سورس می باشد . البته کد نویسی برای دات نت نیوک کمی مشکل است و گاهی اوقات نیاز به دانستن اطلاعات تخصصی و ایجاد بعضی لایه هایی که خیلی ضروری نیستند می باشد.


Bottom Line
حرف آخر
دات نت نیوک جای خود رادارد و شیرپوینت جای خود را دارد. هر دو عالی هستند و در خیلی جاها با هم اشتراکات بسیاری دارند . حال اگر شما یک سایت با ظاهر خوب و امکانات استاندارد مثل تابلوی پیامها . بلاگ . تقویم . بازخورد و عضویت در سایت می خواهید من دی ان ان رو پیشنهاد می کنم .

البته در ورژن 2003 شیرپوینت شما نیاز به اکتیو دایرکتوری برای مدیریت کاربران دارید . و در مورد دی ان ان می توان گفت مشکل اصلی آن در نصب ماژول های مخرب است . ولی شما می توانید یک ماژول را براحتی نصب کرده و نیاز به دانش خاصی ندارد و نیاز به تغییری در IIS و یا web.config ندارید. البته در شیرپوینت این امنیت تامین شده ولی تهیه و نصب یک ماژول براحتی دی ان ان نمی باشد.

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



منبعدات نت نیوک (DotNetNuke)



۱۳۹۰/۱۱/۱۲

ساختار نگهداری اطلاعات در SharePoint


برای نگهداری اطلاعات در سایت های SharePoint  سه قالب متفاوت وجود دارد:
·         لیست‌ها : یک لیست مجموعه‌ای از اطلاعاتی است که شما با بقیه اعضای تیم کاری به اشتراک می‌گذارید. معمولا از یک لیست برای نگهداری و انتشار اطلاعات فهرست‌وار استفاده می‌شود.
·         کتابخانه‌های اسناد:  یک کتابخانه اسناد برای ذخیره و نگهداری پرونده‌ها و فایل‌های الکترونیکی استفاده می‌شود. کتابخانه‌های اسناد بسیار شبیه به پوشه‌ها عمل می‌کنند.
·         صفحه : يك صفحه وب در يك سايت می‌تواند محتوی اطلاعاتی خاصی را منتشر نماید.

Enable Anonymous Access in SharePoint 2010





Enable Anonymous Access in SharePoint 2010

Enable Anonymous AccessHere are 8 simple steps on how to set up anonymous access in MS SharePoint 2010. It is not much different then SharePoint 2007 set up, the only difference is the GUI or the Ribbon.

1. Starting in Central Administration, under Application Management, click on the Manage web applications.

Anonymous Access Set Up Step 1
2. Make sure you select the site you want to enable anonymous access and click on the Authentication Providers icon.
Anonymous Access Set Up Step 2
3. On the Authentication Providers pop-up window click on the Default zone.
Anonymous Access Set Up Step 3
4. Under Edit Authentication, check Enable anonymous access and click Save.
Anonymous Access Set Up Step 4
5. Going back to Web Application Management click on the Anonymous Policy icon.
Anonymous Access Set Up Step 5
6. Under Anonymous Access Restrictions select your Zone and set the Permissions to None – No policy and click Save.
Anonymous Access Set Up Step 6
7. Now, web application will allow anonymous access to be set. So, navigate to your top level site collection for the web application. Click the Site Actions > Site Settings. Under Users and Permissions click Site permissions.
Anonymous Access Set Up Step 7
8. Under Permission Tools, click Anonymous Access icon and set the permissions to Entire Web site and click OK.
Anonymous Access Set Up Step 8
Anonymous Access Set Up Step 8
Anonymous Access Set Up
That’s all, folks! If you followed these steps properly you should have now Anonymous Access enabled.



Disqus for Dotnetinfo