Benefits of model-first development

CodeFluent Entities White Paper – Version 4.0 – April 2013

WhitePaper

 

The objective of this white paper is to describe the software development challenge and clarify its root causes.

The first half of the document explains the market challenge and why this is a tough business issue. This part is widely applicable by anyone interested in software development and is not dependent on our offering.

In the second half of the document we explain how SoftFluent addresses the challenge through itsCodeFluent Entities model-first software factory and associated methodology.

Read CodeFluent Entities WhitePaper

Learn more about CodeFluent Entities

Generating JSON web services from an existing database with CodeFluent Entities

This article posted on CodeProject will show you how to generate a JSON base web service layer from an existing database using CodeFluent Entities. We will also generate a web client back office following an “Import wizard”.

A common scenario

 

Let us say that we are facing the following scenario:

  • We have a database that we want to expose via a JSON based web service layer, providing CRUD (Create, Read, Update and Delete) operations.
  • We also need to build a back office in order to manage and administrate the data coming from our database.
  • We may need, on a future, to access in a different way our database, for example from a Smart Client or expose a SOAP based web services layer (there are always new ideas).
  • We need to deploy this system as soon as possible.

Let us start, what we need to do is:

  • Build a data access layer capable to load data, create new data, update and delete existing data (and make sure it works).
  • Manage validation data (and make sure it works).
  • Build a JSON based web service layer:
    • Build every needed service contract and operations.
    • Configure our service contracts to support JSON.
    • Host our services.
    • Make sure it works
  • Build a web based client (and make sure it works).
  • Lay the foundations so any possible evolution and additional architecture can be supported including mobile access through different smartphone devices.
  • And everything I have missed.

Or…. We can use CodeFluent Entities to do the plumbing and being sure that it works.

In the starter wizard, we can see some of the possible built-in architectures that can be generated by CodeFluent Entities, and of course you can imagine your own architecture by creating a custom CodeFluent Entities project with your relevant set of producers.

clip_image002

The scenario we mention here is developed "step by step" in the full article on CodeProject

Benefits of Model-First Software Development

CodeFluent Entities White Paper

whitepaper-image

The objective of this white paper is to describe the software development challenge and clarify its root causes.

The first half of the document explains the market challenge and why this is a tough business issue. This part is widely applicable by anyone interested in software development and is not dependent on our offering.

In the second half of the document we explain how SoftFluent addresses the challenge through itsCodeFluent Entities model-first software factory and associated methodology.

Read CodeFluent Entities WhitePaper

Learn more about CodeFluent Entities

 

CodeFluent Entities successful at CyberForum.de

RVB de base SF_Main[1]

Thanks to our local partner, Software Factories and its software architect Mykola Dobrochynskyy, CodeFluent Entities and SoftFluent were represented in CyberForum.de (Germany).

Mykola Dobrochynskyy took part in the last CyberForum as a speaker during a technical session where he demonstrated CodeFluent Entities added value and explained the vision of Software Factories.

Software Factories had already talked about CodeFluent Entities in Germany through two articles in the monthly developer magazine DotNetPro.

Mykola’s session aroused a lot of interest and questions about CodeFluent Entities.

You want to become SoftFluent partner? Reach us by email at info@softfluent.com!

You want to try out CodeFluent Entities? Download the personal free and full-featured version!

(free for non-commercial use, professional versions available from $599 only)


Cyberforum_Talk1[1]
Cyberforum_Talk2[1] CybeforumInfomarkt[1]

CodeFluent Entities for Windows 8 app generator

windows-8-logo 
CodeFluentEntities_400
SoftFluent announces release of CodeFluent Entities for Windows 8 app generator. SoftFluent announces today that CodeFluent Entities and its Visual Studio integrated graphical editor now provides an out-of-the box Windows 8 generator. It is now possible to generate mobile ready web services as well as complete Windows Store apps in minutes.

By leveraging CodeFluent Entities, developers can put the burden of keeping up with new technologies on the product, while focusing on developing the features they need for their applications.

Read the full Press Release

Save time for Windows 8 Store apps with CodeFluent Entities

