This essay has been submitted by a student. This is not an example of the work written by our professional essay writers.
The aim of the project is to provide an online web-based Birthday Calendar tool. The tool will keep track of birthdays and anniversaries of family and friends as well as upcoming appointments. The application will extract information about user and user's friend's birthdays from social networking apps (for example Facebook), and populate the calendar. Before extracting information about user's friends, the program will print the list of friends for selection, if information about some friends is unnecessary, they can be easily deselected from the list. User can input information about friends that are not in the Facebook.
Apart from reminding about birthdays and anniversaries, the tool can be used for scheduling their appointment and meeting. User can view upcoming activities and decide when and how to receive alerts, by e-mail, SMS or MMS notifications as well as to send automatically greeting with or without card and inform user by SMS or e-mail.
There will be available multiple type of alerts, that's mean that user can decide to receive an e-mail and SMS. The system will allow user to decide for how many days ahead receiving alert (select date and time), the alert can be repeated. If user will decide to repeat alert then he/she can set the frequency of repeated alert.
The tool will include the following features:
Synchronized account - login to BCT and Facebook account
Extract user's friends birthdays from Facebook
Extract network's members birthdays from Facebook
Prints the list of user's friends from Facebook
Allow deselect unnecessary friends
Unsynchronized account - login to BCT account only
End users can change their password
Sending forgotten password by SMS
birthdays - calculate age
Provide different type of alerts:
E-mail and SMS
Send automatically greetings:
MMS - with card or some picture
Allow to manage alert:
select date and time
Many people experience difficulties to remember and congratulate in time people close to them or not forget about meetings or appointment that was scheduled couple days, weeks or sometimes months ago.
The prospective users of the tool can be people of any age. It is very convenient for Facebook users, the system provide additional feature for them. This system can be useful for organization as well. It can track the birthdays of all staff, and can be used by secretary to schedule upcoming meetings and appointments. It is also very handy for organization that has network on Facebook. The application automatically extracts information about all people's birthdays that joined to the network of the organization in Facebook.
Comparison to similar systems
The system that most similar to BCT is www.birthdayalarm.com [ii] . The website includes common features, extracting information from the user's email contacts, but it does not access to any social network. The website allows you to send greeting card, but only to friend's email. There is no SMS or MMS services are available at all. They allow to modify the list of friends, you can delete, or ad some note. I could not find feature like scheduling appointment and meetings. But the overall idea is similar to my project. The website have nice design and appropriate links, it is quite easy navigate from one page to another. BirthdayAlarm also provides a large list of different type of the greeting cards. So there are a lot of things that I should consider and can use for my web application. As was stated above BCT application will include more features that are not currently available on BirthdayAlarm.
Technology for implementation of the Web Application
In researching different technologies being used to develop web applications and there are many suitable development tools. Two of the most widely used technologies that came across in the research are the .NET framework and J2EE platform.
J2EE is a good option for large web applications. It being open source is one big advantage as well as being portable. The java libraries offer a vast amount of functionality for faster development.
Pros and cons of J2EE: [iii]
Wide range of vendor choices
Has a proven track record
Has a complex application development environment
Lacks built-in support for Web services standards
Tools can be difficult to useÂ
.NET is not an open source or very portable but is excellent for smaller web applications. That is not to say it is not good for larger projects but, in this context, it is a very good choice for a smaller project. Another advantage is the use of Visual Studio which is one of the best web development tools around. The .NET framework is packed with useful features. While the Microsoft .NET framework supports several different languages.
Pros and cons of .NET:
Has built-in support for Web services standards
Is tightly integrated with Microsoft's operating system and enterprise server software (some may consider this a con but from an ease of development point of view it is a pro)
Has a strong framework for building rich graphical user interfacesÂ
Framework runs only on Windows
New runtime infrastructure lacks maturity
Can have poor performance with graphics
While there are many different technologies available for use in creating web sites and web based applications, each with their own advantages and disadvantages, c# and asp.net are the technologies that will be most likely used to develop the web application. For the purposes of this project, c# with asp.net is preferable due to its features, facilities to write clean reusable code and the fact that it can be developed with Microsoft Visual Studio.
There are two deferent approaches of the web development are available: ASP.NET Web Forms and ASP.NET MVC.
ASP.NET Web Forms
Web Forms are based on ASP.NET. Web Forms allow creating Web pages with Web forms that will be accessible by a Web browser. Web Forms are Web pages that serve as the user interface for a Web application. Working with Web Forms is similar to working with Windows Forms.
In Web Forms pages, the user interface programming is divided into two parts:
The visual components, which is the design page. The Web Forms page is the visual element. The Web Forms works as a container for the static HTML text and an ASP.NET server controls we want to display. Using the Visual Studio Web Forms designer and ASP.NET server controls, we can design the form just like in any Visual Studio application, for example Windows Form.
The logic is the code behind design page. The code is needed in order to interact with form. It is a separate file from the user interface file. The extension of the code-behind file is ".aspx.vb" (VB) or ".aspx.cs" (C-Sharp).The cone-behind file can be written in Visual Basic or Visual C#.
"The code-behind class files for all Web Forms pages in a project are compiled into the project dynamic-link library (.dll) file. The .aspx page file is also compiled, but differently. The first time a user loads the aspx page, ASP.NET automatically generates a .NET class file that represents the page, and compiles it to a second .dll file. The generated class for the aspx page inherits from the code-behind class that was compiled into the project .dll file. When the user requests the Web page URL, the .dll files run on the server and dynamically produce the HTML output for your page." [iv]
Diagram 2.0: Web Forms are part of ASP.NET
Pros and cons of ASP.NET Web Form:
Separation of Web page from application logic
Provides rich controls - detect the browser and send out appropriate markup language such as HTML
Data binding capabilities
Event-based programming model that is familiar to Microsoft Visual BasicÂ® programmers
Compiled code and support for multiple languages
Allows third parties to create controls that provide additional functionality
Tightly coupled - single class is used both display output and handles user input.
Unit testing is almost an impossible task
MVC helps us to have more granular separation, so we have to see all these different levels to be able to work with the web development and Microsoft technology.
Pattern helps us solve problems that come up over and over again, thing about data access pattern, opening connection, grabbing data, data binding or for presentation in web form content and code behind.
MVC get allow us to split it out into more granular level of models, views and controllers.
Diagram 3.0: Components of MVC
Models objects are the parts of the application that implement the logic for the application s data domain. Often, model objects retrieve and store model state in a database. For example, a Product object might retrieve information from a database, operate on it, and then write updated information back to a Products table in SQL Server.
Views are the components that display the application s user interface (UI). Typically, this UI is created from the model data. An example would be an edit view of a Products table that displays text boxes, drop-down lists, and check boxes based on the current state of a Products object.
Controllers are the components that handle user interaction, work with the model, and ultimately select a view to render that displays UI. In an MVC application, the view only displays information; the controller handles and responds to user input and interaction. For example, the controller handles query-string values, and passes these values to the model, which in turn queries the database by using the values.
Some of the others presentation patterns are available: MonoRail, Web object or Django.
There is some other patterns are well for web presentations: Model View Presenter or Model View View Model.
Pros and cons of ASP.NET MVC:
Full control over markup
Easy to maintain
loose coupling between input logic, business logic and UI logic
Enable Test Driven Development (TDD)- makes testing easy
No PostBack and ViewState model (Web is a stateless)
Difficult to convert an existing site
Large Controller classes - if used on large scale application
Choosing between ASP.NET Web Form and MVC
If you are going to develop Intranet application probably you need to get it done a little bit quicker. There is no need for fine tune control, because it behind firewall, and it for regular employees, in this case Web Forms might be great.
In the case of Internet application MVC might be great, because you may need to control everything on every browser.
Web Form and MVC can be used together as well.
Oracle and SQL
I can use both of these RDBMS to build stable and efficient system. As I already used Oracle database for my second and third year project, I decided to use Microsoft SQL server at this time in order to learn more about it. There is not going to be a lot of information stored in database, and it will use simple table structure with primary and foreign key. SQL server is very similar to Oracle; just a small differences in syntax and in software and hardware requirements.
Microsoft SQL Azure Database is a secure relational database service based on proven SQL Server technologies. The difference is that it is a fully managed cloud database, offered as a service, running in Microsoft data centres around the globe. SQL Azure Database will be used to store my data when I will deploy my web application on Azure cloud.
Assume that the website of your company is becoming more popular every day. The number of website's users is growing up very frequent. The success can become a problem, because your equipment is not able to maintain the demand. You need to get new and powerful equipment, but it takes time to set up new machines and maintaining is very costly. You also have to pay for the services whether you use them or not.
Cloud computing provides easy, scalable access to computing resources and IT services. Cloud computing is a general term for anything that involves delivering hosted services over the Internet. There are three categories of services in cloud computing:
Infrastructure-as-a-service [v] is using pay-for-what-you-use model. It is referred to as utility computing. Customers use the provider's application program interface (API) to start, stop, access and configure their virtual servers and storage. In cloud computing you can access to computer power instantly when you needed. It allows customer to pay for only as much capacity as is needed, and bring more online as soon as required.
Amazon provides IaaS called Elastic Computer Cloud or EC2. This is allows users to purchase computer processing power online and all the basis process cause storage and data transfer.
Google has also launch similar system called Google App Engine, which permits developers to run web application on Google infrastructure.
Using Microsoft data center [vi] means you can scale with ease and speed to meet the infrastructure needs of your entire organization or individual departments within it, globally or locally.
Platform-as-a-service [vii] in the cloud is defined as a set of software and product development tools hosted on the provider's infrastructure. Developers create applications on the provider's platform over the Internet. PaaS providers may use APIs, website portals or gateway software installed on the customer's computer. Force.com, (an outgrowth of Salesforce.com), GoogleApps and Windows Azure platform are examples of PaaS.
Windows Azure [viii] is a flexible platform that supports multiple languages and integrates with your existing on-premises environment. To build applications and services on Windows Azure, developers can use their existing Microsoft Visual StudioÂ® expertise. It allows developers to run applications and store data on servers owned and operated by Microsoft.
In the Software-as-a-service [ix] cloud model, the vendor supplies the hardware infrastructure, the software product and interacts with the user through a front-end portal. SaaS is a very broad market. Services can be anything from Web-based email to inventory control and database processing. Because the service provider hosts both the application and the data, the end user is free to use the service from anywhere.
Commercial SaaS include clarizen.com [x] online project management tool as well as customer relationship management and human resource application offered by salesforce.com [xi] , employease.com [xii] and zoho.com [xiii] . A number of online software applications are now also available and include Google docs [xiv] , Blist [xv] and SlideRocket [xvi] .
Microsoft Online Services [xvii] are subscription-based, on-demand applications and hosted services, providing your end users with a consistent experience across multiple devices. The Diagram 3.0 displays layers of Microsoft cloud.
Diagram 4.0 Microsoft cloud - category of services
A cloud computing can offer many advantages over traditional hosting:
It is elastic - as allows increase or decrease the hardware requirements with the minutes.
It is flexible - user can chose specification of each individual instance of computing power purchased.
Inexpensive - as no dedicating capital investment is required.
The service is fully managed by the provider (the consumer needs nothing but a personal computer and Internet access).
The web application will be deployed on Azure cloud. Compare Azure to Amazon cloud:
Amazon runs Linux and MS Windows operating systems
Microsoft Azure runs only Windows apps
As was stated above my web application should extract information about user and user's friends from the Facebook. In order to achieve it I have to use Facebook API.
The Facebook API is a platform for building applications that are available to the members of the social network of Facebook. The API allows applications to use the social connections and profile information to make applications more involving, and to publish activities to the news feed and profile pages of Facebook, subject to individual user's privacy settings. With the API, users can add social context to their applications by utilizing profile, friend, Page, group, photo, and event data. The API uses RESTful protocol and responses are localized and in XML format.