Showing posts with label Enterprise dot NET. Show all posts
Showing posts with label Enterprise dot NET. Show all posts

Loose coupling is a pattern that embraces a high degree of entity separation. It describes a resilient relationship between two or more objects or systems where information can be exchanged or invoked with minimal dependency on one another. The term dependency can be used to describe a number of different aspects of reliance between two things, some of which may be more valid than others. In the case of enterprise development, a dependency is typically used to describe a runtime need for one class by another. The goal of loose coupling is to minimize these runtime links.

When it comes to enterprise development, loose coupling may be one of the strangest shifts you ’ ll make when coding. Up until now you ’ ve likely been quite comfortable with a very traditional flavor of object - oriented programming. You define classes that perform various tasks, and provision them with attributes accordingly. The class might need some form of initialization so that you code a constructor that creates new objects, connects to different services, and populates properties accordingly. This approach is fine for small systems, but it ’ s far from ideal for a large system that interacts with multiple services and consumers. The problem with this approach is that it prevents the creation of autonomous units. Recall that a unit of code is a class or entity designed to perform a single task. If a unit of code requires the consuming of services from other parts of the system, these services should be passed into the unit abstractly. It should never be the job of a unit to create the dependencies it needs.

Right about now you ’ re likely sporting a tightly furrowed brow and a nasty, doubting scowl on your face. Object - oriented design has embraced the heavy constructor model for years. Some of the best books on C++ and C# list countless examples of classes that instantiate their own object instances. After all, isn ’ t that a facet of well - encapsulated design? The answer of course is yes. All of the tenets of OO design still stand firm. Encapsulation and abstraction are still driving factors of your code design. Loose coupling does not aim to bend the time - honored rules of OO design; rather, it serves to embrace them at a new level. It combines OO methodologies and patterns with a much stronger degree of modularity. This approach not only yields much more reusability but also enables the designer to achieve perhaps the most important theme of enterprise programming: testability. To better grasp this concept let ’ s dig into a little bit of code. Think back to the list of discounted auto parts. To simplify the example, we ’ ll just assume that your job is to build a console application that uses a single database connection and a hard coded list of discounts based on geographic region in which a customer resides. We could take the quick - and - dirty approach and just throw all of the code together the non - enterprise way. By that we mean one big block of non modularized code. The code block would likely be placed with a Console application ’ s Main method. It would create all of the requisite ADOET.NET objects needed to extract data from a customer database and then loop through each data row. With each row iteration, the data would be pieced together starting with last name, first name, middle name, and then email address, ending finally with a price calculated on that row ’ s value for the customer ’ s region.


Source of Information : Wrox Professional Enterprise dot NET

A New Way to Look At Code - Modularity

The notion of code separation is one of the single most important facets of enterprise development. Traditional Microsoft developers have at their fingertips a wide array of powerful RAD tools that empower them to quickly automate macros and execute applications. Unfortunately, these tools don ’ t enforce a strong degree of modularity. Although the code produces a desired result, the result is limited and not entirely reusable. Well - designed code must be broken down and divided into separate “ vehicles of purpose. ” In the enterprise world, these are known as units of codes. Units of code are typically classes or types designed with a specific purpose in mind. The purpose should be well focused, striving to achieve the single desired goal for which the type was initially designed. As various units of code are developed, they can be designed to interact with one another in a manner that achieves a larger desired effect without violating the rules that drive their division.

We know this sounds pretty confusing at first, but take heart — most seasoned Microsoft developers still have a tough time thinking in terms of true separation. When it comes to developing business applications the vast majority of us are wired to think of the desired outcome and then work backward. Think about most of the business requirements for which you ’ ve developed code. A manager or project leader gives you the task of building a thing that does X. You then work backward from X, constructing the code line by line in your mind until you have a rough roadmap for a prototype. You then translate this roadmap into whatever code gets the desired outcome the quickest in order to produce the results for the tasking manager. Yet this process skips the critical step of assessing code design before you write the code. The result is a pile of spaghetti code that isn ’ t reusable and, moreover, isn ’ t testable.

