XML زبانی است که امکان ذخیره داده‌های ساخت‌یافته را فراهم می‌کند. داده‌های ساخت‌یافته به داده‌هایی گفته می‌شود که قسمت‌های مختلف آن قابل تفکیک و ساختاربندی باشد. مثلا برای ارائه اطلاعات مربوط به کتاب‌های یک کتابخانه می‌توان از یک فایل XML استفاده کرد و در آن نام کتابخانه، تعداد کتاب‌ها و سپس لیستی از کتاب‌های موجود در کتابخانه شامل نام کتاب، نام نویسنده و خلاصه آنرا به فایل XML مورد نظر اضافه کرد. در XML ازیکسری نشانه‌هایی با عنوان تگ(tag) استفاده می‌شود که از طریق این تگ‌ها می‌توان معانی داده‌های مختلف موجود در فایل را تعریف کرد و سپس از همین تگ‌ها استفاده می‌کنیم تا داده‌های مورد نظر خود را در فایل پیدا کنیم. یکی از نرم‌افزارهای بانک اطلاعاتی که کاربرد زیادی نیز دارد، نرم‌افزار SQL Server 2000 شرکت مایکروسافت می‌باشد. در این نرم‌افزار امکاناتی لحاظ شده است که می‌توان با استفاده از آنها، داده‌های موجود در جداول را به صورت XML بدست آورد. می‌توان با استفاده از عبارت For XML در دستور select، به‌جای آنکه نتایج آنرا به صورت سطری داشته باشیم، آنها را به صورت XML دریافت کنیم. به همراه عبارت For XML باید یکی از حالات Auto، RAW یا Explicit در عبارت مشخص شود.

از آنجاییکه شرکت مایکروسافت از ابتدای توسعه استاندارد SOAP با آن درگیر بوده است، تکنولوژی آن برای توسعه وب‌سرویس‌ها از شرکت‌های رقیب اندکی فاصله گرفته و بیشتر مورد اقبال واقع شده است. با استفاده از محیط توسعه .NET شرکت مایکروسافت، می‌توان براحتی وب‌سرویس‌های مورد نظر را تولید کرده و مورد استفاده قرار داد. در این نوشته می‌خواهیم به صورت قدم به قدم مراحل ساخت یک وب‌سرویس و یک برنامه تحت ویندوز برای استفاده از آن وب‌سرویس را دنبال کنیم. برای برنامه‌نویسی از محیط توسعه Visual Studio.NET استفاده خواهیم کرد، بنابراین قبل از اینکه به بحث اصلی یعنی نحوه کدنویسی بپردازیم، بهتر است اشاره کوتاهی به موارد و پیش‌ نیازهای این محیط توسعه داشته باشیم. برای استفاده از Visual Studio.NET یا .NET Framework SDK باید بر روی کامپیوتر خود Internet Information Server یا همان IIS را نصب کرده باشید.

نیاز انسان ها به تاریخ از آنجا ناشی می شود که مشکلاتی که ما در زندگی شخصی یا جمعی خود با آنها مواجه می شویم، به احتمال زیاد قبل از ما برای کس دیگری هم اتفاق افتاده است. شاید در بسیاری از موارد، مشکلات دقیقا یکی نباشند، ولی مشکلاتی نیز وجود دارد که دقیقا یکسان هستند و به تناوب برای افراد مختلف پیش می آید. مشکلاتی شبیه به هم، که راه حل های مشابه هم دارند. به عنوان مثال یک پزشک کسی است که می داند برای یک مشکل تکراری، چه راه حلی باید ارائه کند. یک پزشک معمولا با بیمارانی سروکار دارد که دارای مشکلات مشابه هستند و درمان مشابه ای نیز نیاز دارند. در چنین مواردی تنها کاری که باید بکند دیدن علائم موجود در بیمار می باشد، چون قبلا کسی پیدا شده، الگوهایی تهیه کرده شامل علائم بیماری و درمان آن. هر چند دانستن این الگوها کفایت نمی کند، ولی می تواند بسیار مفید باشد. الگوهای طراحی در نرم افزار دقیقا همین کار را می کند. تعاریف ارائه شده برای الگو، تقریبا همگی حاوی مضمونی نزدیک به آنچه در بالا گفتیم، می باشد:

برنامه‌نویسی شئ‌گرا امکان استفاده مجدد از کدهای نوشته‌شده را در سیستم‌های مختلف با معماری‌های متفاوت بوجود آورد. یک برنامه‌نویس می‌تواند از کلاس‌های ایجاد شده توسط سایر برنامه‌نویسان استفاده کند و کدهای خود را نیز در قالب کلاس برای استفاده در اختیار آنها قرار دهد. اگر بخواهیم اغراق کنیم، می‌توان پیش‌بینی روزی را کرد که دیگر برنامه‌نویس نیازی به پیاده‌سازی کلاسی نخواهد داشت و تنها با جستجو در بین کلاس‌های موجود می‌تواند آنرا بدست آورد. به عنوان مثال، فرض کنید که یک برنامه‌نویس احتیاج به نوشتن کدی برای کار با تاریخ‌های شمسی و انجام تبدیل‌های مورد نیاز به تاریخ‌های دیگر مانند تاریخ میلادی یا قمری داشته باشد. این برنامه‌نویس ابتدا در مخزن کلاس‌ها جستجو می‌کند تا شاید بتواند کلاسی را پیدا کند که اینکار را انجام دهد. اگر قبلا چنین کلاسی نوشته نشده باشد، خودش شروع به کدنویسی آن می‌کند و سپس آنرا به مخزن کلاس‌ها اضافه می‌کند. از این به بعد، سایر برنامه‌نویسان با مراجعه به مخزن کلاس‌ها و یافتن این کلاس دیگر نیازی به کدنویسی نخواهند داشت. برخی از شرکت‌هایی که در زمینه زبان‌های برنامه‌نویسی فعالیت می‌کنند از همین ویژگی استفاده کرده‌اند

