Application of SOA in Content Management Systems (CMS)
By Shahab Ahmed, Nirav Shah, Melanie Mataac, Bo Liu
Abstract:
There exists a large genre of Content Management System in the domain of finance, insurance, and retail industries. In real world systems, data frequently comes from various sources including relational databases, custom data access layers and XML. Most of the existing Content Management Systems are limited by incompatible data formats and standards, resulting into systems which are not interoperable, tightly coupled and non-adaptable to changes.
Hence, there is a need to develop Content Management Systems based on an architecture that provides quality attributes like interoperability, agility, extensibility and reusability. This is where Service Oriented Architecture (SOA) comes in the picture. In this paper, we will look at various models and tools such as Hibernate (Java), Nhibernate (.NET), and Service Data Objects (SDO) that can help CMS developers design more flexible and adaptable frameworks.
Services based Content Management System provides better interoperability and flexibility in design. Modularity in design is one of the core benefits provided by SOA as the components are loosely coupled. SOA based CMS can better adapt to changes in the business requirements. Thus, this enables developers to address the changing needs of continuously evolving business environment. SOA enables CMS systems to modify and extend their functionality with the Software Evolution. Additionally, SOA has benefits of agility.
Most of the IT managers and end users see SOA as a framework to address only large projects. They believe that SOA will only work in large organizations as to improve their efficiency and reduce hidden cost. In this paper, we will explore the possibilities of employing SOA in small to mid-size projects. We will consider the challenges faced in small scale implementations using SOA and see how a SOA implementation can benefit small projects.
It is becoming essential to select an architectural approach that would provide a comprehensible and efficient Content Management Systems. We eventually hope that SOA would become a popular approach for designing effective Content Management Systems.
Content Management Systems
Content Management Systems (CMS) are enterprise-level information systems that provide a wide array of information management capabilities to corporations throughout the world. They exist in many different industries including but not limited to healthcare, real estate, retail, finance and education. These systems provide valuable content management services to corporations, their partners, clients and vendors. These systems bring together information that would otherwise be scatter over many different sub-systems throughout an organization. Typical content management services include capabilities such as content creation and manipulation management, user profile management, and integration of existing services into a central document. Since CMS provides a wide array of services to different clients, vendors, and partners within a corporation, it must use a distributed architecture to ensure interoperability and extensibility of the system.
A main goal of CMSs is to enable clients to easily access information that concerns their specific job function. So CMSs not only provide information services, but they also organize information services. In the case of a Stock Brokerage CMS, a client using CMS can not only view is portfolio, his account balance, etc, but he can also view valuable information relating to his performance goals. In this case, a CMS will not only provide portfolio management services to a client, but it will also integrate, for example, their party applications that provide information services relating to investment management.
Most often, the information that organizations display on their Content Management Systems come from 3rd party sources. Therefore, a CMS should have the capability of handling heterogeneous data sources. A company’s systems should be able to handle compatibility issues between their sources’ data format and the format of their own data sources. This refers to a system’s interoperability attribute. The system should be able to plug into a wide array of data sources and retrieve information. If a CMS has to be regularly modified to enable different data sources, expenses to maintain the system could become huge and therefore take away a good portion from potential profits to the business. It is also beneficial if an organization’s CMS can easily adapt to different kind of data sources. CMSs typically address this issue by placing a data accessor layer between the business entities and the data sources.
Another desirable attribute that a CMS could have is its reusability. If the implementations used from past projects can be used to develop new ones, then development time could be shorter and less expensive. Known problems encountered from past implementations can be prevented. The generic architecture of a CMS is very similar from one industry to another. For example, most CMS are usually developed to support a distributed environment using services. Most CMS require the ability to access a heterogeneous set of data sources. So, by developing a skeleton of CMS systems that provide these shared capabilities allows the developers reuse the fundamental components.
Agility is also a desirable attribute for Content Management Systems. This refers to the speed at which the responses are made available for the modification requests made by clients. Using some of the Services Oriented Architecture (SOA) principles, CMS developers can substantially reduce the time it take to modify the CMS capabilities.
Service-Oriented Architecture
Service-Oriented Architecture (SOA) is an architectural approach for building systems where there are components that are service users and/or service providers. A service is a distributed component that is self-contained, has a published interface that abstracts the underlying logic, is location transparent (can be implemented in different languages or platforms and still interoperate) and is discoverable and dynamically bound [2]. Currently, the most common technology that utilizes the SOA approach is Web services. A Content Management System is an example of a system that uses web services architecture in deploying solutions. The use of SOA in the development of web services improves efficiency and reduces cost by using SOA guidelines such as modularity and interoperability of systems. Small and large organizations alike could benefit in the adoption of the SOA approach in the development and maintenance of their systems.
The Information Technology (IT) industry experienced substantial financial crises during the dot-com crash at the turn of the millennium. Because of this, they are now under pressure to keep the budget at a safe level to avoid becoming a casualty. This affects the decisions of IT managers in seeking a solution in the development and the maintenance efforts of their systems. When the budget is approaching the critical level, a lot of companies resort to outsourcing in the hopes that this would reduce the cost of maintaining their systems. While this may be true once the outsourcing plans are implemented, the problem of sustainability still exists. Costs are also growing fast in the countries that provide the services so in the long run, the costs of outsourcing will be the same as if having the services locally. In relation to SOA, the adoption of this approach requires restructuring of legacy systems. This step requires a good amount of time in re-designing and ensuring that the system functions the same way from a user’s perspective. Hence, this means that companies will have to pay several designers and developers to perform the tasks and therefore need a large budget for the project. Research shows that most Information Technology (IT) managers view SOA as a framework for large enterprises [1] because of the upfront costs that it requires. However, the benefits of modularity and interoperability that SOA presents will payoff in the long term as more projects reuse the design of previous systems. If the right services from outside sources are available and the integration of these services are manageable, then small and medium businesses will most likely have less hesitation in trying to adopt the SOA approach.
Tools and Models
There are several tools and models that can help design more flexible and adaptable CMS. The following are some of them: Hibernate (Java), NHibernate (.NET) and Service Data Objects (SDO). Hibernate’s goal is to relieve the developer from 95 percent of manual coding with SQL and the JDBC API. Hibernate Core for Java generates SQL for programmers, relieves one from manual JDBC result set handling and object conversion, and keeps application portable to all SQL databases. A Content Management System (CMS) supports the creation, management, distribution, publishing, and discovery of corporate information. It covers the complete lifecycle of the pages of a company website, from providing simple tools to create the content, publish, and finally to archive. It also provides the ability to manage the structure of the content, the appearance of the published pages, and the navigation provided to the users. All these operations are firmly associated with the database and SQL is the most widely used business database management language. A programmer should manually handle JDBC result set and object conversion and keep application portable to all SQL databases. These workloads are enormous without Hibernate. Hibernate can map entities and particular properties to SQL expressions, optimize object loading with various fetching and caching options, adapts to any environments and development process [5]. Thus, Hibernate can reduce most of the manual coding involved in database-related tasks and hence make content management much easier.
NHibernate is a port of Hibernate Core for Java to the .NET Framework. It handles persisting plain .NET objects to and from an underlying relational database. Originally being a port of Hibernate 2.1, the NHibernate API is very similar to that of Hibernate. All Hibernate knowledge and existing Hibernate documentation is therefore directly applicable to NHibernate [5]. In creating a CMS, one needs to generate objects, classes, programming models, and metadata in order to manage the contents structurally. NHibernate supports natural object-oriented idiom, uses .Net conversations and idioms, supports a rich variety of mappings for collections and dependent objects, provides ways to get objects into and out of the database, to customize SQL, to save time in processing byte code and to support object models. NHibernate also generates the SQL tables and columns thus, bringing convenience and relief to programmers from heavy manually coding workload [5]. For example, given an XML description of your entities and relationships, NHibernate automatically generates SQL for loading and storing the objects. Optionally, you can describe your mapping metadata with attributes in your source code. It supports transparent persistence so object classes do not have to follow a restrictive programming model. Persistent classes do not need to implement any interface or inherit from a special base class. This makes it possible to design the business logic using plain .NET (CLR) objects and object-oriented idiom.
Service Data Objects or Web Data Objects, as originally known, is a programming model that is unified and language independent. It can handle data from various sources as XML, relational, webservices, etc. Some of its characteristics include: a unified data access to heterogeneous data sources, a unified support for both static and dynamic data APIs, support for disconnected programming models and decouple application code from data access code [4]. Because Content Management Systems can benefit from using outside data sources, SDOs can help facilitate interoperability among its components.
Conclusion
Service Oriented Architecture is a very promising architectural approach. But because it is still in its early stage, it still has few issues that need resolution. They include security and privacy, performance and quality of service, data encryption and transformation, service registry and publication/discovery, and business process standardization and validation [1]. When these issues are resolved and as more tools and models are developed, the use of SOA will become a popular approach in creating comprehensible and efficient Content Management Systems. Both small and large enterprises will eventually realize the value of SOA in terms of developing and maintaining efficient and inexpensive Content Management Systems.
References
[1] Enrique Castro-Leon, Mark Chang, Jackson He, “Scaling Down SOA to Small Businesses”, Proceedings of the IEEE International Conference on Service-Oriented Computing and Applications (SOCA’07), 2007.
[2] Len Bass, Paulo Merson, Liam O’Brien, “Quality Attributes for Service-Oriented Architectures”, Proceedings of the International Workshop on Systems Development in SOA Environments (SDSOA’07), 2007.
[3] Norberto Fernandez-Garcia, Luis Sanchez-Fernandez, Jesus Villamor-Lugo, “Next Generation Web Technologies in Content Management”, Proceedings of the 13th International World Wide Web Conference on Alternate Track Papers & Posters, 2004.
[4] Raymond Feng, Luciano Resende, “Handling Heterogeneous Data Sources in SOA Environment with Service Data Objects (SDO)”, Proceedings of the 2007 ACM SIGMOD International Conference on Management of Data (SIGMOD’07), 2007.
[5] Hibernate
http://www.Hibernate.org