پروژه دوره کارشناسی
در رشته مهندسی کامپیوتر گرایش نرم افزار
پیشگفتار
وب یکی از مهمترین و در عین حال جوان ترین سرویس های اینترنت است که در مدت زمانی کوتاه توانسته است در کانون توجه تمامی استفاده کنندگان اینترنت قرار بگیرد و منشاء تحولات عمده ای در حیات بشریت باشد. در گذشته از وب صرفا" به منظور عرضه اطلاعات استفاده می گردید و کاربران از آن به عنوان یک کنابخانه الکترونیکی بزرگ و در جهت یافتن اطلاعات مورد نیاز خود استفاده می کردند. وضعیت فعلی وب نسبت به گذشته دستخوش تحولات فراوانی شده است و هم اینک از آن به عنوان بستر ارتباطات ، مبادله اطلاعات ، عملیات تراکنشی نظیر فعالیت های تجاری ، اجتماعی ، سیاسی ، آموزشی و فرهنگی استفاده می گردد .
نرم افزار و دنیای برنامه نویسی یکی ازعرصه هائی است که بدون شک بیشترین تاثیر را از اینترنت پذیرا بوده است ( پرداختن به مقوله تاثیر اینترنت بر دنیای برنامه نویسی و یا تاثیر نرم افزار بر اینترنت خود بحث مفصلی است ). شرکت های عظیم نرم افزاری با لحاط نمودن جایگاه برجسته اینترنت ، اقدام به ارائه تکنولوژی ها و معماری های متفاوتی در جهت طراحی و پیاده سازی برنامه های کامپیوتری با بهره گیری از زیرساخت اینترنت نموده اند .
به منظور پاسخ به خیل عظیم نیازهای موجود با توجه به تسهیلات ارائه شده توسط اینترنت ، نسل جدیدی از برنامه های کامپیوتری با نام "برنامه های وب " مطرح و در این رابطه تاکنون تکنولوژی های متفاوتی توسط شرکت های عظیم نرم افزاری ارائه شده است.
با دارا بودن مجموعه ای گسترده از اشیاء که دارای اینترفیس های ساده برنامه نویس ASP.net باشند و بهره گیری از یک محیط ترجمه شده شی گراء ، امکان پردازش های ساده تا پیچیده را با حداقل کد ممکن فراهم می نماید.
چکیده:
این پروژه به منظور دسترسی دانشجویان به پروژه های قبلی و توسعه آنها و جلوگیری از دوباره کاری طراحی شده است که در آن هر استاد می تواند لیست عناوین پروژه های ارائه شده خود را وارد نماید و دانشجویان با مشاهده عناوین پروژه ها عنوان مورد نظر خود را انتخاب نمایند. همچنین امکان جستجو و دستیابی به نتایج پروژه های قبلی جهت استفاده از تجربیات قبلی وجود دارد.
برقراری ارتباط بین دانشجویان واساتید از طریق پیغام نیز از امکاناتی است که در این سایت قرار داده شده است.
در طراحی پروژه معماری سایت را مطابق با معماری معروف سه لایه٬ در نظر گرفته ایم، یعنی ساختار نرمافزار سایت از لایههای نمایش ٬ موتور اصلی نرم افزار٬ و ارتباط با پایگاه داده ها تشکیل شده است.
صفحات سایت از طریق روش code behind برنامه نویسی شده اند به این صورت که کد هایی از آن که باید در سمت سرور اجرا شوند در یک فایل جداگانه ذخیره شده اند.
در این پروژه از امکانات جدید ASP.NET 2.0 نظیر MasterPage٬ کنترل های login Themes ، کنترل های لازم به منظور ایجاد منو و treeview و رویکرد جدید به data grid و غیره استفاده شده است.
مقدمه
محیط برنامه نویسی ASP.NET بیش از بیست و پنج زبان نظیر VB.NET ، سی شارپ و Jscript.NET را حمایت می نماید. به عنوان یک محیط شی گراء ، فریمورک دات نت بیش از 4500 کلاس را ارائه می نماید که از آنان به منظور انجام عملیات متفاوتی در ارتباط با اسناد XML ، دستیابی به داده ، تولید تصاویر ، مونیتورینگ ، ثبت تراکنش ها و سایر عملیات دیگر استفاده می گردد . کلاس ها مجموعه ای گسترده از اشیاء ، خصلت ها و متدها را ارائه می نمایند که می توان از آنان به منظور پیاده سازی برنامه های وب قدرتمند استفاده بعمل آورد.
علیرغم این که کدها ترجمه می گردند ، ASP.NET به صورت اتوماتیک هر گونه تغییر در کدها را تشخیص و به صورت پویا اقدام به ترجمه فایل های مورد نیاز نموده و آنان را برای استفاده مجدد به منظور پاسخگوئی به درخواست هائی آتی ، ذخیره می نماید . ترجمه پویا ، این اطمینان را ایجاد می نماید که برنامه بهنگام بوده و کد ترجمه شده با سرعت مناسبی اجراء می گردد. در زمان درخواست یک صفحه و ترحمه آن برای اولین مرتبه ، یک تاخیر کوتاه را شاهد خواهیم بود . پاسخ به درخواست های آتی از طریق نتایج ترجمه شده و یا نسخه های Cache شده صفحات انجام خواهد شد و نتایج با سرعت بمراتب بیشتری برای سرویس گیرندگان ارسال می گردد .
با توجه به ویژگی های منحصربفرد ASP.NET ، تاکنون از آن به منظور پیاده سازی برنامه های وب در سایت های معتبر متعددی استفاده شده است .
در ASP.NET 2.0 انجام هر کاری با سهولت بمراتب بیشتری نسبت به گذشته انجام می شود.
صفحات master ، ویژگی themes و skins ، ارائه امکانات مناسب در جهت حمایت از دستگاه های سرویس گیرنده متفاوت ، ارائه چهل و پنج کنترل سرویس دهنده جدید شامل کنترل های سرویس دهنده پیشرفته منبع داده ، کنترل های navigation ، کنترل های login ، کنترل های web part ، کنترل های لازم به منظور ایجاد منو و treeview ، رویکرد جدید به data grid ، ارائه امکانات و ابزارهای لازم در جهت مدیریت بهینه برنامه ها ، حمایت از پردازنده های 64 بیتی ، کاهش حجم کد نوشته شده به میزان هقتاد درصد ، نمونه هائی از امکانات و پتانسیل های جدید ASP.NET 2.0 می باشد.
با استفاده از ASP.NET 2.0 پیاده کنندگان برنامه های وب می توانند کارهای پیچیده متعددی را بدون نیاز به نوشتن کد انجام دهند .
که ASP.NET 2.0 صددرصد با ASP.NET 1.x سازگار است. بنابراین میتوانیم برنامه ASP.NET 1.x خود را بدون حتی یک خط تغییر در سورس کد روی سروری که برای اجرای ASP.NET 2.0 تنظیم شده است، اجرا کنیم. شکل 1 نمایی از پنجره تنظیمات یک سایت روی IIS 6.0 را نشان میدهد که امکان تغییر دادن فناوریASP.NET را از نسخه یک به دو و یا برعکس فراهم میکند.
این tab ویژه، پس از نصب NET Framework 2.0 روی ویندوز سرور، به سایر Tabها در پنجره تنظیمات سایت افزوده میشود. برای آزمودن ادعای فوق، کافی است پنجره تنظیمات سایتی که هماکنون با ASP.NET 1.x نوشتهاید را باز کنید و آن را روی نسخه دوم ASP.NET تنظیم کنید و دوباره سایت را اجرا نمایید. همه چیز مانند قبل بدون تغییر قابلمشاهده خواهد بود.
برخی ویژگیهای پلتفرم ASP.NET 2.0
فایلهای موسوم به <پروژه> در ویژوال استودیوی 2005 حذف شدهاند و اکنون همه چیز در فایل solution هر پروژه قرار دارد. بنابراین مدیریت پروژههای ASP.NET اکنون آسانتر از گذشته است و سایتها میتوانند به سادگی از مکان فیزیکی فعلی خود باز شوند.
در محیط Visual Web Developer 2005 یا Visual Studio 2005، یعنی محیطی که برنامههای ASP.NET 2.0 داخل آن نوشته میشوند، دو روش برای اجرای سایتها و صفحات داینامیک وجود دارد. روش اول همان روش قدیمی است. به این ترتیب که یک وبسایت روی IIS تعریف میکنید و سپس هنگام تعریف یک پروژه جدید، آدرسHTTP آن سایت را به ویژوال استودیو میدهید تا فایلهای پروژه را آنجا بگذارد. در این صورت هنگام بازکردن و اجرای سایت، این صفحات روی آدرس HTTP سایت مربوطه باز میشوند. در این حالت شما برای آزمایش کارکرد سایتی که درست کردهاید، نیازمند اجرای وب سرور IIS هستید.
شکل 2
در روش دوم که روش جدیدی در ASP.NET 2.0 است نیازی به وجود IIS نیست. این روش به صورت پیشفرض روی ویژوال استودیوی 2005 تنظیم شده و هنگام آزمایش و مشاهده یک صفحه داینامیک در حالت اجرا، یک وب سرور کوچک روی یک پورت تصادفی خاص (روی http://localhost) اجرا میشود و صفحات سایت به کمک آن قابل اجرا و مشاهده خواهند بود. (شکل 2)
این روش سه مزیت دارد که عبارتنداز:
●نیازی به نصب IIS نیست. بنابراین میتوان کار برنامهنویسی را روی یک ویندوز دسکتاپ (مثلاً اکسپی) انجام داد. ضمناً نیازی به نصب نسخه استاندارد SQL Server هم نیست؛ زیرا ویژوال استودیو به روش مشابهی میتواند به کمک یک نرمافزار کوچکتر به نام SQL Server 2005 Express Edition که همراه ویژوال استودیو نصب میشود، نیاز به وجود یک پایگاه اطلاعاتی را تأمین کند.
● عدم نیاز به فایلهای موسوم به <پروژه>. هر سایتی میتواند از محل فیزیکی خودش به آسانی باز شود؛ زیرا اجباری در وابسته کردن پروژه به یک IP خاص نیست.
● امنیت بیشتر در محیط برنامه نویسی. عدم نیاز به IIS برای تست صفحات عملاً به این معنا است که می توانید اصلاً IIS را نصب نکنید و همانطور که میدانید هرچه تعداد سرویسهای درحال اجرا روی یک سیستم کمتر باشد، امنیت آن بیشتر است. ضمن اینکه اجرای سایت روی یک پورت تصادفی از localhost امکان حدسزدن URLصفحات پروژه را برای هکرها دشوار میسازد.
ویژوال استودیوی 2005 بر خلاف نسخه 2003 همه روشهای دسترسی به یک سایت راه دور را به صورت مناسب و آسان در اختیار برنامهنویس میگذارد. بنابراین برای اینکه سایت پروژه خود را از طریق FTP یا از طریق شبکه (فایل سیستم) آپلود کنید، ابزار قدرتمندی برای این منظور در اختیار شماست. شکل 3 نمایی از ابزار Copy Web Site را نشان میدهد. به کمک این ابزار میتوانید پروژه خود را مستقیماً به سایت مقصد آپلود کنید.
- ویژوال استودیوی 2005 امکانات مفصلی برای کار با بانکهای اطلاعات دارد. به گونهای که ما را از مراجعه مستقیم به اینترفیس مدیریت SQL Server یا دیگر بانکهای اطلاعاتی تقریباً بینیاز میکند. میتوانیم به کمک این ابزارها جداول بانک اطلاعاتی خود را طراحی کنیم یا برای اجرای فرامین مختلف روی بانکاطلاعاتی Stored Procedure بنویسیم و این توابع را همانجا داخل ویژوال استودیوی اشکالزدایی (Debug) نماییم.
برنامه چند لایه چیست؟
در معماری چند لایه تمام برنامه به چندین بخش تقسیم می شود.شکل 4 این بخش ها را نمایش داده است . این بخش ها می توانند فیزیکی یا منطقی باشند. هر بخش کار خاصی را انجام می دهد مثلا نمایش اینترفیس کاربر یا دسترسی به داده ها. برنامه می تواند به هر تعداد لایه داشته باشد ولی به هر حال بیشتر برنامه ها سه لایه مجزا دارند که عبارتند از :
1- Presentation Layer
2- Business Logic Layer
3- Data Access Layer
لایه Presentation چیزی نیست به جز بخشی از نرم افزار که با کاربر برنامه شما ارتباط برقرار می کند ( اینترفیس برنامه شماست ) نمایش داده ها به کاربر نهایی و اجازه به آنان برای ارتباط داشتن با داده ها، اصلی ترین وظیفه این لایه است.
در بیشتر موارد داده هایی که توسط کاربر وارد می شوند نیاز به اعتبارسنجی یا پردازش اضافی دارند. این مسوولیت لایه Business Logic است.
در نهایت داده های برنامه شما نیاز به ذخیره و بازیابی از طریق یک انبار داده دارند ( مثلا سیستم مدیریت دیتابیس های رابطه ای یا RDBMS و یا XML , .. ) این وظیفه توسط لایه دسترسی به داده انجام می شود.
به طور خلاصه، فرآیند مورد نظر ما این گونه کار می کند:
- کاربر برای داده های برنامه درخواستی ارسال می کند.
- لایه Data Access داده های مورد نظر را بازیابی می کند و از طریق لایه Business Logic آن ها را به لایه نمایش می فرستد.بعضی مواقع لایه دسترسی به داده ها، این داده ها را مستقیما به لایه نمایش ارسال می کند.
- لایه نمایش اطلاعاتی که باید نمایش داده شوند را از طریق لایه Business Logic دریافت می کند.
- کاربر داده ها را تغییر می دهد و عمل مناسب در مورد آن ها را اجرا می کند ( مثل اضافه یا به روز کردن داده ها )
- لایه Business Logic صحت داده های وارد شده توسط کاربر را بررسی می کند ( داده ها را اعتبار سنجی می کند)
- اگر داده ها معتبر باشند آن ها را برای به روز رسانی در بانک اطلاعاتی به دست لایه دسترسی به داده می سپارد.
مزیت های برنامه های چند لایه
- برنامه ها به چند بخش منطقی جدا از هم تقسیم می شوند و اتصال میان UI ( رابط کاربری ) ، پردازش ها و بانک اطلاعاتی کم می شود.
- تغییر در بانک اطلاعاتی یا روال های دسترسی به داده ها تاثیری در لایه نمایش یا برنامه کلاینت نخواهد گذاشت.
- برنامه کلاینت با عبارات SQL آمیخته نخواهد شد.
- نام جداول و ستون ها به طور موثری از برنامه کلاینت حذف می شوند.
- برنامه کلاینت نمی فهمد که داده ها از کجا آمده اند ( چیزی که به آن location transparency گفته می شود )
- تغییر یا گسترش برنامه بسیار ساده تر خواهد شد، بدون نیاز به تغییر یا کامپایل مجدد برنامه کلاینت.
نکته منفی در معماری چند لایه این است که شما باید تعداد زیادی بخش ها و کلاس های از هم جدا در نرم افزار بسازید. اما به هر حال مزایای این روش بیشتر و برتر از معایب آن است.
طراحی پایگاه داده های پروژه
برای طراحی این سایت اولین مرحله ایجاد پایگاه داده و جداول مورد نیاز است.پایگاه داده آن شامل 5 جدول می باشد.به شرح زیر:
1-اطلاعات اساتید
2-اطلاعات دانشجویان
3- پروژه های ارائه شده
4-عناوین پیشنهادی
5- پیغام ها
فیلد های جدول اساتید شامل نام ، نام خانوادگی ، تحصیلات ، گروه آموزشی ، توضیحات و نام کاربری می باشد.
اطلاعات دانشجویان شامل شماره دانشجویی ، نام ، نام خانوادگی و رشته تحصیلی آنها می باشد.
پروژه های ارائه شده شامل شماره پروژه ٬عنوان پروژه ٬ شماره دانشجویی ارائه دهنده٬ تاریخ ارائه٬ نحوه ارائه ٬کد استاد ٬ چکیده و فایل های مربوطه به صورت شکل 5 می باشد .
شکل 5
جدول عناوین پیشنهادی شامل عنوان پروژه پیشنهادی ، کد استاد ، نحوه ارائه ، سطح پروژه و توضیحات می باشد.
و آخریی جدول ، جدول پیغام ها می باشد وحاوی فیلدهای نام فرستنده ، نام گیرنده ، عنوان پیام ، تاریخ ارسال ، محتوای پیام و فایل های متصل است.
پس از ساخت جداول با کلیک راست کردن روی گزینه DataBase Diagram یک دیاگرام جدید برای نمایش ارتباطات جداول ایجاد می کنیم. شکل 6 این دیاگرام را نمایش می دهد:
حال که جداول تکمیل شده است بعضی از رویه های مورد نیاز را ایجاد کرده تا از آنها در کلاسهای لایه ی DAL استفاده کنیم.
ویژوال استودیوی 2005 امکانات مفصلی برای کار با بانکهای اطلاعات دارد. به گونهای که ما را از مراجعه مستقیم به اینترفیس مدیریت SQL Server یا دیگر بانکهای اطلاعاتی تقریباً بینیاز میکند. به کمک این ابزارها جداول بانک اطلاعاتی خود را طراحی کرده و برای اجرای فرامین مختلف روی بانکاطلاعاتی Stored Procedure می نویسیم (شکل 7) و این توابع را همانجا داخل ویژوال استودیوی اشکالزدایی (Debug) می نماییم.
شکل7
استفاده از روال های ذخیره شده کارآیی و سرعت سیستم را بالا می برد. وقتی یک روال ذخیره شده را در دیتابیس قرار می دهیم برای مراجعات بعدی دیگر پارسر و کامپایلر آن را بررسی نمی کنند و از نسخه کامپایل شده بهینه آن استفاده می کنند. به علاوه با کمک Transact-SQL می توانیم رویه های ذخیره شده پیشرفته ای را بنویسیم یا مثلا یک سری دستور را به صورت گروهی اجرا کنیم.
برای مثال Stored Procedure زیر کار افزودن یک رکورد از اطلاعات استاد را انجام می دهد.
ALTER PROCEDURE dbo.AddProfessor
(
@Fname nvarchar(50),
@Lname nvarchar(50),
@Education nvarchar(100),
@InstructionGroup nvarchar(100),
@Description nvarchar(200),
@UserName nvarchar(100)
AS
insert into professor (Fname,Lname,Education,InstructionGroup,Description,UserName) values
(@Fname,@Lname,@Education,@InstructionGroup,@Description,@UserName)
حالا برای این که عملیات را با استفاده از این روال ذخیره شده انجام دهیم شی دستور SQL را به صورت زیر در کلاس لایه یDAL می نویسیم. تابع افزودن اطلاعات استاد در این لایه درشکل8 نشان داده شده است .
شکل8
از تابع Add موجود در کلاس ProfessorDAL درSource صفحه ی مربوط به ثبت نام اساتید به صورت نشان داده شده در شکل 9 استفاده می کنیم.
شکل 9
صفحه Design ثبت نام اساتید در شکل10 نشان داده شده است . مدیر سایت ، اطلاعات اساتید را از طریق این فرم وارد پایگاه داده ها می کند . البته بخشی از این اطلاعات توسط کنترل CreateUserWizard وارد پایگاه داده ها می شود که در بخش دیگری نحوه استفاده از آن را توضیح داده شده است.
شکل 10
ابزار مدیریت سایت وب (WAT)
تنظیمات یک سایت وب معمولا در فایلی به نام به نام web.config قرار می گیرند، در نسخه ی قبلی ASP.NET طراحان سایت مجبور بودند تا با استفاده از XML به صورت دستی کد مربوط به تنظیمات قسمت های مختلف سایت ، از قبیل نحوه ی خطایابی ، امنیت و یا ... را در این فایل وارد کنند. اما در ASP.NET 2 یک رابط گزافیکی برای انجام تنظیمات مختلف در این فایل ایجاد شده است. این رابط گرافیکی ابزار مدیریت سایت وب یا WAT نام دارد. هنگامی که WAT را اجرا می کنیم ، در ابتدا پنج قسمت مختلف در آن مشاهده می کنیم که عبارتند از:Provider,Application,Profile,Security,Home . در این پروژه با استفاده از قسمت Security تنظیمات مربوط به امنیت سایت را انجام خواهیم داد و از قسمت های دیگر استفاده نمی کنیم .
قبل از استفاده از این ابزار 3 فولدر با نام های Secure_Admin,Secure_Professor, Secure_Student را ایجاد کرده و صفحات مربوط به هر کدام را داخل فولدر آن قرار می دهیم.شکل 11 این تقسیم بندی را نمایش می دهد.
(نمودار و جداول و تصاویر در فایل اصلی موجود است)