In the next few days, Windows 8 will be released bringing a set of new features.

Indeed, Windows 8 will come with a brand new user interface. This interface, which used to be known as “Metro” is already implemented on Windows Phone devices for more than two years, so you may be familiar with it.

This new user interface brings some changes in the Windows universe UI. For instance, the “Start menu” has disappeared and has been replaced by a “Start Screen” where you’ll find all your apps.

Oh wait…apps? Do you mean that my computer has been turned into a smartphone? Will I still be able to use my current software with Windows 8?

Don’t worry! Your good old desktop is still there and your current software will continue to work. Indeed, your computer hasn’t been turned into a smartphone but to answer customers’ current and future needs and expectations, Microsoft had to provide a user experience which fits with both computers and tablets (i.e. mouse/keyboard and touch screens).

Windows 8 Store apps can be downloaded from the “Windows Store” where you can find free and payable apps which, once purchased, are linked to your Windows Live account.

As disturbing as it is at the first look, this new Windows provides a lot of new possible uses for end-users and enterprises. The “Windows Store” is accessible in 120 countries. So people from 120 countries can now buy your apps! A lot of potential customers represent a lot of potential incomes thanks to this store and this income can be generated a lot of different ways (e.g. payable apps, advertising, and in-app purchase).

So far, I’ve been talking mainly about BtoC apps but you can also develop a Windows 8 Store app dedicated to your own business. For instance, you may have an existing SharePoint server hosting your extranet and you would want to offer to your co-workers more mobility. Windows 8 Store apps give you the ability to provide a new, friendly, itinerant, and interactive way to present your old data. Besides, you won’t have to go through the “Windows Store” to deploy a Windows 8 Store app, you can develop Windows Store apps for your enterprise only. You can add them to Windows devices you manage through a process called “sideloading”. “Sideloaded” apps don’t have to be certified by or installed through the Windows Store.

Contrary to BtoC apps, enterprise apps will depend heavily on business needs and as such susceptible to evolve continuously during their lifetime (even during development time!). Integrating new requirements or new technologies in such applications is usually difficult and risky, if you didn’t anticipate it properly. CodeFluent Entities was born 7 years ago from this ascertainment and has been designed from the grounds up for these kinds of scenarios. CodeFluent Entities is a Visual Studio integrated code generation product, based on a technology and platform independent model, and allows continuous code generation to more than 20 target platforms (databases, business layers, UIs, etc.)

clip_image002

CodeFluent Entities is already compatible with Visual Studio 2012 and a “Windows Store producer” (generator) has been shipped last month. This producer allows you to generate a complete Windows 8 Store application, its relational database and its JSON web services back-end. We’ve published an article which shows how to use this new producer a week ago.

clip_image004

clip_image006

clip_image008

CodeFluent Entities supports Visual Studio 2012


visual_studio_logo[1]

CodeFluentEntities

SoftFluent announces release of CodeFluent Entities for Visual Studio 2012 in August SoftFluent announces today that CodeFluent Entities and its Visual Studio integrated graphical editor will run within the final version of Visual Studio before August 31st 2012. CodeFluent Entities was updated to following the look & feel of Visual Studio 2012.

By leveraging CodeFluent Entities, developers can put the burden of keeping up with new technologies on the product, while focusing on developing the features they need for their applications.

Read the full Press Release

CodeFluent Entities article on DotnetPro Magazine (Germany)

Mykola Dobrochynskyy, an experienced senior software engineer has written an article in German for Dotnetpro Magazine. It has made the front page of the magazine.

If your native language is German and you do not know yet about CodeFluent Entities software factory, this is a good place to start, just buy this Dotnetpro edition.

Dotnetpro

Anemic Domain Models

From our experience as technical auditors, we noted more and more frequent situations where we observe “Anemic Domain Models”. Driven by a lack of understanding of the “Separation of concern” principle, it seems that some unexperimented developers tend to over-create classes applying what they have understood of architecture principles in a very clumsy and ineffective way of coding.

Let’s come back to basic as described a few years ago by Martin Fowler in his post :