In cases such as these, it is critical for the developer to assess the design early, and understand the individual elements that will be needed to make the system function. Consider a requirement where you are tasked with creating a small client application that creates automated email newsletters advertising discounted auto parts. You ’ re given a list of discounting rules based on the location where a user lives, and a small desktop database containing the list of automotive parts and their prices. Another database
is given to you containing a list of user emails and the geographic location from which each user hails. Finally, you ’ re provided with a brief list of preferred styles for HTML - compliant email clients. Generally speaking, an application like this is a no brainer. Most developers experienced with Microsoft Office automation or simple ET.NET forms programming could create a console application that gets the job done in a handful of function calls. Yet the resulting code is unorganized. It combines UI styles, database calls, and business rules into one convoluted stack of code.

Most developers have experimented with some modularity in the past. You might have moved recursive calls into a separate function, maybe created a class or two for accessing data, or perhaps you ’ ve dabbled with some object - oriented design patterns, like a Factory model or Decorator pattern. Wouldn ’ t these deliver an acceptable amount of modularity? Not necessarily. Patterns such as these do provide a useful means of separation; however, when developing enterprise systems modularity isn ’ t just about separation of your code for reusability. Enterprise development typically requires a strong degree of loose coupling.


Source of Information : Wrox Professional Enterprise dot NET

A New Way to Look At Code

Most people who begin learning enterprise development find that the best place to begin is the code. Readers should be familiar with a third generation object - oriented (OO) language to fully grasp some of the concepts discussed here.

Over the course of the next few hundred pages, you ’ ll become familiar with some pretty slick tools, some of which produce some pretty fancy behaviors. Yet these tools are each meant as a complement to a well - designed code base. Without good code design, these tools are rendered useless; many will fail to function at all. The reason for this failure is that a well – designed enterprise system should be constructed using code that adheres to one of the core values of enterprise design: separation of concerns. To achieve the correct degree of separation, developers should strive to write their code with a strong degree of modularity and loose coupling. At this point, readers should make sure that they have downloaded and installed the correct development. The preferred development tool of choice for Microsoft developers is Visual Studio.NET 2008 Professional Edition. VS.NET Pro installs with all of the project templates, including sample projects for ASP.NET, WPF (Windows Presentation Foundation), and WCF (Windows Communication Foundation) applications. Specifications and system requirements can be found at the following URL: http://msdn.microsoft.com/en-us/visualc/aa700831.aspx .

If you have VS.NET 2008 in an edition other than Professional, that may work too. Keep in mind. Therefore some of these suites might focus specifically on one area of development while excluding features for others. The latest version of VS.NET installs with Service Pack 1 (SP1). SP1 contains newer features and templates required to follow the samples in later chapters, such as project templates for ASP.NET MVC, and plug - in tools for Microsoft Entity Framework. If you have VS.NET 2008 Pro but do not have the latest service pack, you can download it from the following address: http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E & displaylang=en .

If you do not have a version of Visual Studio.NET 2008 Professional Edition and prefer a more cost -effective solution, feel free to download the Visual Studio.NET Express editions. At the time of this writing, VS.NET Express editions have many of the same features and templates as the full editions, and they are 100% free to developers. However readers should keep in mind that some nuances between the editions may make the samples more difficult to reproduce. While there are a few different versions of the Express editions, you will only need to download two of them: Visual C#.NET 2008 Express edition, and Visual Web Developer 2008 Express edition. You can find the software specifications and system requirements at the following address: http://www.microsoft.com/express/download/ .

Of course, if you are a diehard Settingscoding purist and despise using an interactive development environment (IDE) you can always download the .NET SDK by itself. The SDK comes with the same utilities and build tools used by the Visual Studio.NET IDE, but without the graphic user interface to launch them. Still, if command line calls and batch files are more your style, you can download the .NET SDK at the following URL: http://msdn.microsoft.com/en-us/windowsserver/bb986638.aspx .


Source of Information : Wrox Professional Enterprise dot NET

The .NET Revolution

In 2002, Microsoft officially released the .NET Framework version 1.0. .NET was a revolutionary departure from any development platform Microsoft had ever released. It came with a large set of precoded libraries that exposed or wrapped most of the core functionality within the Microsoft software development kit (SDK). It included a code management system known as the Common Language Runtime (CLR) that managed memory, loaded classes, and delivered just - in - time compilation to applications written in a .NET - enabled language. .NET languages run the gamut from script languages to older mainframe languages such as Cobol.net. However, the most popular are VB .NET, Microsoft ’ s next generation of the popular Visual Basic language, and C#, a C - based language created by Microsoft specifically for building .NET applications. Unlike the COM and ActiveX of old, .NET was designed from the ground up to be a comprehensive development and runtime environment. Its mature combination of APIs, development tools, and runtime services makes it a far better candidate for building enterprise applications. .NET mirrors other managed software platforms in terms of tools and services provided, and it is still considered by most to be Microsoft ’ s answer to the Java development platform. However, unlike Java, .NET didn ’ t have the impetus of academic and enterprise developers driving it. On the contrary, at the time of .NET ’ s release most Microsoft developers were RAD programmers or automation engineers. Thus, there wasn ’ t a whole lot of enterprise development happening in the world of Windows.

In time, that began to change. As the .NET Framework became more mature (and as Microsoft was beefing up its server architecture a bit) more and more people began to recognize some of its enterprise advantages. .NET languages, particularly C#, were well suited for complex patterns. Language constructs such as delegates and events, properties, and indexers, made C# a suitable candidate for writing consumable, decoupled APIs. Microsoft has also taken a more accepting position to the world of open source. Upon initial release of the framework, Microsoft published the Common Language Infrastructure (CLI) and submitted it, along with specifications for the C# language and C++/CLI language, to both ECMA and ISO, making them accessible as open standards. Microsoft at first held tight to its patents on its core technologies such as its user interface API (Windows Forms) and their data access API (ADO.NET). However, in October of 2007, Microsoft announced that it would release much of the source code for the .NET base class libraries under the shared source Microsoft Reference License. This code was released in the next version of their popular interactive development environment, Visual Studio.NET 2008 edition. These steps helped to make .NET more attractive to a broader set of software engineers.

Over the last few years a number of .NET open source communities have emerged, driving new projects and embracing enterprise patterns as a means of more complicated system development. The Mono project, an initiative to create a suite of .NET tools and services targeting multiple operating systems, was established in July of 2001 and uses the public CLI specifications within its software. SourceForge.NET, an open source community code repository, has a growing number of .NET projects. Many of the popular Java open source projects, such as LogForJ and Hibernate, have .NET sister projects that started in SourceForge.NET. SourceForge.net is a terrific resource for finding and exploring open source projects from all areas of the software development industry. It also includes community forums, information for system administrators, and a marketplace for buying and selling projects. Perhaps most notable among the open source communities is Codeplex.com. Codeplex is Microsoft ’ s open source project hosting site. Launched in June of 2006 and powered by Microsoft ’ s Team Foundation Server, Codeplex had accumulated over 3500 public .NET projects by early 2008. It remains one of the primary avenues of code patterns used by Microsoft today.

Source of Information : Wrox Professional Enterprise dot NET

The Shift to Java

Java, a (mostly) operating system - independent development platform, was released by Sun Microsystems in 1995 and gained popularity as a powerful alternative to otherwise limited Windows - based development. Long before .NET was released, Java developers enjoyed the use of well – designed APIs, automatic memory management, and just - in - time compilation. The Java community experienced a ground swell of low - level language programmers interested in porting their skills to more business – friendly development platforms. A large number of C and C++ developers were drawn to Java as a comfortable flavor of a C - style language that included some tenets of RAD without compromising some of the more academic portions of software engineering. As a platform, Java has also always been very community - oriented. It was released as free software under the GNU General Public Agreement and made freely available via downloading to programmers on different platforms. Other Java compilers have been released under the same set of public agreements, and although Sun never formalized Java with the ISO/IEC JTC1 standards body or the ECMA International, it quickly became the de facto standard for enterprise object - oriented systems. In late 2006, Sun released most of the Java SDK as free and open source software under the GNU General Public License.

