Links

Naked Objects for .NET: az eredeti MVC ígéret valóra váltása

In Új kínálat/stratégia on 2011. október 10. hétfő by Nacsa Sándor Címkézve: , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Erről van szó képekben elbeszélve:

clip_image002

clip_image008

===================>>
(a teljes magyarázat a cikk végén)

A mai napon teljes mértékben nyílt forrásúvá tették az eddig védett, Naked Objects for .NET keretrendszert (ld. a sajtóközleményt az alábbi, értékelő felsorolás után). Ez több szempontból rendkívüli jelentőségű dolog:

  1. Az eredeti MVC elgondolásokat ez viszi végig a lehető legteljesebb mértékben. A csomag részeként megjelenik a Naked Objects MVC is, ami az ASP.NET MVC 3-at teljesíti ki Trygve Reenskaug eredeti, 1978-as elképzelései alapján.
  2. Óriási vállalati/intézményi alkalmazási tapasztalat van a keretrendszer mögött. A nyugdíjak és a munkakereső segélyek adminisztrációját támogató nagy írországi szervezet 30 központi alkalmazásának újraírását alapozta erre a keretrendszerre. Minden projekt időben és a tervezett költségvetésen belül készült el, miközben jelentős költségmegtakarítás történt. Öt évnyi alkalmazási tapasztalat és ezzel együttes, folyamatos keretrendszer tökéletesítés van ebben a csomagban. Az ír intézmény esetében kb. 500 entitásból álló, ún. enterprise domain model-ről volt szó egy évvel ezelőtt (mint ilyen irányú legfrissebb elérhető adat) és több, mint 1500 intézményi felhasználóról.
  3. A csomag nyílt forráskódúvá tételével ezt az óriási felhalmazott értéket most díjmentesen át tudják venni azok a hazai fejlesztő cégek, amelyek egyedi és átfogó, vállalati/intézményi alkalmazások kidolgozásával foglalkoznak, legyenek ezek az alkalmazások akár kicsik, vagy – másik végletként – akár a legnagyobbak. Ez különösen az állami, közigazgatási és önkormányzati informatika újraszervezésében hozhat – nyugodtan ki merem jelenteni – egyfajta megváltást. Minden csak a lehetőség felismerésén múlik.
  4. Végezetül azok, akik eddig objektum-orientált modellezéssel, agilis fejlesztéssel, annak legfejlettebnek tekinthető változatával, az ún. Domain-Driven Design-al (DDD) kezdtek el dolgozni, most mindezek legkorszerűbb keretrendszer támogatásához ingyen és bérmentve hozzájutnak.

A sajtóközlemény után linkgyüjteményt is közreadok, hogy mindenki könnyen, további információhoz tudjon hozzáférni.

