
نسخه های مختلف شیرپوینت
نسخه های مختلف شیرپوینت
امکانات هسته شیرپوینت
- نمایش محتوایی که در تنظیمات وب پارت مشخص می شود (مانند یک محتوای خاص یا یک IFrame)
- نمایش آیتم های لیست ها یا کتابخانه ها ( این اطلاعات بوسیله SharePoint Designer و با استفاده از XSLT, CAML قابل سفارشی سازی هستند)
- دسترسی به قابلیتهایی مانند جستجو از بستر شیرپوینت
- ایجاد رابط کاربری برای دیگر محصولات (مانند Microsoft Reporting Services, Microsoft Office PerformancePoint Server و یا دیگر نرم افزارها)

شیرپوینت چیست؟ معرفی کامل مایکروسافت شیرپوینت

- سایتها: سایت یک محیط کاری موضوعي است. اولین بار که شیرپوینت پیکربندی می شود، اين سایتها بدون نیاز به دانش خاصی قابل ایجاد هستند. موضوع یک سایت ممکن است کل سازمان را در بر بگيرد و یا صرفا مخصوص یک تیم یا يک گروه خاص باشد.
- انجمنها: یک انجمن مکانی است که در آن ارتباط و درک اتفاق ميافتد. انجمنها ميتوانند حول محور یک موضوع شکل گیرند و معمولا پيرامون دانش مشترک و يا فعاليتهاي مشترک، توسعه پيدا ميکنند.
- محتوی: شیرپوینت امکان مدیریت اسناد و آیتم های کاری که نیاز به ذخیره سازی، جستجو، تعامل، ویرایش، مدیریت، مستندسازی، ردیابی و بازیابی دارند را بر اساس توافقات مرتبط و یا قوانین سازمان، فراهم میکند.
- جستجو: کنکاش در انجمنها، محتویات، افراد و یا سایتهاي مرتبط: جستجو بر پایه کلمات کلیدی، پالایش اطلاعات و تحلیل محتوا بنا شده است.
- بینش: اطلاعات از هر بخشي در سازمان ميتواند در قالب موضوعات مفيد ظاهر شود، و بدین شکل اثربخشی و کارایی اطلاعات بهبود مییابد.
- ترکیبی(Composites): شیرپوینت امکان یکپارچه سازی داده ها، اسناد و فرآیندها را بدون نیاز به برنامه نویسی فراهم میکند. با استفاده از این قابلیت می توان برنامه های کاربردی ترکیبی ایجاد نمود.
برنامه ها
انواع شمارشي در C#
در اين درس با انواع
شمارشي (Enumerator Types) در زبان C# آَشنا خواهيم
شد. مطالب مورد بررسي در اين درس به شرح زير ميباشند :
درك
و فهم يك نوع شمارشي يا يك enum
ساخت
يك نوع شمارشي جديد
چگونگي
استفاده از انواع شمارشي
آشنايي
با متدهاي مختلف موجود در System.Enum
enmu فرم
خاصي از انواع مقداري (Value Type) است كه از System.Enum مشتق شده و امكان پيمايش درون مجموعهاي مشخص را با استفاد از
اعداد صحصيح براي ما فراهم مينمايد. با استفاده از enum ميتوان مجموعهاي
از مقادير ثابت را تعريف نمود كه اين مقادير ثابت با استفاده از يك عدد صحيح
قابل دسترسي هستند.
استفاده
از enum در برنامهها باعث بالا رفتن خوانايي برنامه ميشود، چراكه با
استفاده از آنها ميتوان با مجموعهاي از اعداد صحيح ترتيبي (Sequential) ، با عناويني تعريف
شده، كار كرد. براي مثال، در اعلان يك enum، ما مجموعهاي از نامهاي مورد نظر را تعريف مينماييم
و در برنامه ميتوانيم از اين نامها بصورت ترتيبي استفاده نماييم. Enum به هر يك از
عناصر موجود در اين مجموعه عددي را تخصيص ميدهد كه شروع اين عدد ميتواند
توسط برنامهنويس نيز معين گردد. سپس با استفاده از نام عناصر موجود در enum و يا با استفاده
از اعدادي كه به هر يك از اين عناصر تخصيص داده شده، ميتوان enum را پيمايش نمود
و به عناصر آن دسترسي داشت.
همانطور
كه گفته شد، enum يك نوع مقداري (Value Type) است، از اينرو ارثبري در مورد آن معنايي ندارد. مساوي
قرار دادن دو enum نيز، مقادير يكي را در ديگري كپي ميكند. همانطور كه در اين درس، و
در منابع ديگر، خواهيد يافت، دسترسي به انواع شمارشي در C# با استفاده از
دو كلمه enum و Enum امكان پذير است. در C# نوع شمارشي enum از نوع BCL خود يعني Enum ارثبري ميكند
! با استفاده از enum يك نوع شمارشي جديد توليد ميشود و با استفاده از Enum، ميتوان به پيادهسازي
متدهاي استاتيك انواع شمارشي پرداخت.
ايجاد
يك نوع شمارشي
.Net Framework BCL حاويenum ها و مثالهاي متعددي از استفادة آنها ميباشد. براي مثال هرگاه كه
از MessageBox بر روي فرمي استفاده ميشود، ميتوان از MessageBoxIcon كه يك نوع
شمارشي
است استفاده نمود.
علاوه
بر انواع شمارشي تعريف شده و موجود در .Net Framework، زمانهايي نيز وجود دارند كه ميخواهيم مجموعهاي از عناصر را
تعريف كرده و از آنها استفاده نماييم. براي دسترسي به عناصري از نوع صحيح،
استفاده از enum باعث خوانا شدن برنامه ميگردد.
نحوه
اعلان يك enum در حالت كلي بصورت زير است :
|
كد: |
|
|
در
مثال 1-17 كه در زير ملاحظه ميكنيد، نحوه اعلان و استفاده از enum مشخص شده است.
مثال
1-17 : نحوه اعلان يك enum
|
كد: |
|
using
System; |
در مثال 1-17 نمونهاي از اعلان يك enum را مشاهده مينماييد. همانطور كه
ديده ميشود، اعلان يك نوع شمارشي با استفاده از كلمه كليدي
enum صورت گرفته و سپس به دنبال آن نام اين مجموعه مشخص ميشود.
درون كروشههاي باز و بسته
{ } نيز، عناصر نوع شمارشي اعلان ميگردند.
برخورد با استثناها (Exception Handling)
در
اين درس با چگونگی برخورد با
استثناها (يا خطاهاي غير قابل پيشبيني) در زبان برنامهسازي C# آشنا
ميشويم. اهداف ما در اين درس بشرح زير ميباشد :
1) درک و فهم صحيح يک استثناء
يا Exception
2) پيادهسازي يک روتين براي برخورد با استثناها بوسيله بلوک try/catch
3) آزادسازي منابع تخصيص داده شده به يک برنامه در يک بلوک finally
استثناها، در حقيقت خطاهاي غير منتظره در برنامههاي ما هستند. اکثراً، ميتوان و بايد روشهايي را جهت برخورد با خطاهای موجود در
برنامه در نظر گرفت و آنها را پيادهسازی
کرد. بعنوان مثال، بررسي و تاييد دادههای ورودی کاربران،
بررسی اشياء تهی يا Null و يا
بررسی نوع بازگشتی متد ها، ميتوانند از جمله
مواردی باشند که بايد مورد بررسی قرار گيرند. اين خطاها، خطاهايی معمول و رايجی هستند که اکثر برنامهنويسان از آنها مطلع بوده و راههايی را
برای بررسی آنها در نظر ميگيرند تا از
وقوع آنها جلوگيری نمايند.
اما زمانهايي وجود دارند که از
اتفاق افتادن يک خطا در برنامه بی اطلاع هستيد و انتظار وقوع خطا در برنامه را نداريد. بعنوان مثال، هرگز نميتوان وقوع يک خطای I/O را پيشبينی نمود و يا کمبود
حافظه برای اجرای برنامه و از کار افتادن برنامه به اين دليل. اين موارد بسيار غير منتظره و ناخواسته هستند، اما در صورت وقوع بهتر است
بتوان راهی برای مقابله و برخورد با آنها
پيدا کرده و با آنها برخورد نمود. در اين جاست که مسئله برخورد
با استثناها (Exception Handling) مطرح
ميشود.
هنگاميکه استثنايی رخ ميدهد،
در اصطلاح ميگوئيم که اين استثناء، thrown شده
است. در حقيقت thrown، شیءای
است مشتق شده از کلاس System.Exception که
اطلاعاتی در مورد خطا يا استثناء رخ
داده را نشان ميدهد. در قسمتهای مختلف اين درس با روش مقابله با استثناها با استفاده از بلوک های try/catch آشنا
خواهيد شد.
کلاس System.Exception حاوی تعداد بسيار زيادی متد و property است
که اطلاعات مهمی در مورد استثناء و خطای رخ داده
را در اختيار ما قرار ميدهد. برای مثال، Message يکی
از property های
موجود در اين کلاس است که
اطلاعاتی درباره نوع استثناء رخ داده در اختيار ما قرار ميدهد. StackTrace نيز، اطلاعاتی در مورد Stack (پشته) و محل وقوع خطا در Stack در اختيار ما
قرار خواهد داد.
تشخيص چنين استثناهايی، دقيقاً با روتينهای نوشته شده توسط برنامهنويس در ارتباط هستند و بستگی کامل به الگوريتمی دارد
که وی برای چنين شرايطی در نظر گرفته
است. برای مثال، در صورتيکه با استفاده از متد
System.IO.File.OpenRead()، اقدام به باز کردن فايلی نماييم، احتمال
وقوع (Thrown) يکی از
استثناهای زير وجود دارد :
|
كد: |
|
SecurityException
|
با نگاهی بر مستندات .Net Framework SDK، به سادگی ميتوان از خطاها و استثناهايی که ممکن است يک متد ايجاد
کند، مطلع شد. تنها کافيست
به قسمت Reference/Class Library رفته
و مستندات مربوط به Namespace/Class/Method را
مطالعه نماييد. در اين مستندات هر خطا دارای لينکی به کلاس
تعريف کننده خود است که با استفاده از آن ميتوان متوجه شد که اين استثناء به چه موضوعی مربوط است. پس از اينکه از امکان وقوع خطايي در قسمتی از
برنامه مطلع شديد، لازم است تا با
استفاده از مکانيزمی صحيح به مقابله با آن بپردازيد.
هنگاميکه يک استثناء در اصطلاح thrown ميشود
(يا اتفاق ميافتد) بايد بتوان
به طريقی با آن مقابله نمود. با استفاده از بلوکهای try/catch ميتوان
چنين عملی را انجام داد.
پيادهسازی اين بلوکها بدين شکل هستند که، کدی را که احتمال توليد
استثناء در آن وجود دارد را در بلوک try، و کد مربوط به مقابله
با اين استثناء رخ داده را در
بلوک catch قرار
ميدهيم. در مثال 1-15 چگونگی پيادهسازی يک بلوک try/catch نشان داده شده است. بدليل اينکه
متد OpenRead() احتمال
ايجاد يکی از استثناهای گفته شده در
بالا را دارد، آنرا در بلوک try قرار داده ايم. در
صورتيکه اين خطا رخ دهد، با آن
در بلوک catch مقابله
خواهيم کرد. در مثال 1-15 در صورت بروز استثناء،
پيغامی در مورد استثناء رخ داده و اطلاعاتی در مورد محل وقوع آن در Stack برای کاربر بر روی کنسول نمايش داده ميشود.
نکته : توجه نماييد که کليه مثالهای
موجود در اين درس به طور تعمدی دارای خطاهايی
هستند تا شما با نحوه مقابله با
استثناها آشنا شويد.
رخدادها و delegate ها در C# - قسمت دوم
اعلان Delegate
در مثال ما، متد Tick از واسط Tickable از نوع void بود
و هيچ پارامتري دريافت نميكرد :
|
كد: |
|
interface
Tickable |
براي اين متد ميتوان delegate ي تعريف نمود كه ويژگيهاي آنرا داشته باشد :
|
كد: |
|
delegate void Tick(); |
همانطور كه قبلاً نيز گفته شد، اين عمل نوع جديدي را ايجاد مينمايد كه ميتوان
از آن همانند ساير انواع استفاده نمود. مثلاً ميتوان آنرا بعنوان پارامتري
براي يك متد در نظر گرفت :
|
كد: |
|
void
Example(Tick param) |
فراخواني delegate
قدرت و توانايي delegate زماني مشهود ميگردد كه ميخواهيد از آن استفاده نماييد. براي
مثال، با متغير param در
مثال قبل چكار ميتوانيد انجام دهيد؟ اگر param متغيري از نوع int بود، از مقدار آن استفاده
ميكرديد و با استفاده از عملگرهايي نظير +، - و يا عملگرهاي مقايسهاي، عملي خاص
را بر روي آن انجام ميداديد. اما حال كه param متغيري از نوع int نيست، چه ميكنيد؟ متغير param يك delegate است
و همانطور كه گفته
شد، delegate انتزاعي
از يك متد است، پس هر عملي كه متد انجام ميدهد، delegate نيز ميتواند انجام دهد. با
استفاده از پرانتز، ميتوان از delegate استفاده نمود :
|
كد: |
|
void
Example(Tick param) |
نكته
: همانطور كه اشاره شد، delegate يكي از انواع مرجعي است از اينرو مقدار آن ميتواند برابر با Null باشد.
در مثال فوق،
اگر مقدار param برابر با Null باشد، كامپايلر خطاي
NullReferenceException را ايجاد مينمايد.
همانند متدها، delegate
ها بايد بطور كامل و صحيح فراخواني گردند. با توجه به اعلان Tick، در زمان فراخواني اين delegate، مثلاً param، بايد توجه داشت كه هيچ پارامتري را نميتوان به
آن ارسال نمود و نميتوان آنرا به متغيري نسبت داد چراكه اين delegate بصورت void اعلان
شده و مقدار بازگشتي ندارد.
|
كد: |
|
void
Example(Tick param) |
توجه نماييد كه delegate را به هر نحوي ميتوانيد اعلان نماييد. براي مثال به نسخة ديگري از Tick توجه كنيد :
|
كد: |
|
delegate void Tick(int hours, int minutes, int seconds); |
اما به ياد داشته باشيد كه همانند متد، در هنگام استفاده
از آن بايد پارامترهاي صحيح به آن ارسال نماييد :
|
كد: |
|
void
Example(Tick method) |
با استفاده از delegate ميتوانيد كلاس Ticker را
پيادهسازي كنيد :
|
كد: |
|
delegate
void Tick(int hours, int minutes, int seconds); |
ساخت
نمونههاي جديد از يك delegate
آخرين كاري كه
بايد انجام دهيد، ايجاد نمونههاي جديد از delegate ساخته شده است. يك نمونة جديد از يك delegate، تنها انتزاعي از يك
متد است كه با نامگذاري آن متد ايجاد ميشود.
رخدادها و delegate ها در C# - قسمت اول
توجه نماييد، delegate ها و رخدادها بسيار با يكديگر در تعاملاند، از اينرو در برخي موارد، قبل از آموزش و بررسي رخدادها، به ناچار، از آنها نيز استفاده شده و يا به آنها رجوع شده است. رخدادها در قسمت انتهايي اين درس مورد بررسي قرار ميگيرند، از اينرو در صورتيكه در برخي موارد دچار مشكل شديد و يا درك مطلب برايتان دشوار بود، ابتدا كل درس را تا انتها مطالعه نماييد و سپس در بار دوم با ديدي جديد به مطالب و مفاهيم موجود در آن نگاه كنيد. در اغلب كتابهاي آموزشي زبان C# نيز ايندو مفهوم با يكديگر آورده شدهاند ولي درك رخدادها مستلزم درك و فراگيري كامل delegate هاست، از اينرو مطالب مربوط به delegate ها را در ابتدا قرار دادهام.
هدف ما در اين درس به شرح زير است :
• مقدمه
• درك اينكه يك delegate چيست؟
• اعلان و پيادهسازي delegate ها
• درك سودمندي delegate ها
• حل مسئله بدون استفاده از delegate
• حل مسئله با استفاده از delegate
• اعلان delegate ها (بخش پيشرفته)
• فراخواني delegate ها (بخش پيشرفته)
• ايجاد نمونههاي جديد از يك delegate (بخش پيشرفته)
• درك اينكه يك رخداد يا يك event چيست؟
• اعلان رخدادها
• نكات و توضيحات پيشرفته
• ثبت شدن در يك رخداد
• لغو عضويت در يك رخداد
• فراخواني رخدادها
• مثالي پيشرفته از استفاده رخدادها در فرمهاي ويندوز
• نكات كليدي درباره رخدادها و delegate ها
• منابع مورد استفاده
مقدمهاي بر رخدادها و delegate ها
در گذشته، پس از اجراي يك برنامه، برنامه مراحل اجراي خود را مرحله به مرحله اجرا مينمود تا به پايان برسد. در صورتيكه نياز به ارتباط و تراكنش با كاربر نيز وجود داشت، اين امر محدود و بسيار كنترل شده صورت ميگرفت و معمولاً ارتباط كاربر با برنامه تنها پر كردن و يا وارد كردن اطلاعات خاصي در فيلدهايي مشخص بود.
امروزه با پبشرفت كامپيوتر و گسترش تكنولوژيهاي برنامه نويسي و با ظهور رابطهاي كاربر گرافيكي (GUI) ارتباط بين كاربر و برنامه بسيار گسترش يافته و ديگر اين ارتباط محدود به پر كردن يكسري فيلد نيست، بلكه انواع عمليات از سوي كاربر قابل انجام است. انتخاب گزينهاي خاص در يك منو، كليك كردن بر روي دكمهها براي انجام عملياتي خاص و ... . رهيافتي كه امروزه در برنامهنويسي مورد استفاده است، تحت عنوان "برنامهنويسي بر پايه رخدادها" (Event-Based Programming) شناخته ميشود. در اين رهيافت برنامه همواره منتظر انجام عملي از سوي كاربر ميماند و پس از انجام عملي خاص، رخداد مربوط به آن را اجرا مينمايد. هر عمل كاربر باعث اجراي رخدادي ميشود. در اين ميان برخي از رخدادها بدون انجام عملي خاص از سوي كاربر اجرا ميشوند، همانند رخدادهاي مربوط به ساعت سيستم كه مرتباً در حال اجرا هستند.
رخدادها (Events) بيان اين مفهوم هستند كه در صورت اتفاق افتادن عملي در برنامه، كاري بايد صورت گيرد. در زبان C# مفاهيم Event و Delegate دو مفهوم بسيار وابسته به يكديگر هستند و با يكديگر در تعامل ميباشند. براي مثال، مواجهه با رخدادها و انجام عمل مورد نظر در هنگام اتفاق افتادن يك رخداد، نياز به يك event handler دارد تا در زمان بروز رخداد، بتوان به آن مراجعه نمود. Event handler ها در C# معمولاً با delegate ها ساخته ميشوند.
از delegate ، ميتوان به عنوان يك Callback ياد نمود، بدين معنا كه يك كلاس ميتواند به كلاسي ديگر بگويد : "اين عمل خاص را انجام بده و هنگاميكه عمليات را انجام دادي منرا نيز مطلع كن". با استفاده از delegate ها، همچنين ميتوان متدهايي تعريف نمود كه تنها در زمان اجرا قابل دسترسي باشند.
₪ آموزش نکات کاربردی ASP.NET MVC 4 (قسمت اول)
برای درک معماری MVC شکل ذیل را ببینید:

همان گونه که شکل می گوید: در معماری MVC کاربر آدرسی (URL) را وارد می کند؛ این تقاضا به یک متد در داخل یک کلاس کنترلر فرستاده می شود (در روش معمول، URL ها به یک فایل html, aspx, php و غیره هدایت شده و سرور آن فایل را پردازش کرده نتیجه را بر می گرداند). سپس کنترلر به کلاس های مدل مراجعه می کند؛ مدل، داده های مورد نیاز را از منبع داده خوانده و به کنترلر تحویل می دهد (یا داده ها را در منبع داده نوشته و نتیجه را بر می گرداند). آنگاه کنترلر، ویو متناسب را به کاربر برمی گرداند.
مرجع:http://www.fekrenaw.com
انجام پروژه های برنامه نویسی