As a result, the Java community was a fertile ground for the next generation of enterprise architecture. Large, multifaceted development patterns began to grow, weaving their way into medium – sized organizations at first and into vastly larger ones as time went on. The Java 2 Enterprise Edition (J2EE) provided distinct multi - tiered patterns, such as Servlets and Java Server Pages (JSP) for Web and n – tiered systems. Message Oriented Middleware (MOM) patterns began to form, evolving into Java Message Service (JMS) and facilitating asynchronous communication between disparate servers. Front – end orchestration patterns such as Struts paved the way for better decoupling of front - end interfaces from the code that handles data and application state. To this day, an overwhelmingly large percentage of the open source community is firmly rooted in Java and J2EE, contributing to public software projects and providing a loud voice in the enterprise community.

Source of Information : Wrox Professional Enterprise dot NET

The COM Factor

Of course, Visual Basic alone wasn ’ t the only thing preventing enterprise patterns from making their way into Microsoft code. Some tend to think that Microsoft ’ s previous software development platform had much to do with this as well. Before we had the neat and clean world of .NET, most C and C++ programmers were forced to use its predecessor, the Component Object Model, or COM. COM is a Windows - specific technology that allowed for components from different applications to communicate and interoperate with one another. Specifically, it is an interface standard that facilitates inter – process communication and object creation within any application, service, or system that supports the technology. COM patterns drive most objects that were used in Visual Basic programming, many of which are still in use on the Windows operating system. However, many developers felt that implementing COM introduced complexity that wasn ’ t well suited to business applications. At the heart of every COM object lives a single common interface named IUnknown . This interface defines three key COM method definitions: AddRef , Release , and QueryInterface , each of which is used to manage objects in memory and communicate between objects.

As an object - oriented pattern, COM was well orchestrated and seemed to deliver on some of the goals that drive enterprise development. However, not everyone embraced COM programming. Implementing IUnknown generally meant that you had to write your program in a lower - level programming language such as C or C++. Since most Microsoft developers preferred to develop with RAD tools and languages, direct COM usage was hard to come by. Instead, COM - powered technologies such as Object Linking and Embedding (OLE) and ActiveX were provided to RAD programmers as a means to leverage COM objects without all of the hassle of the IUnknown plumbing. Unfortunately, COM - powered technologies were much heavier than straight COM. They introduced overhead and had a tendency to run more slowly than systems that implanted COM directly. Additionally, integration with other platforms became mostly impossible. COM objects became synonymous with Microsoft objects. As a pattern it didn ’ t accommodate interoperability with non - Windows platforms. So, while COM was a fine pattern for designing enterprise architectures, it was only used as a means to define the Microsoft API itself. Precious few organizations employed the COM pattern directly within their own code.

Source of Information : Wrox Professional Enterprise dot NET

Enterprise development is not new. In fact, many of the core values that drive enterprise architecture have been around for quite a few years. The problem is, if you ’ re a Microsoft programmer, you probably haven ’ t encountered any of them. Most enterprise patterns come from the great wide open world of common developer contribution known by most of us as open source . As a result, most enterprise systems have been built with platform - independent technologies such as Java or even C++. That ’ s not to say that
Microsoft technologies have never been used to build big systems for large organizations. Remember, enterprise architecture does not necessarily mean “ made for big companies. ” We simply point out that the evolution of the patterns and methodologies driving the core values have depended on contributions from the developer community. Until recently Microsoft technologies were anything but open source. Since the open source community was the fecund environment from which modern enterprise concepts emerged, Microsoft software has played a relatively minor role in the evolution of enterprise architecture.