Előrevetett megjegyzés: Akit érdekel ez a nyílt forrású release kéretik egy rövid értékelést adni a Naked Objects CodePlex Download/Review/Rating oldalon vagy a NuGet-en (http://www.nuget.org/List/Search?searchCategory=All+Categories&searchTerm=nakedobjects)! Köszönjük!

Naked Objects for .NET goes Open Source [Oct 10, 2011]

As of today, Naked Objects for .NET, previously available only as a proprietary product, is now fully open source under the Microsoft Public License (MS-PL). The source code is hosted on CodePlex, though for most people the most convenient way to install and use the framework will be via the NuGet Package Manager. The various ‘NakedObjects’ NuGet packages include a comprehensive sample application, as well as Code Snippets and Item Templates.

Naked Objects is a framework that supports the naked objects pattern for the .NET platform. It can take a domain object model, written as POCOs but following a few very simple conventions, and dynamically create one or more complete user interfaces for it without requiring a single line of user-interface code to be written. (This is achieved using ‘reflection’ – not by the more conventional approach ‘code generation’ or ‘scaffolding’). It is highly effective in support of Domain-Driven Design, object-oriented modelling, and/or Agile Development.

‘Naked Objects MVC’ builds upon the core framework to create a complete web-based user interface, using ASP.NET MVC 3. The generic user interface may be customised via the .CSS, by adding custom views, or custom controllers, as needed. Entity Framework is used to persist objects on a database. Security may be handled simply via Forms Authentication and attribute-based authorisation, or more comprehensively via Microsoft WIF and an STS.

Naked Objects was developed by the Naked Objects Group, based in the UK. Managing Director, Richard Pawson, is credited with first identifying the ‘naked objects pattern’ in his PhD thesis. The first version of the Naked Objects framework was written on the Java platform and was open sourced in 2002. In 2010, the company passed the full rights to the Java version over to the Apache Software Foundation, where it now forms part of the Apache Isis framework. Starting in 2006 the company re-wrote the framework specifically for the .NET platform, taking full use of emerging .NET capabilities including LINQ, Entity Framework, WIF, ASP.NET MVC and marketed it as a commercial product. Richard Pawson comments: “It was always our hope that we would eventually be able to open source the .NET product in the same way that we did for the Java product. I am very pleased to announce that this has now happened.”

The Department of Social Protection in Ireland (the government agency responsible for administering benefit schemes including State Pensions and Jobseekers Allowance ) is building its new generation of core benefits-administration systems using the Naked Objects framework.  Assistant Secretary General, Niall Barry, comments: “In the last five years we have delivered more than 30 new core business applications, on-time and on-budget   –  and Naked Objects has played a critical role in that success.  We have seen even greater productivity with the latest Naked Objects for .NET platform and I am delighted at the news that the whole framework is now going open source.  As well as the cost savings to our own organisation, we hope that the open sourcing will encourage more public sector organisations to explore the benefits that this technology offers.”

További információ:

Fulfilling the Promise of MVC [InfoQ article, Nov 16, 2010]: mivel Richard Pawson a Naked Objects Pattern kidolgozója és a közreadó, Naked Objects Group vezetője ebben vezeti végig ezt az egész MVC kiteljesítési sztorit

Naked Objects Content on InfoQ

Naked Objects (CodePlex):

Naked Objects takes a domain object model, written as POCOs but following a few very simple conventions, and dynamically creates one or more complete user interfaces for it, using reflection (not ‘code generation’ or ‘scaffolding’). It is highly effective in support of Domain-Driven Design, OO Modelling, and/or Agile Development.

Naked Objects MVC builds upon the core framework to create a complete web-based user interface, using ASP.NET MVC 3. The generic user interface may be customised via the .CSS, by adding custom views, or custom controllers, as needed.

Entity Framework is used to persist objects on a database. Security may be handled simply via Forms Authentication and attribute-based authorisation, or more comprehensively via Microsoft WIF and an STS.

Naked Objects MVC – Product description

Naked Objects Group (az open source-ként közreadó vállalat honlapja rengeteg információval, különösen az egyik és a másik videó gyűjteményt érdemes megnézni)

A Java-s inkarnáció/ág anyagaiból pedig hasznos, további adalék:
The Naked Objects Pattern [July 3, 2011]: mivel nagyon hatékonyan szemlélteti a fejlesztési munka leegyszerűsítését
Isis Proposal [last edited 2010-09-21]: mivel nagyon jól összefoglalja az egész Naked Objects történetet (de csak a 2002-es framework indítástól kezdődően és csak a Java-s ágra vonatkozóan)
Welcome to Apache Isis [July 3, 2011]

Az Isis történet pedig a következő:
Apache Isis Proposal [Dan Haywood, Aug 24, 2010]
Apache Isis enters the incubator! [Dan Haywood, Oct 13, 2010]
Apache Isis 0.1.2 (incubating) Released [Dan Haywood, July 18, 2011]

Emellett én lementettem egykoron a Naked Objects for .NET még termékváltozatának 2008 végi első “lényeg ismertető” oldalát, ami azóta lekerült a Naked Objects Group webhelyéről, én azonban ide másolom, mert szerintem változatlanul érvényes:

image

An Introduction to Naked Objects

Naked Objects is a radical framework for designing and delivering applications on the Microsoft .NET platform. It is a perfect fit for any developer that believes in the value of Domain Driven Design because to develop an application using Naked Objects, all you have to develop are the domain objects themselves – the framework does everything else for you. Compare this to a typical application architecture …

clip_image002

A typical application architecture

A typical modern business application (left) consists of multiple layers of code between the actual user interface and the persisted data: the View layer, the Controller layer, the Business Task layer, the Domain Object layer, and the Data Access Layer, possibly more. Each layer must be designed, coded (sometimes in different programming languages) and managed. Adopting the so-called ‘thin-client’ architecture doesn’t solve the problem – it merely locates all those layers on the server.

Then, as each business change is introduced, the layers need to be kept in synchronisation. Imagine you were asked to add a middle initial field to the customer’s name; ask yourself how many layers of code you would need to change, and (potentially) in how many places within each layer? You might have the most agile development methodology in the world, but you’re fighting the architecture all the way.clip_image004

Object-Relational Mapping

With the introduction of Object Relational Mapping (ORM) technologies, it is now possible to auto-generate the persistence layer directly from the domain model definition, thus eliminating the need to define and maintain a separate Data Access Layer (right).

Naked Objects (Enterprise Edition) uses Microsoft’s Entity Framework to perform this function. For prototyping purposes (Express Edition) we use a simpler Object Store that persists the objects as XML.

clip_image006

Behaviourally-rich domain objects

With a true commitment to object-oriented programming, all business behaviour should be encapsulated as methods on the domain objects. Thus, a Customer object should not just be a collection of data about the customer; it should encapsulate all the behaviours that we need to apply to a customer. We refer to this as creating ‘behaviourally-rich’ domain objects. And not only does this eliminate the need for the Business Task layer (left), it also results in objects that are far more re-usable between applications.

clip_image008

The ‘naked objects’ architectural pattern

Once you have behaviourally-complete domain objects, however, it is possible to auto-create a complete user interface, just by exposing the domain objects (with their methods) directly to the user, in the form of an object-oriented user interface. This concept has become known as the naked objects architectural pattern.

Using a framework that implements this pattern, it is possible to develop complex applications solely by developing the domain objects (right).

Naked Objects for .NET

Naked Objects is the leading implementation of the naked objects architectural pattern for the Microsoft .NET platform. To write an application the only code you need to write is your domain objects – in C# or VB.NET. Compile your domain objects with the Naked Objects framework will produce a runnable application, with a rich user interface implemented in WPF – as illustrated below.

clip_image010

There’s no code generation going on here: it’s all done using dynamic run-time reflection.

Benefits of using Naked Objects

Developing a business application using Naked Objects for .NET offers five principal benefits:

  • A faster development cycle, because there are fewer layers to develop.
  • Greater agility meaning: the ease with which an application may be altered to accommodate future changes in business requirements. In part this arises from the reduction in the number of developed layers that must be kept in synchronisation. Also the enforced 1:1 correspondence between the user presentation and the domain model, forces higher-quality domain object modelling, which in turn improves the agility.
  • Greater re-use of domain logic between applications because Naked Objects forces the design of behaviourally-complete objects – and these are inherently easier to re-use.
  • A more empowering style of user interface. Object-oriented user interfaces offer the user much greater flexibility than conventional task-oriented user interfaces, but traditionally they have been difficult to write. Naked Objects creates an object-oriented user interfaces for you automatically.
  • Easier requirements analysis. With the naked objects pattern, the domain objects form a common language between users and developers. This common language facilitates the process of discussing requirements – because there are no other representations to discuss. Combined with the faster development cycle, it becomes possible to prototype functional applications in real time.

For further information check out the video demonstrations and other resources.

image

Egy hozzászólás to “Naked Objects for .NET: az eredeti MVC ígéret valóra váltása”

  1. Köszi az információt, azért még sok idő kell az elmélyedésre…

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s

%d blogger ezt kedveli: