ENHANCEMENT OF FACEBOOK FEATURES<br /> BY: PARIN SHAH<br />
FEATURES<br />PHOTO - EDITING APPLICATION <br />TEMPORARY ONE TIME PASSWORD TO ACCESS FACEBOOK ACCOUNT FROM PUBLIC MACHINE<br />APPLYING WATERMARK EFFECT TO THE PHOTOS.<br />PHOTO VIEWING APPLICATION.<br />
TOOLS <br />MICROSOFT VISUAL STUDIO 2008<br />INTERNET INFORMATION SERVER (IIS)<br />AJAX CONTROL TOOLKIT<br />NEODYNAMIC IMAGEDRAW TOOLKIT<br />.NET FRAMEWORK 3.5<br />FACEBOOK API<br />
SELF DESIGNED MODULE<br />DESIGN PAGES OF ALL MODULE.<br />FILE UPLOAD MODULE.<br />TEMPORARY PASSWORD GENERATOR AND SENDING THE PASSWORD TO USER.<br />PHOTO VIEWER, PHOTO SLIDESHOW.<br />PHOTO EDITING FUNCTIONS LIKE SHARPEN,EMBOSS.<br />PHOTO COLLAGE<br />
OPEN SOURCE MODULE BUT MODIFIED W.R.T. APPLICATION<br />CALLOUT IMAGE<br />PHOTO-EDITING FUNCTIONALITIES LIKE <br /> 1.) ADJUSTING SATURATION, HUE, BRIGHTNESS, <br /> GAMMA, CONTRAST<br /> 2.) ROTATING & FLIPPING IMAGE,<br /> 3.) PERSPECTIVE AND REFLECTION OF IMAGE<br /> 4.) CREATING BLACK & WHITE , SEPIA IMAGE<br />CROPPING PHOTO.<br />
ARCHITECTURAL STYLE<br />I have chosen the FOUR-TIER ARCHITECTURAL style for my project. <br />My project involves using the Facebook through Computers, Mobile Devices, etc. So the application requires different version of interface for every user.<br /> So my interface layer is decomposed into a Presentation Server Layer and a Presentation Client Layer. <br />Forms shared by all types of users in Presentation Client Layer are then processed in the Presentation Server Layer thus removing the redundancy across different clients like Computer User, Mobile Device users. <br />And then the data from all clients is stored and processed in a single storage system.<br /> When the client requests any data the Application Logic provides the connection with the storage layer and then the query are processed and then the Presentation Server Layer presents the data to Presentation Client Layer. This Presentation Client Layer depending upon the client presents appropriate forms, user interface, etc. <br />
PROXY DESIGN PATTERN<br />Provide a surrogate or placeholder for another <br /> object to control access to it. <br />Facebook User<br />Photo-Editor<br />+EditingFunctions<br />Real Image Class<br />Proxy Image Class<br /> Real Image<br />+EditingFunctions<br />+EditingFunctions<br />+RealImage.EditingFunctions<br />
PROXY DESIGN PATTERN<br />The classes participating in this pattern are: <br />Proxy Image<br /><ul><li>It maintains a reference that lets the proxy access the real image.
Proxy may refer to a Photo-Editor if the Real Image and Photo Editor interfaces are the same.
It provides an interface identical to real image so that a proxy can be substituted for it.
Moreover it controls access to the real image.</li></ul>Photo-Editor<br /><ul><li>This class defines the common interface for Real Image and Proxy Image class so that a Proxy can be used anywhere a Real Image is expected or required to be processed. </li></ul>Real Image<br /><ul><li>This class defines the real object that the proxy image class represents. </li></li></ul><li>FACADE PATTERN<br /> A facade is an object that provides a simplified interface to a larger body of code:<br /><ul><li>It makes APIs easier to use, understand and test, since the facade has convenient methods for common tasks.
It reduce dependencies of outside code on the inner workings of a library and allows more flexibility in developing the system.
It wraps a collection of various APIs like Facebook API, Image Draw API with a single well-designed API for our application.</li></li></ul><li>FAÇADE PATTERN<br /> User<br /> FACADE<br /> Photo-Editor<br /> Photo Watermark<br /> Temporary Access<br /> Photo-Viewer<br />
MODEL VIEW CONTROLLER PATTERN<br />*The model manages the behavior and data of the application domain, responds <br /> to requests for information about its state (usually from the view), and responds <br /> to instructions to change state (usually from the controller). <br />*Also the model notifies observers (usually views) when the information changes <br /> so that they can react.<br />*The view renders <br /> the model into a <br /> form suitable for <br /> interaction.<br /> *Multiple views can <br /> exist for a single <br /> model for different <br /> purposes.<br /> *A viewport typically <br /> has a one to one <br /> correspondence <br /> with a display <br /> surface and knows <br /> how to render to it.<br /> MODEL<br />* The controller receives user input and initiates a response by making calls on model objects. A controller accepts input from the user and instructs the model and viewport to perform actions based on that input.<br />VIEW<br />CONTROLLER<br />
MODEL VIEW CONTROLLER PATTERN<br />In the model view controller pattern we have the business logic separated from the view and controller module. <br />In this application we have the image editing functions separate from the view photos and photo preview function. <br />We have the various functions like crop_image(), sharpen_image(), etc in the photo_editor functionality whereas the photos and user photo album class contains various other details of the photo and its viewing details. <br />
Interface specification <br /><ul><li> This class deals with the functionality of the photo-editing features like </li></ul> rotate, crop, sharpen, etc. <br /><ul><li> When the photo is uploaded and changed the photo is viewed using the </li></ul> method view_preview_window(). <br /><ul><li> Whenever the photo is uploaded and performed any function different </li></ul> methods like crop_image(), sharpen_image(), rotate_image(), <br />auto_size_image(), etc are called depending upon the <br /> HTTP request of the user.<br />
Mapping contracts to exception<br />contextPhoto_Editorinv: <br />photos_editor->forAll( Img:Image | Img.load(true) and Img.save(true)) <br /> <br />context UserPhotoAlbuminv:<br />photoAlbum->forAll(PA : Photo_Album | Pa.create(true) and pa.notPresent(true))<br /> <br />context Photos inv:<br />photosforAll(p:Photo | p.addPhoto(true) and p.dwnloadDisable(true))<br /> <br /> <br />
Interface specification <br />By use of this class the user’s request for temporary password would be fulfilled. <br />ConfirmIdentity()- Authenticates the user and its request. generateRandomPwd() - System generates a random password and initiates mobile messaging module<br /> <br /> After the identity has been confirmed <br />configureUserMsg()- The message is configure through by the generated password and user details<br />
MAPPING OBJECT MODELS T0 A PERSISTENT STORAGE SCHEMA<br />A Schema is a description of the data, that is, a meta model for data.<br />A Primary key of a table is a set of attributes whose values uniquely identify the data records in a table.<br />Sets of attributes that could be used as a primary key are called Candidate keys.<br />A Foreign key is an attribute that references the primary key of another table.<br />
optimizing THE OBJECT MODEL - Delaying Expensive Computations<br /><ul><li> By this pattern an ImageProxy object takes place of Image and provides </li></ul> the same interface as Image object. When the image needs to be drawn, <br />ImageProxy loads the data from the disk and creates a RealIMage object, <br /> thus saving the substantial computation time.<br /><ul><li>We can use this pattern while applying the various photo editing effects on </li></ul> the loaded image .<br />
RATIONALE MANAGEMENT<br />can be by use of can be by use of<br /> fails to perform meets this criteria and improves performance<br /> by about 5-10 % of the user request. <br />Use of Processing Page?: Issue<br />.aspx .cs page: Proposal<br />.ashx page : Proposal<br />Performance$ : Criterion <br />