In the Microsoft world, a great deal of emphasis is placed on the ability to create applications quickly. Tools that provide quick automation and almost instant results can be found all over the Windows world. These tools generally fall within a category of software development known as rapid application development, or RAD. RAD - style programming isn ’ t necessarily meant to deliver production – worthy code. Rather, its primary goal is to enable developers and analysts to emulate the core behaviors of a system quickly, intentionally ignoring patterns and process for a quick bang factor. Unfortunately, a good deal of RAD development is downright counter to the core values of enterprise development.

RAD culture has worked its way strongly into the large developer base of Microsoft programmers. At the heart of this pervasive movement lies the simple, easy - to - use language Visual Basic. First given the moniker “ Project Thunder ” and released as VB 1.0 in mid - 1991, VB has since become the most popular programming language among Windows developers and one of the most widely used programming languages in the world. Its verbose, non - C - style syntax is easy for analysts and the less technically inclined to follow. The language itself has undergone a number of dramatic changes and enhancements over the years. However, until the language itself was retooled for the managed world and named VB.NET, its primary focus was to provide RAD tools for building powerful, production applications. At the height of its popularity, VB was most widely employed in one of two forms: Visual Basic 6.0, or Visual Basic for Applications (VBA). VB6 was its own development suite. It included tools for quickly creating object - structured applications using visual designers and wizard - like feature builders. VBA was, and still remains, the language of macros and automation within Microsoft Office applications. Between these two suites, new generations of coders were empowered. Forgoing a great deal of process and design, applications were churned out at alarming rates, with little planning and even less testing. Simple Word documents and Excel spreadsheets were fashioned with VB forms that provided a more flexible user experience than would otherwise have been achievable. Websites that once required complex Internet Server API (ISAPI) filters and direct Internet Information Server (IIS) extensions could now use VB6 ActiveX components, giving a website access to the entire Component Object Model (COM) library with very little development overhead. As usage increased, so did the power of VB. In time, Visual Basic eclipsed C++ as the Microsoft language of choice, yielding just about as much power as a complicated C module but without all of the messy planning beforehand.

Unfortunately, VB development led to some staggeringly bad applications. Once the emphasis was placed on delivery and away from design and process, a large number of companies found themselves stuck with unreliable, inflexible systems. They might have been delivered quickly, but the cost of maintenance over time became staggering. Note that we are not passing blanket judgment on the VB developer community. On the contrary, we too, found ourselves building systems in VB6 for quite a few years. We simply mean to demonstrate how this formidable trend in Microsoft development is one of the big reasons why enterprise design patterns still elude the common Microsoft programmer. The RAD culture that grew out of Visual Basic development polarized the pattern - minded from the results oriented, ultimately blocking the mainstream Windows developers from participating in the enterprise effort.

Source of Information : Wrox Professional Enterprise dot NET

Enterprise development is not new. In fact, many of the core values that drive enterprise architecture have been around for quite a few years. The problem is, if you ’ re a Microsoft programmer, you probably haven ’ t encountered any of them. Most enterprise patterns come from the great wide open world of common developer contribution known by most of us as open source . As a result, most enterprise systems have been built with platform - independent technologies such as Java or even C++. That ’ s not to say that
Microsoft technologies have never been used to build big systems for large organizations. Remember, enterprise architecture does not necessarily mean “ made for big companies. ” We simply point out that the evolution of the patterns and methodologies driving the core values have depended on contributions from the developer community. Until recently Microsoft technologies were anything but open source. Since the open source community was the fecund environment from which modern enterprise concepts emerged, Microsoft software has played a relatively minor role in the evolution of enterprise architecture.

In the Microsoft world, a great deal of emphasis is placed on the ability to create applications quickly. Tools that provide quick automation and almost instant results can be found all over the Windows world. These tools generally fall within a category of software development known as rapid application development, or RAD. RAD - style programming isn ’ t necessarily meant to deliver production – worthy code. Rather, its primary goal is to enable developers and analysts to emulate the core behaviors of a system quickly, intentionally ignoring patterns and process for a quick bang factor. Unfortunately, a good deal of RAD development is downright counter to the core values of enterprise development.

