570 likes | 783 Views
چارچوب کاری مبتنی بر XML-XSLT. دانشجو: علی رهبری. مقدمه. مسئله : ایجاد چارچوب کاری مبتنی بر XML اهداف : حذف قسمت های تکراری در برنامه نویسی و تسریع در توسعه برنامه ها، ارائه راه حلی لایه ایی و مولفه گرا رهیافت : خرد کردن مسئله و پیدا کردن راه حل ها ارائه شده برای هر زیر مسئله و ترکیب آنها.
E N D
چارچوب کاری مبتنی بر XML-XSLT دانشجو: علی رهبری
مقدمه • مسئله: ایجاد چارچوب کاری مبتنی بر XML • اهداف: حذف قسمت های تکراری در برنامه نویسی و تسریع در توسعه برنامه ها، ارائه راه حلی لایه ایی و مولفه گرا • رهیافت: خرد کردن مسئله و پیدا کردن راه حل ها ارائه شده برای هر زیر مسئله و ترکیب آنها
چارچوب کاری • یک چارچوب کاری یک فرضیه پر جزییات نیست، بلکه یک نقطه نظر برای نزدیک شدن به یک مسئله علمی است. [1] • چارچوب کاری معانی مختلفی با توجه به متنی که در آن استفاده شده است دارد. عموما یک چارچوب کاری یک چارچوب که چیزی بر روی آن ساخته می شوداست. [2] • چارچوب کاری یک طراحی و پیاده سازی قابل استفاده مجدد از یک سیستم یا زیر سیستم است. [3]
چارچوب کاری در مهندسی نرم افزار • مجموعه ایی از کلاس ها که یک طراحی انتزاعی را به عنوان راه حل برای خانواده ایی از مشکلات مرتبط در بر می گیرند و از استفاده مجدد در مقیاس بالاتری از کلاس ها پشتیبانی می کنند. [4] • یک برنامه نیمه کامل قابل استفاده مجددکه به منظور ساخت یک برنامه اختصاصی شود. [3]
اجزای چارچوب کاری [3] • هسته چارچوب کاری – عموما از کلاس های انتزاعی که ساختار و رفتار چارچوب کاری را تعیین می کنند تشکیل می شود. • کتابخانه چارچوب کاری – افزونه های برای هسته چارچوب کاری که از اجزای واقعی که می توانند با تغییرات کمی مورد استفاده قرار گیرند تشکیل می شوند.
طبقه بندی چارچوب کاری: • فعل و انفعال [3-5] : چارچوب کاری فراخوانی شونده و چارچوب کاری فراخواننده • شخصی سازی [3-4] :White Box و Black Box • حوزه [3-6]: کاربردی و دامنه و پشتیبانی
HTML • مخفف عبارت Hyper Text Markup Language • به عنوان یک Hyper Text Language امکان پیوند دهی غیر ترتیبی بین اسناد وب را فراهم میکند. [10] • به عنوان یک Markup Language زبان کدها است که امکان مشخص کردن فرمت نمایشی اسناد را فراهم می کند. [10]
HTMLکاستی های • HTML از مجموعه ایی از تگ های از پیش تعریف شده که هدف اکثر آنها بیان کردن ظاهر نمایش اطلاعات است تشکیل شده است. [11, 12] • HTMLمفهوم معنایی برای داده های به کار برده شده فراهم نمی کند. [11] • HTML از داده با سازماندهی پیچیده و همچنین اشیا با سلسله مراتب پشتیبانی نمی کند. [11]
XML • مخفف عبارت Extensible Markup Language • XML به خاطر کاستی های HTML و پیچیدگی بیش از حد SGML در سال 1996 توسط W3 ایجاد شد. [12] • XML یک ابر زبان است. [11] • XML مجموعه قوانینی برای ساخت نوع های جدید اسناد است و می تواند برای ساخت زبان های جدید Markup برای برنامه های خاص مورد استفاده قرار گیرد. [11]
رفع کاستی های HTML توسط XML • XML قابل توسعه است و به کاربر اجازه می دهد تگ های جدید و مطابق نیاز خود تعریف کند. [11] • مثال: کاربر می تواند تگ هایی برای توصیف کتاب های موجود در کتابخانه و اطلاعات مربوط به آنها ایجاد کند: <book><name></name> <author></author> </book>
رفع کاستی های HTML توسط XML • با تگ های جدید امکان فراهم کردن مفهوم معنایی برای داده ها ایجاد می شود. [11] • مثال: برای مقایسه، در HTML توصیف یک کتاب به صورت زیر می تواند صورت بگیرد که مفهومی برای داده ها ایجاد نمی کند: <ul><li>name=…</li> <li>author=…</li> </ul>
رفع کاستی های HTML توسط XML • XML از داده با ساختارهای پیچیده مانند آنهایی که در برنامه های شی گرا یافت می شوند پشتیبانی می کند. [11] • مثال از ساختار منوها در زبان های برنامه نویسی: <menu> <menu label=“file”> <menu label=“new” command=“” /> <menu label=“export”> <menu label=“pdf” command=“” /> <menu label=“pdf” command=“” /> </menu> </menu> <menu label=“edit” command=“” /> </menu>
Case study: فروشگاه الکترونیک کتاب • اطلاعات مربوط به کتاب ها در پایگاه داده رابطه ایی:
Case study: فروشگاه الکترونیک کتاب • نمایش اطلاعات در HTML: <table><thead><tr> <th>id</th> <th>Name</th> <th>Author</th> <th>Publisher</th> <th>Year</th> </tr></thead><tbody><tr> <td>1</td> <td>Software Engineering: A Practitioner's Approach 6th edition </td> <td> Roger S. Pressman</td> <td>McGraw-Hill</td> <td>2004</td> </tr></tbody></table>
Case study: فروشگاه الکترونیک کتاب • نمایش اطلاعات در XML: <book> <id>1</id> <name>Software Engineering: A Practitioner's Approach 6th edition </name> <author> Roger S. Pressman</author> <publisher>McGraw-Hill</publisher> <year>2004</year> </book>
زمینه های کار شده XML: [13-12] XSD • XML Shema، یک زبان XML برای توصیف اسناد XML معرفی شده توسط کنسرسیوم W3 در سال 2001 • XSD از دو بخش ساختار و انواع داده ایی تشکیل می شود. • خصوصیات: • خود مبتنی بر XML است. • از فضاهای نام پشتیبانی و خود از آنها استفاده می کند. • پیمانه ایی است. (شامل شدن و توصیف دوباره) • امکان استفاده از عبارات منظم
زمینه های کار شده XML: [18-13] Xpath • یک زبان اعلانی به منظور تعیین مکان گره ها در اسناد XML • استفاده در: XPointer (برای آدرس دهی)، XSLT (برای تطابق الگو)، شمای XML (برای یگانگی و بیان حوزه) و در XQuery (برای انتخاب و تکرار)
زمینه های کار شده XML: [13] XSL • مخفف عبارت: eXtensibleStylesheetLanguage • متشکل از: • XSL Transformations (XSLT)– یک زبان XML برای تعیین یک تبدیل از یک کلاس اسناد XML به یک کلاس دیگر • XSL Formatting Object (XSL-FO)– یک زبان XML برای تعیین فرمت در سطح پایین تری از جزییات نسبت به HTML و CSS
زمینه های کار شده XML: پردازشگر [13] XSLT • پردازشگر XSLT برنامه ایی است که یک سند XSLT و یک سند XML دریافت کرده و با اعمال قوانین سند XSLT بر سند XML یک سند XML جدید ایجاد می کند.
زمینه های کار شده XML: [13] XQuery • یک زبان پرس و جو مانند SQL برای اسناد XML است که توسط کنسرسیوم W3 ایجاد شده است. • از چند پیشنهاد پیشین مانند XML-QL، YALT، Lorel و Quilt مشتق شده است. • XQuery خود XML نیست، نسخه XML آن XQueryX نامیده می شود.
زمینه های کار شده XML: [14] UIML • مخفف عبارت: User Interface Markup Language • یک زبان توصیف واسط کاربری مجزا از ابزار • UIML توسط Style sheet ها طراح واسط را از تقاوت های ابزارها جدا نگاه می دارد.
زمینه های کار شده XML: [15] O:XML • یک زبان همه منظوره شی گرا مبتنی بر XML • دارای نخ های پردازشی (Threads)، اداره استثنا ها (Exception Handling)، عبارات منظم، فضاهای نام و موارد دیگری که در زبان های مدرن یافت می شوند. • خروجی یک برنامه O:XML یک سند XML است.
زمینه های کار شده XML: [22] Web Service • یک سیستم نرم افزاری که به منظور تبادلات متقابل بین دو ماشین در شبکه طراحی شده است. • سرویس های وب معمولا Web API هایی هستند که از طریق اینترنت قابل دسترسی می باشند. • وب سرویس ها معمولا برای تبادل پیام از فرمتی مبتنی بر XML استفاده می کنند.
الگوی MVC[23] • در الگوی MVCبرنامه به سه لایه مدل، کنترلر و نمایش تقسیم می شود: • مدل: دسترسی به داده ها و همچنین منطق تجاری برنامه را در بر می گیرد. • نمایش: اطلاعات موجود در مدل را به کاربر نمایش می دهد. • کنترلر: کنترلر کل ساختار را به هم و به کاربر متصل می کند.
چرا MVC؟ [23] • MVC به ما اجازه می دهد چارچوب کاری را به سه قسمت تقسیم کنیم. • در هر قسمت می توان زبان مناسب مبتنی بر XML ایی برای توصیف مسئله انتخاب یا ایجاد نمود. • MVC مانع از پیچیدگی برنامه ایی که قرار است از چارچوب کاری ما استفاده کند می شود.
مدل: لایه مدل[23] • این لایه وظایف زیر را انجام می دهد: • اشیای مورد نیاز کنترلر را با فرمت تقاضا شده برای هرخصوصیت فراهم میکند. • اشیای ارسال شده از کنترلر را پس از اعتبار سنجی ذخیره می کند. • در چارچوب کاری ما فایل های XML خصوصیات اشیا (مدل آنها) را تعیین می کنند. • زبان های مبتنی بر XML مختلفی برای توصیف مدل ها ایجاد شده اند مانند: • XMI – Propel- Turbine
مدل:[24] XMI(XML Metadata Interchange) • فرمتی به منظور تبادل ابر داده توسط XML • فرمتی برای ذخیره سازی اطلاعات UML مانند کلاس ها، اشیا و ... به صورت XML • ابزارهای UMLامکان ذخیره کردن اطلاعات در قالب XMI را فراهم ساخته اند.
مدل: Propel • مبتنی بر XML • امکان می دهد روابط بین اشیا مشخص شوند. • امکان تعیین قیود و اعتبار سنجی بر روی خصوصیات اشیا فراهم می کند. • فرمت آن مشابه ساختار پایگاه داده است و ساده و قابل فهم است. • پیچیدگی آن زیاد نیست و تمام نیازهای ما را برآورده می کند.
نمایش: لایه نمایش[26] • این لایه دو کار اساسی انجام می دهد: • اطلاعاتی که توسط کنترلر از لایه مدل بدست آمده تبدیل به فرمت قابل نمایشی برای کاربر می شوند. • دستورات و ورودی های کاربر را گرفته و به لایه کنترلر می دهد. • این لایه در واقع قالب برنامه است.
نمایش: XML به منظور توصیف واسط کاربری • تلاش های بسیاری به منظور استفاده از XML برای توصیف واسط کاربری صورت گرفته است: • XAML : زبان توصیف واسط کاربری مایکروسافت در ویندوز ویستا • XUL : زبان توصیف واسط کاربری موزیلا برای مرورگر فایرفاکس • UIML : زبان توصیف واسط کاربری مجزا از ابزار • HTML در واقع یک زبان مبتنی بر XML برای ایجاد واسط کاربری در صفحات وب است.
نمایش:[28] XAML(Extensible Application Markup Language) • زبان برنامه نویس اعلانی مبتنی بر XML • توسعه یافته توسط مایکروسافت به منظور استفاده در ویستا • توسعه دهندگان را قادر می سازد: • سلسه مراتبی از اشیا با مجموعه ایی از خصوصیات و منطق را مشخص کنند. • بدون کد واسط کاربری را ایجاد کند.
نمایش: HTML + XSLT • HTML یک استاندارد فراگیر است و موتورهای مختلفی برای پردازش و Render آن ایجاد دشده اند. • هم اکنون توسط پلتفرم های مانند Adobe AIR امکان استفاده از HTML در برنامه های Desktopنیز فراهم شده است. • HTML همراه با JavaScriptامکان ارائه برنامه های قدرتمندی مانند Gmail و ... را فراهم کرده است. • هم اکنون اجزای آماده بسیاری برای HTML توسط شرکت های مختلف فراهم شده است.
نمایش: HTML + XSLT • XSLT می تواند به عنوان ابزاری برای تبدیل یک سند XML به HTML مورد استفاده قرار گیرد. • XSLT بسیار قدرتمند است و همه نیازها به عنوان یک موتور قالب در آن گنجانده شده اند. • پردازشگر XSLT در اکثر زبان ها و مرورگرها پیاده سازی شده استو امکان استفاده از آن در سمت سرور و سرویس گیرنده فراهم است.
کنترلر: لایه کنترلر[26] • لایه کنترلر وظایف زیر را انجام می دهد: • ارتباط بین مدل و نمایش را برقرار می کند. • اطلاعاتی لازم را از مدل جمع آوری و به لایه نمایش ارسال می کند. • می گوید که چه دستوراتی بر اطلاعات دریافتی از کاربر اعمال شوند. • این لایه در واقع مانند یک زبان برنامه نویسی است.
کنترلر: O:XMLیک زبان برنامه نویسی مبتنی بر XML[30] • یک زبان همه منظوره شی گرا مبتنی بر XML • دارای نخ های پردازشی (Threads)، اداره استثنا ها (Exception Handling)، عبارات منظم، فضاهای نام و موارد دیگری که در زبان های مدرن یافت می شوند. • خروجی یک برنامه O:XML یک سند XML است.
کنترلر: خصوصیات O:XML • تعریف توابع و انواع به صورت کاملا XML • بررسی انواع به صورت پویا • چند ریختی و بارگیری مجدد توابع • ارث بری چند گانه • زبان عبارات قابل توسعه و پشتیبانی از عبارات منظم • استثناها و نخ های پردازشی
کنترلر: معایب O:XML • امکان برقراری ارتباط با اشیای موجود در لایه های دیگر برنامه مانند رابط کاربری یا داده فراهم نیست. • امکان تعریف کنترل های تو در تو فراهم نشده است. • از کلیه قابلیت های XML مانند ارث بری تگ ها استفاده نشده است.
کنترلر: خروجی زبان O:XML • خروجی یک برنامه O:XML یک سند XML است. • این خصوصیت، حفره موجود در فراهم کردن منطق تجاری در زنجیره داده به نمایش که مبنای اکثر سرویس های وب امروزی است را پر می کند. • با توجه به محبوبیت XML در تبادل اطلاعات این مورد استفاده از O:XML به جای زبان های عمومی را توجیه می کند.
کنترلر: موارد استفاده از O:XML • این خصوصیات O:XML آن را به زبانی مناسب برای کاربردهای زیر تبدیل می کند: • ایجاد سرویس های وب • انتشار XML • توسعه برنامه های وب • ایجاد میان افزار های XML • برنامه نویسی سمت سرور • پیاده سازی زیربنای XML
کنترلر: برنامه نویسی لایه ایی • برنامه نویسی لایه ایی یعنی اضافه کردن اطلاعات مفید مانند کامنت ها و تنظیمات به کد به گونه ایی که نه با کد و نه با دیگر لایه ها تداخل کنند. • در اکثر زبان ها فقط دو لایه کد و کامنت داریم و برنامه نویس ناگزیر است دیگر لایه ها را به صورت کامنت جای دهد. • فضاهای نام XML این امکان را برای O:XML فراهم می کنند که چندین لایه داشته باشیم.
کنترلر: مثالی از برنامه نویسی لایه ایی در O:XML <o:function name="foo"> <doc:p>The foo() function does very little.</doc:p> <o:do>…</o:do> <ut:test> ...test definition... </ut:test> </o:function> • فضای نام o مربوط به دستورات o:xml است. • فضای نام docمربوط به کامنت ها است. • فضای نام utمربوط به تست واحدها است. • فضای نام db مربوط به پایگاه داده است.
ترکیب راه حل ها • لایه مدل: Propel – مجموعه ایی از فایل های XML در پوشه Model قرار می گیرند و انواع شی های داده ایی را مشخص می کنند. • لایه نمایش: XSLT – مجموعه ایی از فایل های XSLT که در پوشه View قرار می گیرند و قالب های نمایشی مختلف را برای اطلاعات مدل ها فراهم میکنند. • لایه کنترلر: O:XML – مجموعه ایی از فایل های XML که در پوشه Controller قرار می گیرند و مدل های به کار رفته در این کنترلر و همچنین نمایش آن را انتخاب می کنند.
روند اجرا • کنترلر منتظر دریافت دستور کاربر می ماند. • پس از دریافت دستور، کنترلر، کنترل مورد نظر را فراخوانی و اجرا می کند. • کنترلر مدل های لازم را با اطلاعات کاربر فراخوانی میکند و نتیجه را میگیرد. • کنترلر نتیجه را به لایه نمایش ارسال می دارد و لایه نمایش، نمایش مورد نظر را فراخوانی و داده ها را قالب بندی می کند. • کنترلر خروجی ایجاد شده را از لایه نمایش دریافت می کند و به کاربر تحویل می دهد. • کنترلر به وضعیت 1 باز می گردد.
مثال: مدل <?xml version="1.0" encoding="utf-8"?> <table name="book" description="Book Table"> <column name="id" type="int" primaryKey="true" autoIncrement="true" required="true"/> <column name="title" type="varchar" size="255" required="true" description="Book Title"/> <column name="isbn" type="varchar" size="24" required="true" /> <column name="publisher" type="int" required="true" description="Foreign Key for Publisher"/> <column name="author" type="int" required="true" description="Foreign Key for Author"/> <foreign-key foreignTable="publisher"> <reference local="publisher" foreign="id"/> </foreign-key> <foreign-key foreignTable="author"> <reference local="author" foreign="id"/> </foreign-key> </table>