The subject specification relates generally to binding controllers to data and in particular to automatic binding of controllers to data at runtime.
Computers have become an important part of daily life for many individuals. Computers influence a wide range of activities from business transactions (e.g., wire-to-wire bank transactions) to interpersonal communications (e.g., communication through text messaging.) As computers become more popular, different mechanisms become available to allow users with minimal background in computers to obtain a relatively high level of functionality.
One area of development that has enabled computers to become more prevalent in society a graphical user interface (GUI.) GUIs can be utilized in an array of personal electronic devices, such as personal computers, cellular telephones, personal digital assistants, etc. A conventional computer can employ a keyboard, monitor, and mouse that a user can engage. A user is presented a GUI through the monitor by performing an operating on a keyboard (e.g., typing characters that start an application that uses a GUI.) The user can interact with the GUI through contacting the GUI with a mouse pointer that displays on the screen that is controlled by the mouse.
Different GUI capabilities allow different users to have a customizable experience. For example, if a child is operating an electronic device, then the GUI can disclose recognizable cartoon characters that the child will identify. Moreover, a user can modify a GUI to match their personal style. An individual can have a favorite color that permeates a GUI and/or have a theme that is used throughout the GUI (e.g., puppies.) In addition, a GUI can disclose animations that assist a user in navigating a program (e.g., a flashing red light indicates to the user that they should stop an activity.)
The following discloses a simplified summary of the specification in order to provide a basic understanding of some aspects of the specification. This summary is not an extensive overview of the specification. It is intended to neither identify key or critical elements of the specification nor delineate the scope of the specification. Its sole purpose is to disclose some concepts of the specification in a simplified form as a prelude to the more detailed description that is disclosed later.
Conventionally, two main methods are employed in binding a control to source information. In a first method, a developer writes numerous lines of code to create individual bindings; however, this code can be highly error prone and become tedious to the developer. In a second method, a tool (e.g., wizard) is presented at design time to a user to lead the user through binding generation. Nonetheless, the wizard can create a number of difficulties. If a programmer wants to have controls that display properties of classes that are not generated until runtime, then a typical wizard will not achieve desired functionality because properties are not known since a class does not yet exist. Additionally, a typical wizard looks at a snapshot of a data source based on when the wizard is run. This can cause difficulties when developers are building an application over time and wizard generated information becomes out of date with schemas of a data store.
The subject specification discloses information that relates to automatic binding generation at runtime. At design time, computer code is received that adds controls, a binding source, and/or properties relating to what is to be reflected in the control. At runtime, a system automatically creates at least one binding based on received computer code. Therefore, bindings can be created by a developer though writing a significantly smaller amount of code; thus the developer can operate more efficiently (e.g., write less) and write more successfully (e.g., writing less code can create a lower likelihood of error.)
Various features can integrate with automatic binding creation at runtime. A binding can integrate with a graphical user interface that allows a user to achieve a relatively high level of functionality though the binding. Moreover, a binding can be constructed from a model is generated from a database; bindings are created via the model and generated types. To assist in creating a fluent binding structure, a user can employ a similar naming convention as is used by a database. Different configurations are available to a developer, such as integrating a control with a Boolean operator to disclose if something is true/false, aggregating information from different source, etc.
The following description and the annexed drawings set forth certain illustrative aspects of the specification. These aspects are indicative, however, of but a few of the various ways in which the principles of the specification may be employed. Other advantages and novel features of the specification will become apparent from the following detailed description of the specification when considered in conjunction with the drawings.
The claimed subject matter is now described with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the claimed subject matter. It may be evident, however, that the claimed subject matter may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate describing the claimed subject matter.
As used in this application, the terms “component,” “module,” “system”, “interface”, or the like are generally intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a controller and the controller can be a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers. As another example, an interface can include I/O components as well as associated processor, application, and/or API components.
Furthermore, the claimed subject matter may be implemented as a method, apparatus, or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof to control a computer to implement the disclosed subject matter. The term “article of manufacture” as used herein is intended to encompass a computer program accessible from any computer-readable device, carrier, or media. For example, computer readable media can include but are not limited to magnetic storage devices (e.g., hard disk, floppy disk, magnetic strips . . . ), optical disks (e.g., compact disk (CD), digital versatile disk (DVD) . . . ), smart cards, and flash memory devices (e.g., card, stick, key drive . . . ). Additionally it should be appreciated that a carrier wave can be employed to carry computer-readable electronic data such as those used in transmitting and receiving electronic mail or in accessing a network such as the Internet or a local area network (LAN). Of course, those skilled in the art will recognize many modifications may be made to this configuration without departing from the scope or spirit of the claimed subject matter.
Moreover, the word “exemplary” is used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs. Rather, use of the word exemplary is intended to disclose concepts in a concrete fashion. As used in this application, the term “or” is intended to mean an inclusive “or” rather than an exclusive “or”. That is, unless specified otherwise, or clear from context, “X employs A or B” is intended to mean any of the natural inclusive permutations. That is, if X employs A; X employs B; or X employs both A and B, then “X employs A or B” is satisfied under any of the foregoing instances. In addition, the articles “a” and “an” as used in this application and the appended claims should generally be construed to mean “one or more” unless specified otherwise or clear from context to be directed to a singular form.
A communication component 102 engages other units and transfers data between the system 100 and at least one other unit. For instance, the communication component 102 can receive signals that runtime has commenced, that a control that should be bound, as to what type of control should be bound, as to what information should bind with a control, etc. Some data can be received by reading storage that holds computer code written by a developer.
Moreover, the communication component 102 obtains data that relates to runtime operation of an application. Example data that is obtained is that runtime has commenced and that other components should start operation, what control is to be bound, what control type is to be bound (e.g., ListBox, Textbox, etc.), what source of information is to be bound, etc. In addition, information can be obtained and transferred through a single transaction.
The communication component 102 can operate according to a number of different embodiments. According to one configuration, the communication component 102 operates wirelessly with other units through encrypted and/or non-encrypted manners. Hard wires transmissions and receptions can be made by the communication component 102 also using encrypted/non-encrypted manners. The communication component 102 can employ different contact techniques with different units. For instance, a first unit can be engaged through wireless encryption while a second unit is appointed through wired, non-encrypted interaction.
A bind component 104 collects information from the communication component 102. The bind component creates a link (e.g., binding 106) between a controller 108 and a source of information 110 based on obtained data from the communication component 102. Example information from the communication component 102 that can be employed by the bind component 104 is a signal that runtime has begun and thus, the bind component 104 should commence operation, what control and/or source information should be bound, if a request is authorized, etc. To create a link, the bind component 104 can use a name convention (e.g., names entered through a programming language match names in an entity.)
The bind component can embrace the control 108 and the source of information 110. Through the embrace, a binding can be set up between the two of them, such that the control 108 discloses information that relates to the source 110. While the control 108 discloses a portion of source information, it can actually link to the entire source (e.g., object, class, table, etc.) A control 108 can be a visual element capable of displaying information. The bind component 104 can include various check capabilities, such as determining if the binding 106 between the control 108 and the source of in formation 110 is successful.
In addition, the bind component 104 can engage the communication component 102 to disclose information that relates to the binding 106. For instance, once a proper binding 106 is established, the bind component 104 utilizes the communication component 102 to notify an auxiliary component that the binding was successfully completed. Moreover, the bind component 104 can use the communication component 104 to discover further actions. For instance, a bind component 104 can receive an instruction that a binding 106 is to be created. Once the binding is complete, the bind component 104 sends a message to the communication component 102 signifying completion and the communication component 102 requests a second binding to be made. It is to be appreciated that bind component 104 can operate concurrent bindings at one time (e.g., create two bindings at one time.)
The system 200 can engage a display component 202 to disclose information related to the binding 106. The display component 202 presents at least one control linked with information through the bind component 104 and can manifest as a monitor, projector, hologram presentment component, etc. A form can be presented to a user that includes a control that links to an information source (e.g., the model 206.) Moreover, the display component 202 can facilitate integration of the control 108 with a graphical user interface (GUI) that allows a user to interact with the control 108. For instance, the control 108 can be a combobox (e.g., a control that has multiple entries that discloses one entry as a time and allows a user to scroll to other entities). A user can modify the combobox through engagement of the GUI (e.g., clicking on an arrow.) In addition, the display component 202 can present to a developer what was matched as well as what was not matched. The display component 202 can show to a developer at least two details are disclosed, where a first detail discloses at least one link that was created and a second detail discloses at least one link that was intended to be created, but was not created (e.g., code that was written to provide a binding, but because of an error the binding did not occur.)
The model 206 can be mapped to a graphical user interface through the display component 202. According to one embodiment, there is generation of a model 206 to represent a configuration (e.g., different tables of a database as well as relationships between the different tables.) The model 206 is generated from a backend and a binding is performed upon the model and types. The analysis component 204 performs various types of investigation upon the model 206 to determine at least one appropriate binding. For instance, the analysis component 204 can identify relationships within the model 206, search appropriate information for binding, etc. Moreover, the analysis component 204 can operate upon units other then the model 206. For instance, an examination can take place of the communication component 102, control 108, display component 202, etc.
The analysis component 204 can determine at least one asset related to a control 108. Example assets are a control type (e.g., listbox, combobox, checkbox, textbox, etc.), if a control is capable of supporting a link, security clearance of a control, etc. The analysis component 204 can function as a means for analyzing a model 206. While the subject specification discloses the analysis component 204 as integrating with the bind component 104, the analysis component 204 can operate independent of the bind component 104 and engage in communication with devices in addition to integrating with other devices (e.g., a processor.).
The system 200 can also employ a master-detail implementation, commonly through the bind component 104. A master-detail implementation allows for further binding to show relationships between different entities in a model 206. In an example master-detail implementation, a form holding a control 108 that displays customers exists, but there is also a desire to bind orders automatically that relate to the customer. The customer can be the master record while the orders are considered detail.
An entity can have a number of pieces of information 308a to 308d that can be displayed through a control. The pieces of information 308 (e.g., properties) can have a corresponding identifier 310a to 310d that enables communication of what is contained in a piece of information. An identifier 310 can be used by a bind component 104 of
A bind component 104 of
In a specific example, the display component 202 can be a monitor for a shipping company. A form 302 is displayed on the monitor to disclose what a customer purchases and the name of the customer. Two controls 304 are utilized, a first control 304a shows a customer name and a second control 304b discloses a purchased product. The bind component 104 of
A search component 402 performs an examination upon at least one query 404. The examination can include possible returns of a query when it is run upon a database. While a general query is disclosed, a query can actually contain a number of sub-queries (e.g., customers query, orders query, product query, etc.) Moreover, the search component 402 can analyze properties 406 that relate to the query 404. For example, a query can disclose a table in a database named ‘shipping’ where the table holds properties ‘product’, quantity’, ‘address’, etc.
An add component 408 can place results of examination of at least one query into a bind source index 410. The bind component 104 can access the bind source index 410 to determine what is available for linkage. For instance, an examination can state that a table ‘customer’ is a result of the query 404. The add component 408 places a record in the bind source index 410 that table ‘customer’ is available for binding. When the bind component 104 operates and makes a request to the bind source index 410 through use of the communication component 102, the bind component 104 learns that the table ‘customer’ is available (e.g., the communication component 102 transfers a result to the bind component 104.) The add component 408 populates an index with at least one piece of data during runtime, where the communication component 102 obtains at least one piece of index data that transfers to a bind component.
The bind source index 410 can include both a source index 412 and an item index 414. There can be multiple instances where different information is located on different sources. The source index 412 allows information to be organized based on where information is located. As an illustrative example, a form 302 can hold two controls, one is to disclose an individual's security clearance and another is to present a person's home telephone number. It is likely security information is held in one location (e.g., an encrypted database) while telephone information is detained in a different location (e.g., digital directory.) The source index 412 allows the bind component 104 to ascertain quickly where information is located.
The source index 412 can work in conjunction with an item index 414. While the source index 412 holds information that relates to location, the item index 414 can hold what information pieces are in different locations. This can provide a bind component 104 with a clear picture as what is available when accessing a bind source index 410. Based on information found in the bind source index 410, the bind component 104 can make proper bindings.
An authentication component 504 can perform different types of verification concerning the search component 402. According to one embodiment, the authentication component 504 confirms that a control can have access to information. For instance, a user can write code for a control to display a password for ‘John_Q’. However, the user does not have authorization to view that information. Therefore, the authentication component 504 can block the bind component 104 of
The authentication component 504 can configure to determine if at least one error occurs in relation to the search component 502. For instance, signal can transfer to the search component 402 that a search component is to examine a query. However, runtime has not commenced and a class the query is to run on has not yet been constructed. Therefore, the authentication component 502 can send notification through the transmission component 502 that an error has taken place (e.g., an improper operation.) Moreover, the authentication component 504 can include capabilities that allows for error identification and/or correction (e.g., finding a source of an error, repairing a module in error, etc.) The authentication component 504 determines if operation of the bind component 104 of
Storage 506 can be used to assist modules in a system with the search component 402 as well as the search component 402. Various components can create and access records of the storage 506. For instance, logic used by the authentication component 504 to determine if a user has authorization to write code to gain password information can be held in storage 506. Furthermore, storage 506 can have various types of security protection (e.g., a list of authorized components.) Storage 506 retains at least one record that relates to operation of the bind component 104 of
An artificial intelligence component 508 makes at least one inference or at least one determination or at least one of each in relation to creation of a link between a control and information. Various scenarios can occur that are processed by the artificial intelligence component 508. For example, there can be multiple indexes accessible to a bind component 104 of
The artificial intelligence component 508 can employ one of numerous methodologies for learning from data and then drawing inferences and/or making determinations related to automatic bind creation at runtime (e.g., Hidden Markov Models (HMMs) and related prototypical dependency models, more general probabilistic graphical models, such as Bayesian networks, e.g., created by structure search using a Bayesian model score or approximation, linear classifiers, such as support vector machines (SVMs), non-linear classifiers, such as methods referred to as “neural network” methodologies, fuzzy logic methodologies, and other approaches that perform data fusion, etc.) in accordance with implementing various automated aspects described herein. Methods also include methods for the capture of logical relationships such as theorem provers or more heuristic rule-based expert systems.
A query component 510 determines available queries in a context and performs a requested query. For instance, computer code generated by a user at design time can provide a particular context where information is located. An example context runs a customer query, an order query, and a product query. A property component 512 locates properties that result form a query. A property can be an individual piece of information (e.g., in a table ‘customer’ returned by a ‘customer’ query, a property is an entry ‘John_Q’.) An index component 514 processes results from the query and selects what data should be populated into the binding source index 410 by the add component 408. A form component 516 locates controls that are to be expected to integrate with an autobinding; commonly, the controls are on a form. Information obtained by the query component 510, property component 512, index component 514, and/or form component 516 can transfer to the communication component 102 of
Control 602 can have a binding 606 with an online application 608. Information from the online application 608 can change and the control 602 can reflect an appropriate change. Control 604 links through a binding 610 to an internal application 612. At runtime of application 608 and/or 612, bindings can be created; thus, bindings do not have to occur in the same display component 202/form at one time (e.g., a first binding can be created prior to creation of a second binding.) In the configuration 600, the bind component 104 creates at least two links, wherein at least one link integrates with a first application (e.g., online application 608) and at least one link integrates with a second application (e.g., internal application 612.)
In an example implementation, a company can allow orders for products to be placed according to two different manners. An online webpage runs an application that allows users to place orders. In addition, purchasers can call into a telephone center and a receptionist at a computer terminal enters orders into a database. A single display can present linked information through binding data from different sources (e.g., an online source and internal source.)
The aggregation component 702 can combine information from at least two different information sources 706 and 708. The sources 706 and 708 can be different applications or different portions of a single application. The aggregation component 702 combines information from the two sources and creates a common piece of information 704 that can obtain a binding 106 through the bind component 104. The aggregation component 702 can operate according to a number of different configurations. For instance, the aggregation component 702 can add data together from different sources, streamline data from different sources (e.g., remove redundant entries.), etc. The aggregation component 702 builds information 704 based on material from at least two sources 706 and 708, where the information 704 is provided to the bind component 104 for linkage (e.g., performed through the communication component 102.)
For example, a company can run an online store and a mail order store that sell the same products. A user ‘John_Q’ can purchase two items online and three items through mail order. A developer can have a desire to have a control reflect the total amount of items purchased by ‘John_Q’; however, there is not one source that provides that information. The aggregation component 702 can receive a notice from the communication component 102 that this is what is desired from the developer. The aggregation component 702 reads the item amounts from the sources 706 and 708 and combines them into one piece of information 704. Therefore, an automatic binding can be created at runtime according to desires of a developer.
There is indexing at least one query, at least one property, or at least one of each 1004. Indexing allows data to be organized and to be gathered efficiently (e.g., quickly and with a relatively small chance for error.) Indexing commonly includes placing the information in a set storage location that can be accessed by various units operating at least portions of the methodology 1000.
Analyzing at least one control on a form 1006 occurs. Analysis can include a number of different examinations. One common examination is determining if a control is capable of receiving a proper bind. For example, a control can have a relatively small display area while information that is intended to be bound is relatively large. Since this control could a poor choice for binding with intended information, this can be beneficial information. According to one embodiment, analyzing a control on a form is locating the control. Other actions that are non-exhaustive examples of analysis are determining if a control is already bound, investigating a form to determine what controls are on the form, performing a virus check on a control, etc.
Event 1008 is determining a control type. A control can take different configurations and engage in different types. The control can be hard coded (e.g., the control is not able to change) or loose (e.g., the methodology 1000 can select a rule for a control and provide a control with a type for a binding.) Example control types are listbox (e.g., single entity), combobox (e.g., multiple entries), checkbox (e.g., flag that something is true with Boolean operator), textbox (e.g., display text that something is false), etc.
There is matching a least one control with at least one property 1010. Matching a control with a property creates a binding between them and this can take place automatically at runtime. Matching can include various verification actions. For instance, a control can already have a binding (e.g., be configured to display another property of another application.) Event 1010 can make this determination and match the property with another control. Moreover, multiple properties can match to one control (e.g., use of a combobox) as well as multiple controls matching to one property (e.g., two controls display the same information.)
Act 1012 is integrating the control with a graphical user interface (GUI.) A GUI allows a user to interact with a control and the control can be matched with at least one property. For example, the control can bind with several different properties through execution of a combobox. An example integration allows an arrow to be placed on the control that allows a user to scroll through different properties by engaging the arrow. Presenting the graphical user interface 1014 occurs which allows a user to view the GUI and to engage the GUI.
A check 1104 takes place if a master-detail configuration is appropriate. If a master-detail configuration is appropriate, then there is enabling a master-detail implementation 1106. A master-detail implementation allows for further binding to show relationships between different properties in a model. In an example master-detail implementation, a form holding a control displays that a table ‘people’ exists, but there is also a desire to match ‘friends’ automatically that relate to the ‘people’. ‘People’ can be the master record while ‘friends’ are considered detail. If a master-detail implementation is not appropriate, then there is enabling of a default implementation 1108. Various default implementations (e.g., parent-child implementation, etc.) are available to be used in creating a binding automatically at runtime.
Analyzing at least one control on a form 1110 occurs. Analysis can include a number of different examinations. One common examination is determining if a control is capable of receiving a proper bind. For example, a control can have a relatively small display area while information that is intended to be bound is relatively large. Since this control could a poor choice for binding with intended information, this can be beneficial information. According to one embodiment, analyzing a control on a form is locating the control. Other actions that are non-exhaustive examples of analysis are determining if a control is already bound, investigating a form to determine what controls are on the form, performing a virus check on a control, etc.
There is matching a least one control with at least one property 1112. Matching a control with a property creates a binding between them and this can take place automatically at runtime. Matching can include various verification actions. For instance, a control can already have a binding (e.g., be configured to display another property of another application.) Event 1112 can make this determination and match the property with another control. Moreover, multiple properties can match to one control (e.g., use of a combobox) as well as multiple controls matching to one property (e.g., two controls display the same information.)
Act 1114 is integrating the control with a graphical user interface (GUI.) A GUI allows a user to interact with a control and the control can be matched with at least one property. For example, the control can bind with several different properties through execution of a combobox. An example integration allows an arrow to be placed on the control that allows a user to scroll through different properties by engaging the arrow. Presenting the graphical user interface can also occur.
There is creating a record related to matching at least one control with at least one property 1116. Records of matches can be beneficial to further operations of the methodology 1100. For instance, if a particular control has difficulties accepting a match, then in other engagements of the methodology 1100, a larger amount of resources can be dedicated to binding. Moreover, since matches derive from computer code written by a user, an inference can be made (e.g., though artificial intelligence) that a programmer prefers certain binding types. A record of preferred binding types can be saved in a profile and user in later instances of the methodology 1100.
Estimating likelihood of at least one control type being proper 1204 occurs. While code written by a developer is intended to be less error prone (e.g., writing two lines of code as opposed to conventionally writing twenty lines of code), there is still a possibility of an error occurring. For instance, a user can write code that multiple properties link with a listbox. This can cause an error in some systems that operate the methodology 1200. It is possible that event 1204 integrate with a cancellation ability where is a likelihood is too low, then matching is cancelled 1206.
Action 1208 is analyzing at least on control on a form. Analysis can include a number of different examinations. One common examination is determining if a control is capable of receiving a proper bind. For example, a control can have a relatively small display area while information that is intended to be bound is relatively large. Since this control could a poor choice for binding with intended information, this can be beneficial information. According to one embodiment, analyzing a control on a form is locating the control. Other actions that are non-exhaustive examples of analysis are determining if a control is already bound, investigating a form to determine what controls are on the form, performing a virus check on a control, etc.
A check can take place to determine if a control type is available 1210. For instance, a developer can make a request in code that checkbox be used as a control. However, a system operating the methodology 1200 could not have a checkbox control in a repertoire. Therefore, if the control type is not available, the matching is canceled 1206. However, other possibilities are can be implemented, such as accessing a modification list that can attempt to solve the error (e.g., converting the checkbox selected to a textbox automatically.)
There is matching at least one control with at least one property 1212. Matching a control with a property creates a binding between them and this can take place automatically at runtime. Matching can include various verification actions. For instance, a control can already have a binding (e.g., be configured to display another property of another application.) Event 1212 can make this determination and match the property with another control. Moreover, multiple properties can match to one control (e.g., use of a combobox) as well as multiple controls matching to one property (e.g., two controls display the same information.)
A check occurs to determine if a match is acceptable 1214. A match can take place that contains an error. For instance, a control can contain a character limit display (e.g., display limited to eight characters) that does not disclose a person's name as requested (e.g., Larry_Thomas.) If a match is not acceptable, then the methodology 1200 can return to action 1212 and another matching can be attempted. A device operating the methodology 1200 can learn from an unacceptable match and make modification in future engagements (e.g., active learning through artificial intelligence.) Event 1216 is transferring a message that the match is complete and/or acceptable. Various units can desire to know that a link is successfully completed. For instance, a display can wait until a binding is complete before presenting a form.
In order to provide a context for the various aspects of the disclosed subject matter,
Referring now to
The system 1300 also includes one or more server(s) 1304. The server(s) 1304 can also be hardware and/or software (e.g., threads, processes, computing devices). The servers 1304 can house threads to perform transformations by employing the specification, for example. One possible communication between a client 1302 and a server 1304 can be in the form of a data packet adapted to be transmitted between two or more computer processes. The data packet may include a cookie and/or associated contextual information, for example. The system 1300 includes a communication framework 1306 (e.g., a global communication network such as the Internet) that can be employed to facilitate communications between the client(s) 1302 and the server(s) 1304.
Communications can be facilitated via a wired (including optical fiber) and/or wireless technology. The client(s) 1302 are operatively connected to one or more client data store(s) 1308 that can be employed to store information local to the client(s) 1302 (e.g., cookie(s) and/or associated contextual information). Similarly, the server(s) 1304 are operatively connected to one or more server data store(s) 1310 that can be employed to store information local to the servers 1304.
Referring now to
Generally, program modules include routines, programs, components, data structures, etc., that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the inventive methods can be practiced with other computer system configurations, including single-processor or multiprocessor computer systems, minicomputers, mainframe computers, as well as personal computers, hand-held computing devices, microprocessor-based or programmable consumer electronics, and the like, each of which can be operatively coupled to one or more associated devices.
The illustrated aspects of the specification may also be practiced in distributed computing environments where certain tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules can be located in both local and remote memory storage devices.
A computer typically includes a variety of computer-readable media. Computer-readable media can be any available media that can be accessed by the computer and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer-readable media can comprise computer storage media and communication media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the computer.
Communication media typically embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism, and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer-readable media.
With reference again to
The system bus 1408 can be any of several types of bus structure that may further interconnect to a memory bus (with or without a memory controller), a peripheral bus, and a local bus using any of a variety of commercially available bus architectures. The system memory 1406 includes read-only memory (ROM) 1410 and random access memory (RAM) 1412. A basic input/output system (BIOS) is stored in a non-volatile memory 1410 such as ROM, EPROM, EEPROM, which BIOS contains the basic routines that help to transfer information between elements within the computer 1402, such as during start-up. The RAM 1412 can also include a high-speed RAM such as static RAM for caching data.
The computer 1402 further includes an internal hard disk drive (HDD) 1414 (e.g., EIDE, SATA), which internal hard disk drive 1414 may also be configured for external use in a suitable chassis (not shown), a magnetic floppy disk drive (FDD) 1416, (e.g., to read from or write to a removable diskette 1418) and an optical disk drive 1420, (e.g., reading a CD-ROM disk 1422 or, to read from or write to other high capacity optical media such as the DVD). The hard disk drive 1414, magnetic disk drive 1416 and optical disk drive 1420 can be connected to the system bus 1408 by a hard disk drive interface 1424, a magnetic disk drive interface 1426 and an optical drive interface 1428, respectively. The interface 1424 for external drive implementations includes at least one or both of Universal Serial Bus (USB) and IEEE 1394 interface technologies. Other external drive connection technologies are within contemplation of the subject specification.
The drives and their associated computer-readable media provide nonvolatile storage of data, data structures, computer-executable instructions, and so forth. For the computer 1402, the drives and media accommodate the storage of any data in a suitable digital format. Although the description of computer-readable media above refers to a HDD, a removable magnetic diskette, and a removable optical media such as a CD or DVD, it should be appreciated by those skilled in the art that other types of media which are readable by a computer, such as zip drives, magnetic cassettes, flash memory cards, cartridges, and the like, may also be used in the example operating environment, and further, that any such media may contain computer-executable instructions for performing the methods of the specification.
A number of program modules can be stored in the drives and RAM 1412, including an operating system 1430, one or more application programs 1432, other program modules 1434 and program data 1436. All or portions of the operating system, applications, modules, and/or data can also be cached in the RAM 1412. It is appreciated that the specification can be implemented with various commercially available operating systems or combinations of operating systems.
A user can enter commands and information into the computer 1402 through one or more wired/wireless input devices, e.g., a keyboard 1438 and a pointing device, such as a mouse 1440. Other input devices (not shown) may include a microphone, an IR remote control, a joystick, a game pad, a stylus pen, touch screen, or the like. These and other input devices are often connected to the processing unit 1404 through an input device interface 1442 that is coupled to the system bus 1408, but can be connected by other interfaces, such as a parallel port, an IEEE 1394 serial port, a game port, a USB port, an IR interface, etc.
A monitor 1444 or other type of display device is also connected to the system bus 1408 via an interface, such as a video adapter 1446. In addition to the monitor 1444, a computer typically includes other peripheral output devices (not shown), such as speakers, printers, etc.
The computer 1402 may operate in a networked environment using logical connections via wired and/or wireless communications to one or more remote computers, such as a remote computer(s) 1448. The remote computer(s) 1448 can be a workstation, a server computer, a router, a personal computer, portable computer, microprocessor-based entertainment appliance, a peer device or other common network node, and typically includes many or all of the elements described relative to the computer 1402, although, for purposes of brevity, only a memory/storage device 1450 is illustrated. The logical connections depicted include wired/wireless connectivity to a local area network (LAN) 1452 and/or larger networks, e.g., a wide area network (WAN) 1454. Such LAN and WAN networking environments are commonplace in offices and companies, and facilitate enterprise-wide computer networks, such as intranets, all of which may connect to a global communications network, e.g., the Internet.
When used in a LAN networking environment, the computer 1402 is connected to the local network 1452 through a wired and/or wireless communication network interface or adapter 1456. The adapter 1456 may facilitate wired or wireless communication to the LAN 1452, which may also include a wireless access point disposed thereon for communicating with the wireless adapter 1456.
When used in a WAN networking environment, the computer 1402 can include a modem 1458, or is connected to a communications server on the WAN 1454, or has other means for establishing communications over the WAN 1454, such as by way of the Internet. The modem 1458, which can be internal or external and a wired or wireless device, is connected to the system bus 1408 via the serial port interface 1442. In a networked environment, program modules depicted relative to the computer 1402, or portions thereof, can be stored in the remote memory/storage device 1450. It will be appreciated that the network connections shown are example and other means of establishing a communications link between the computers can be used.
The computer 1402 is operable to communicate with any wireless devices or entities operatively disposed in wireless communication, e.g., a printer, scanner, desktop and/or portable computer, portable data assistant, communications satellite, any piece of equipment or location associated with a wirelessly detectable tag (e.g., a kiosk, news stand, restroom), and telephone. This includes at least Wi-Fi and Bluetooth™ wireless technologies. Thus, the communication can be a predefined structure as with a conventional network or simply an ad hoc communication between at least two devices.
Wi-Fi, or Wireless Fidelity, allows connection to the Internet from a couch at home, a bed in a hotel room, or a conference room at work, without wires. Wi-Fi is a wireless technology similar to that used in a cell phone that enables such devices, e.g., computers, to send and receive data indoors and out; anywhere within the range of a base station. Wi-Fi networks use radio technologies called IEEE 802.11(a, b, g, etc.) to provide secure, reliable, fast wireless connectivity. A Wi-Fi network can be used to connect computers to each other, to the Internet, and to wired networks (which use IEEE 802.3 or Ethernet). Wi-Fi networks operate in the unlicensed 2.4 and 5 GHz radio bands, at an 11 Mbps (802.11a) or 54 Mbps (802.11b) data rate, for example, or with products that contain both bands (dual band), so the networks can provide real-world performance similar to the basic 10 BaseT wired Ethernet networks used in many offices.
What has been described above includes examples of the subject specification. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the subject specification, but one of ordinary skill in the art may recognize that many further combinations and permutations of the subject specification are possible. Accordingly, the subject specification is intended to embrace all such alterations, modifications and variations that fall within the spirit and scope of the appended claims. Furthermore, to the extent that the term “includes” is used in either the detailed description or the claims, such term is intended to be inclusive in a manner similar to the term “comprising” as “comprising” is interpreted when employed as a transitional word in a claim.
This application claims priority to U.S. Provisional Application Ser. No. 60/913,183 entitled “AUTOMATIC DATABINDING BINDING OF DYNAMICALLY/RUNTIME GENERATED TYPES TO FORMS” filed on Apr. 20, 2007. The entirety of which is incorporated by reference herein. This application also claims priority to U.S. Provisional Application Ser. No. 60/913,180 entitled “GENERATION OF RUNTIME TYPES AND EXTENSIBILITY OF NAME GENERATION” filed on Apr. 20, 2007. The entirety of which is incorporated by reference herein. This application additionally claims priority to U.S. Provisional Application Ser. No. 60/913,186 entitled “TRANSLATING LATE BOUND LINQ EXPRESSIONS INTO DATABASE QUERIES” filed on Apr. 20, 2007. The entirety of which is incorporated by reference herein.
Number | Date | Country | |
---|---|---|---|
60913180 | Apr 2007 | US | |
60913183 | Apr 2007 | US | |
60913186 | Apr 2007 | US |