RAD culture has worked its way strongly into the large developer base of Microsoft programmers. At the heart of this pervasive movement lies the simple, easy - to - use language Visual Basic. First given the moniker “ Project Thunder ” and released as VB 1.0 in mid - 1991, VB has since become the most popular programming language among Windows developers and one of the most widely used programming languages in the world. Its verbose, non - C - style syntax is easy for analysts and the less technically inclined to follow. The language itself has undergone a number of dramatic changes and enhancements over the years. However, until the language itself was retooled for the managed world and named VB.NET, its primary focus was to provide RAD tools for building powerful, production applications. At the height of its popularity, VB was most widely employed in one of two forms: Visual Basic 6.0, or Visual Basic for Applications (VBA). VB6 was its own development suite. It included tools for quickly creating object - structured applications using visual designers and wizard - like feature builders. VBA was, and still remains, the language of macros and automation within Microsoft Office applications. Between these two suites, new generations of coders were empowered. Forgoing a great deal of process and design, applications were churned out at alarming rates, with little planning and even less testing. Simple Word documents and Excel spreadsheets were fashioned with VB forms that provided a more flexible user experience than would otherwise have been achievable. Websites that once required complex Internet Server API (ISAPI) filters and direct Internet Information Server (IIS) extensions could now use VB6 ActiveX components, giving a website access to the entire Component Object Model (COM) library with very little development overhead. As usage increased, so did the power of VB. In time, Visual Basic eclipsed C++ as the Microsoft language of choice, yielding just about as much power as a complicated C module but without all of the messy planning beforehand.

Unfortunately, VB development led to some staggeringly bad applications. Once the emphasis was placed on delivery and away from design and process, a large number of companies found themselves stuck with unreliable, inflexible systems. They might have been delivered quickly, but the cost of maintenance over time became staggering. Note that we are not passing blanket judgment on the VB developer community. On the contrary, we too, found ourselves building systems in VB6 for quite a few years. We simply mean to demonstrate how this formidable trend in Microsoft development is one of the big reasons why enterprise design patterns still elude the common Microsoft programmer. The RAD culture that grew out of Visual Basic development polarized the pattern - minded from the results oriented, ultimately blocking the mainstream Windows developers from participating in the enterprise effort.

Source of Information : Wrox Professional Enterprise dot NET

What Is Enterprise Development?

Enterprise development commonly refers to the patterns and practices adopted by programmers endeavoring to implement enterprise architecture. It is the employment of certain approaches and methodologies that aim to achieve many of the root goals inherent to a successful enterprise system. What these goals are specifically changes from organization to organization; however, at the root, they address five key areas of system development:
1. Reliability
2. Flexibility
3. Separation of concerns
4. Reusability
5. Maintainability

These base tenets are embraced by all developers of enterprise systems, and they help to define the core of what most modern developers consider to be well - designed software. Enterprise development embraces these ideals, weaving them subtly into the tools and processes that drive software logic.



Reliability
Most would agree that designing systems that are reliable is a must. Yet coding for reliability is a departure from business as usual. This is especially true in the rapid application development community. Many enterprise enthusiasts exchange the term reliability for testability, since most modern enterprise coding patterns aim to facilitate unit testing. Writing code that can be well tested means changing the way that a system ’ s functionality is modularized. It means flattening out otherwise bloated classes and removing dependencies, or rather, removing references to other code that prevent a class or module from being tested. Many of these design patterns are integral to a process known as Test Driven Development, or TDD.



Flexibility
Requirements can change. As a result, so must the software that supports them. If the code that you write prevents an application or system from being extensible or pliable, we would say it lacks flexibility. Many people mistake the need for flexibility for other popular engineering subjects, such as interoperability. However, enterprise flexibility addresses the ability of code to be broken down and shared by different systems applications. A program might be functional on different platforms, or contain logic for lots of different failure scenarios, but that wouldn ’ t mean it was flexible. A flexible system allows for the changing of core features without violating unrelated services or attributes.