یک سیستم بانک اطلاعاتی باید توانایی اجرای همزمان تراکنشها را داشته باشد. و همین concurrency یا همزمانی باعث میشود تا با مشکلاتی مواجه شویم که ما را نیازمند قفل می کند. مشکلات ایجاد شده در قالب مثال هایی در ادامه بررسی می کنیم.

مشکلات عدم استفاده از قفل

در نظر بگیرید که اجرای دو تراکنش همزمان شده است. تراکنش اول، داده x را از بانکاطلاعاتی می خواند. سپس تراکنش دوم نیز داده x را می خواند. تراکنش اول، x+5 را به جای x در بانک اطلاعاتی می نویسد. تراکنش دوم، x+1 را در بانک اطلاعاتی به جای x می نویسد. و هر دو به کارشان خاتمه می دهند. حتما متوجه شده اید که مشکلی که در اینجا با آن روبرو می شویم، از دست دادن update انجام شده توسط تراکنش اول است. چون تراکنش دوم، دوباره بر روی داده update شده توسط تراکنش اول می نویسد.

زبان‌های طبیعی، همگی دارای ابهام هستند. کلمات هر زبانی می‌تواند چندین معنی و مفهوم داشته باشد. به عنوان مثال، اگر شما لغت game را در یک فرهنگ‌لغت جستجو کنید، معانی مختلفی برای آن وجود دارد، از "بازی" گرفته تا "گوشت شکار"، که اصلا هیچ شباهتی به یکدیگر ندارند. معانی این کلمات، بسته به کاربرد آن در جمله و یک متن، تا حدودی مشخص می‌شود. این ابهام، در کاربردهایی مانند سیستم‌های ترجمه ماشینی به عنوان یک مشکل شناخته می‌شود. البته همین ابهام کاربردهای زیبایی هم دارد. مثلا این امکان را فراهم می‌کند تا افرادی مانند حافظ، متن‌های شاعرانه و کنایه‌آمیز بنویسند و خواننده را در یک محدوده برای برداشت معانی دلخواه خود آزاد بگذارند. ولی گذشته از این کاربردهای زیبا، همانگونه که گفته شد، در توسعه سیستم‌های کامپیوتری که به منظور پردازش زبان طبیعی بکار می‌روند، مشکل ایجاد می‌کند و به عنوان مثال، باعث می‌شود تا نتوان ترجمه متون از یک زبان به زبان دیگر را کاملا به صورت اتوماتیک انجام داد. از اوایل دهه 90 میلادی، محققان عرصه کامپیوتر، بر آن شدند تا روشی را برای بیان صریح مفاهیم موجود در دنیای واقعی، پیدا کنند.

COM سرنام های component object model می باشد. COM استانداردهایی برای برقراری ارتباط بین مولفه های مختلف تعریف می کند. هدف اصلی آن این است که به ما این امکان را بدهد تا بتوانیم برنامه هایی با استفاده از قطعات پیش ساخته یا مولفه(component) تولید کنیم. به عنوان مثال یک سیستم سفارش خرید را در نظر بگیرید. در این سیستم ممکن است برای ورود آیتم های مختلف از یک مولفه grid استفاده شده باشد که کاربر لیست آیتم ها را در آن وارد می کند. یک مولفه دیگر نیز داریم که به امکان جستجو در بین آیتم های مختلف را می دهد. همچنین ممکن است مولفه های دیگری نیز مانند مولفه محاسبه مالیات یک سفارش خرید را در سیستم داشته باشیم. حال سوال این است که چگونه می توان ارتباط بین این مولفه های مختلف را برقرار کرد. پاسخی که COM به این سوال می دهد این است که از طریق معرفی یکسری استاندارد. حال ببینیم که برای برقراری ارتباط بین این مولفه ها با چه مشکلاتی مواجه هستیم و به عبارت دیگر چه چیزهایی در برقراری ارتباط بین مولفه های مختلف دخالت دارند که باید برای آنها استاندارد تعریف کنیم.

اولین سوالی که مطرح می شود این است که چگونه به مولفه های مختلف دسترسی پیدا کنیم. برای جواب این سوال باید یک استاندارد تعریف شود تا برنامه نویس بتواند براحتی به مولفه های مختلف دسترسی پیدا کند و اشیاء مورد نظر خود را از آنها ایجاد کند.