23-24
Sponsored Links
This presentation is the property of its rightful owner.
1 / 26

23-24 мая , 2012 г. Microsoft PowerPoint PPT Presentation


  • 82 Views
  • Uploaded on
  • Presentation posted in: General

23-24 мая , 2012 г. Microsoft. Как повысить эффективность разработки корпоративных бизне с - приложений c e X press A pp F ramework. Денис Гаравский. [email protected] | @ DennisGaravsky | www.devexpress.com. .NET Team, DevExpress. Перед тем как начать….

Download Presentation

23-24 мая , 2012 г. Microsoft

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


23-24 , 2012 .

Microsoft


-c eXpressApp Framework

[email protected] | @DennisGaravsky | www.devexpress.com

.NET Team, DevExpress


Developer Express ??!

XAF??????


Developer Express

VCL, .NET

(Windows Forms, ASP.NET Web Forms, ASP.NET MVC, WPF, Silverlight)

, ,

, ,

,

1998.

IDE

CodeRush, !Refactor,

App Framework & ORM

eXpress Persistent Objects (XPO)

eXpressApp Framework (XAF)


- -

-

MicrosoftDynamics 1 . .

-

,

,

.


  • $$$ ,


  • $$$

  • ,

  • ,


eXpressApp Framework(XAF)

XAF

  • Desktop Web


eXpressApp Framework


- CRUD-?

(http://galaktika.ru)

XAFARI XAF

, ,


XAF ?

- (, , ) 0.5

Outlook (, , .) 1

CRM ( ) 1

XAF

1 c XAF ~ N XAF

1 XAF1


XAF (MVC)

XAF (N-Tier)


-

XPO ORM

15 RDBMS

:

  • Code-First

  • Database-First

  • Model-First

  • UI-First

  • Domain Components (DC) ,

    Entity Framework 12.1 ( )


UI-First

UI !


Domain Components (DC) - I

Interface vslass

Independence from ORM

Inversion of Control (IoC)

Dependency Injection

ORM runtime


[DomainComponent]

public interfaceIAccount {

[RuleRequiredField, RuleUniqueValue]

[RuleRegularExpression(@SomeCoolRegEx")]

string Email { get; set; }

[FieldSize(25)]

[ImmediatePostData]

[Appearance("Len(Password) < 6", FontColor = Color.Red)]

string Password { get; set; }

}

Domain Components

[DomainComponent, ImageName("BO_Person")]

public interface IPerson {

stringLastName { get; set; }

stringFirstName { get; set; }

stringFullName { get; }

DateTimeBirthday { get; set; }

}

[DomainLogic(typeof(IPerson))]

publicclassPersonLogic {

public static string Get_FullName(IPerson self) {

returnstring.Format("{0} {1}",self.FirstName, self.LastName);

}

}

[DomainComponent]

public interface ICompany{

[RuleRequiredField]

string Name { get; set; }

[Aggregated]

IList<IPerson> Staff { get; }

[DataSourceProperty("Staff")]

[RuleRequiredField(TargetCriteria = "Staff.Count > 0")]

[Appearance("Staff.Count = 0",BackColor = Color.Yellow)]

IPerson Manager { get; set; }

}

DomainComponent

  • IPerson

  • IAccount

ICompany

IPerson

  • IAccount

  • ICompany

[DomainComponent]interfaceICRMCustomer:IAccount, ICompany,INotes, IPhones,...,...{}


<Application>

<Views>

<DetailViewId="Order_DetailView">

<Layout>

<LayoutGroupId="Main"ImageName="BO_Order">

<LayoutItemId="UnitPrice"RelativeSize="25"Index="0" />

<LayoutItemId="Qty"RelativeSize="25"Index="1" />

<LayoutItemId="Discount"RelativeSize="25"Index="2" />

<LayoutItemId="ExtendedPrice"RelativeSize="25"Index="3" />

</LayoutGroup>

</Layout>

</DetailView>

</Views>

</Application>

  • XAFML - XAML

  • UI

  • runtime

  • DC


  • Desktop Web CRUD ,, ..

  • UI


eXpressApp Framework,

, :

  • ,

  • , !


  • 3rd-party


VisualStudio


runtime

  • , ,

  • , , ,


[Test]

public void TestExtendedPrice() {

IDataStoreds = newInMemoryDataStore(

AutoCreateOption.DatabaseAndSchema

);

IDataLayerdal = newSimpleDataLayer(ds);

using(UnitOfWorkuow = newUnitOfWork(dal)) {

Order order = new Order(uow) {UnitPrice= 50m, Qty= 5, Discount = 0.5d

};

uow.CommitChanges();Assert.AreEqual(125m, order.ExtendedPrice);

}

}

public class Order : XPObject {

publicOrder(Session session) :

base(session) { }

public decimal UnitPrice;

public int Qty;

public double Discount;

public decimal ExtendedPrice {

get{ returnUnitPrice * (decimal)

((1 - Discount) * Qty);

}

}

}

TDD-friendly

Unit Test Runner

Easy Test

Easy Test Script Recorder


:)

- eXpressAppFramework

!


:www.devexpress.com

XAF: http://bit.ly/3OMTR

XAF : http://bit.ly/KyhdW3

E-mail: [email protected]

DevExpress

!


.

.


  • Login