Separation of Concerns
Separation of concerns is simply the process of breaking a system or application down into distinct functional layers with limited overlapping of functionality. Like flexibility, separation of concerns addresses the ability to modularize code and make it more pliable, with the added benefit of logical division. Much of this division can be achieved through well - known object - oriented tenets, such as modularization and encapsulation. As we explore new patterns of development, separation of concerns becomes an all - important piece of the enterprise puzzle.



Reusability
Sharing features and services is tantamount to good enterprise design. As code is broken down and separated into logical pieces, these pieces should be designed to provide a distinct feature or satisfy a particular requirement of other systems that invoke it. The scope of a class ’ s reusability depends on the context in which it is used; however, most agree that other modular pieces of code within a similar context should always be callable. In other words, classes at any one logical level should be reusable by other classes in the same logical level. Classes that provide data should be consumable by all other classes that demand data within scope. Classes that implement a user interface (UI) behavior should deliver the same behavior to all UI - implementing classes on the same UI tier. The notion of reusability is especially important when designing true enterprise architectures.



Maintainability
Maintainability refers to the capacity of a system to be altered or modified. Although most software engineers think they know what maintainability means, it actually has a distinct meaning in the world of software design. According to the international standard of software development defined in ISO 9126, the term maintainability actually means the ease with which a software product can be modified in order to support:
• Stability
• Analyzability
• Changeability
• Testability

Maintainable code should be the natural result of following these four tenets, provided that the designer has not introduced unnecessary levels of complexity.

For a great many software engineers this can be a dramatic shift in the way they program. It requires a rigid manner of programming, employing new concepts and demanding more upfront design than the typical developer usually executes. At close glance, one might think that simple, non – enterprise computer code that delivers a particular feature is identical in value to enterprise code that delivers precisely the same feature. Yet this shortsighted evaluation fails to address the greater needs of the system, namely core enterprise concepts. While the code may deliver similar results, the enterprise code takes strides to accommodate better design. So while the enterprise sample might look a bit more complex (only at first, mind you), the resulting class or module ultimately provides more reliability or is more maintainable.


Consider a simple example. Two developers are required to build a web page that displays dynamic feeds of financial data. These feeds can range from stock quotes to bond prices to billboard articles from popular financial journals. The non - enterprise developer might write an ASP.NET page with a set of data grids, each bound to different database calls and online web services. The bindings are created in the ASP.NET code - behind page directly, placing a good amount of data logic side by side with some of the user interface behaviors. The enterprise developer would take a slightly different tack. Using the Model - View - Presenter pattern widely embraced within the enterprise community, they define a class to garner and hold the data on its own. They then create another class to handle the user interface logic and events, defining both classes with an abstract interface that defines each of the classes ’ core methods. Finally, the developer writes a series of unit tests and mock classes to test the code and ensure that all portions function as intended.

The resulting software delivers precisely the same page and the same data, with much more orchestration and modularity. So the two efforts were a wash, right? Let ’ s take this model a step further. The sample page hits its mark. Management is happy and they request that the page be published on the company website. The website requires a level of account authorization in order to query data from other data sources, but neither developer is aware of this. The non - enterprise developer deploys the web page directly and takes a quick look at it using a browser running on his/her desktop. They are logged in as an administrator, so the web page loads just fine. Unfortunately when others try to view the page they get a horrible system error that crashes the entire web session. On the other hand the enterprise developer took time to write a unit test that impersonates an anonymously authenticated user in the data access class. They run the test as a part of the build process and the problem becomes immediately apparent. The enterprise code is more reliable than the non - enterprise code. What ’ s more, the composition of the web page code to support the unit tests allows for modularity and separation of concerns. So when management provides a new data service to use, the data layer can be altered with minimal impact on the user interface. The code is now more flexible, too. The added flexibility, along with the reliability and logical separation, makes the enterprise developer ’ s web page far more maintainable than the non - enterprise developer ’ s page.