The basic symptom of an Anemic Domain Model is that at first blush it looks like the real thing. There are objects, many named after the nouns in the domain space, and these objects are connected with the rich relationships and structure that true domain models have. The catch comes when you look at the behavior, and you realize that there is hardly any behavior on these objects, making them little more than bags of getters and setters. Indeed often these models come with design rules that say that you are not to put any domain logic in the the domain objects. Instead there are a set of service objects which capture all the domain logic. These services live on top of the domain model and use the domain model for data.

That’s exactly what we try to avoid in our projects: those business logic empty classes, often wrapped in an extra layer of procedural services, which in the end just create a procedural style design. Furthermore, as many people think that anemic objects are real objects, thus completely missing the point of what object-oriented design is all about.

image

Instead, as Eric Evans states about the Domain Layer (or Model Layer):

Responsible for representing concepts of the business, information about the business situation, and business rules. State that reflects the business situation is controlled and used here, even though the technical details of storing it are delegated to the infrastructure. This layer is the heart of business software.

And we completely agree: especially right now, on the verge of a new technology wave (e.g. HTML5 & WinRT) the real key is your architecture. If you already have this rich domain layer, upper layers should just be consumers of it, empty shells providing user interaction to the heart of your business software. Consequently supporting a new platform (going from desktop to web, or Web Forms to MVC for instance) gets down to creating this new shell.

That’s exactly the reason why we created CodeFluent Entities, with the first goal of generating a real .NET Business Object Model: it generates a full .NET domain layer containing your business logic and which can be used across all .NET technologies (Windows Forms, WPF, SharePoint, ASP.NET MVC, ASP.NET Web Forms, Windows Workflows, etc.) this way securing your investments.

This is possible as the Business Object Model producer (= code generator) can generate:

  • Classes: plain old classes (not deriving from a base technical class), human readable, that are all partial and meant to be easily extensible by developers, implementing an extensive set of interfaces (ICloneable, IComparable, IDataErrorInfo, IEquatable, INotifyPropertyChanged, etc.) to ease development of upper layers, and easily debuggable as no code is dynamically generated at run time
  • Enumerations: since CodeFluent Entities is not an ORM, you can create your own .NET enumerations or reuse existing ones,
  • Multiple namespaces: as its common to have more than a single domain in real enterprise class applications,
  • Rules: to validate your data, set-up transactions, and implement your business logic,
  • Methods: create your own methods aside default generated ones,
  • light objects as structures or non-persistent objects useful to gather-up cross entity information,
  • components as a binary large object http handler to manipulate blobs in web environments, or a cache manager based on the standard ASP.NET cache manager, and more.

Last but not least, we don’t think that tools can generate entire enterprise-class applications, that’s not what we’re saying, developing applications is a complex operations that needs more than data access and/or UI controls. Instead what we’re saying is that we provide a tool to developers which helps them set-up rock-solid foundations for their .NET applications, built on a consistent domain model, which developers will have to extend and fill-in the gaps.

The recipe we provide through CodeFluent Entities ends-up creating .NET applications based on a rich Domain Layer built by the tool and developers, containing the full business logic of your application. It’s a complete and consistent API which can be used on all platforms (x86, x64, desktop, web) across all technologies (.NET 2 to 4) this way securing your investments.

And even if you are not considering using our tool, we still think it is a very bad idea to follow this path of “Anemic Domain Models” and that you should create real domain models, either by hand or by finding another tool can do it the right way.

Daniel COHEN-ZARDI, with the support of the R&D team

CodeFluent Entities supports Visual Studio 11 Beta & SQL Server 2012

get-vs11betasqlserver2012logo_01A70123012213812 SoftFluent announced today at the DevWeek conference that CodeFluent Entities runs in the Microsoft Visual Studio 11 Beta.

Furthermore, the SQL Server code generator now supports Microsoft SQL Server 2012 RTM.

By leveraging CodeFluent Entities, developers can put the burden of keeping up with new technologies on the product, while focusing on developing the features they need for their applications.

Read the full Press Release

Follow

Get every new post delivered to your Inbox.

Join 100 other followers