An enterprise architecture can be difficult to build in its entirety. Typically speaking, an individual software engineer has limited say over how a business expends its resources. For most developers this is a game - changing approach to writing code. The vast majority of developers in the Microsoft world concentrate on developing software for a single system or application. This is completely understandable when you consider that an overwhelming number of career Microsoft developers began as business analysts or specialists who, thanks to the proliferation of rapid application development tools in the
Microsoft software space, took on coding as a means of automation. Yet despite the upfront convenience of rapid application development, the cost in the long run can be, and usually is, very high. Enterprise development aims to reduce these long - term costs with prudent designs, approaches, and testability.


Source of Information : Wrox Professional Enterprise dot NET

What Is Enterprise Architecture?

Enterprise architecture is typically used to describe an agency - wide or organization - wide framework for portraying and incorporating the business processes, information flows, systems, applications, data, and infrastructure to effectively and efficiently support the organization ’ s needs. At the heart of this definition lies a very broad context aimed at including many different portions of an organization ’ s participating branches, chief among them the business and information technology departments. We could wax intellectual all day long on the merits of these descriptions, but seeing as how this is a book for developers, let ’ s cut to the chase. What does enterprise architecture mean from a developer ’ s point of view? It means defining a process, framework, and set of patterns to design, develop, build, and maintain all of the software that an agency or company needs to operate. The operative phrase here is all of the software . It is a unified development platform for creating all elements of software at all levels of design. It includes reusable tools for building client applications, websites, databases, office applications, business automation tools, scripts, and just about anything else that a company may use to get things done. Enterprise architecture also endeavors to break down each of an application ’ s layers into modular pieces for reusability. These reusable elements can then be used to feed or drive other applications with similar needs. Here ’ s where the picture starts to get a bit fuzzy. Most developers take on projects with a finite set of business goals, goals that satisfy a specific need or company requirement. Within that scope, there is little consideration for modularity or reusability outside of the system that is being built. On the contrary, project goals rarely allot the time and resources needed to accommodate what is in essence the possibility of component reuse. Instead, typical projects focus development on the end goal only, marginalizing or downright ignoring the larger enterprise picture. Understanding enterprise development means first realizing that this kind of myopic, and often cavalier, development is ultimately counterproductive.

Enterprise architecture is also about defining a solid foundation of code and practices that eventually (and inevitably) facilitate interoperability in a heterogeneous software environment. This foundation provides both a toolset for creating software application, as well as a set of boundaries and rules within which those writings said applications need to work. The combination of both process and toolset is one of the key concepts to creating enterprise software. It expands on the otherwise traditional concepts of computer programming that concentrated on what one coded and mostly ignored how one coded. The incorporation of software development methodologies and lifecycle management becomes as important a part of building an application as the code itself.

Of course, chances are that if you ’ re reading this book, you ’ ve already come to know some sort of development methodology. From the iterative and flexible like Agile and Extreme Programming, to the evolving and maturing like Six Sigma and the Capability Maturity Model, software development methodologies have worked their way into mainstream software development. Still, methodologies alone do not define an enterprise architecture. Plenty of shops that build applications apply these methodologies rigidly, and many of them do not have enterprise software. An organization that embraces enterprise architecture endeavors to combine a broad - context framework with a development approach, ultimately yielding code that conforms to a level of quality and design that suits the organization ’ s core needs. Ideally, this approach can do wonders for a company, ensuring quality and uniformity throughout all tiers of design. Yet anyone who ’ s participated or contributed to more than one enterprise shop would agree that the ideal is difficult to attain. Business needs and company politics often work counter to the spirit of enterprise planning. They force stringent timelines and tight project budgets, and don ’ t easily allow for the sort of flexibility that a good enterprise architecture requires. The result is a hackneyed combination of some processes and standards that add little more than cumbersome meetings and a few tidy lifecycle diagrams that barely placate the folks in charge. Thus, a successful implementation of an enterprise system requires a comprehensive “ buy - in ” from both members of the business side and from the IT side.


Source of Information : Wrox Professional Enterprise dot NET


Subscribe to Developer Techno ?
Enter your email address:

Delivered by FeedBurner