SlideShare ist ein Scribd-Unternehmen logo
1 von 45
BEXIS Tech Talk Series
#4: The 3rd Party Libraries
Javad Chamanara
April 2016
Recall
BEXIS Tech Talk #4: The 3rd Party Libraries 2
DB2 PgS
Data Access
Core Functions
UI
UI Framework
...
Modularity
Integration
Synthesis Work
Semantic Search
Analytics
User Defined
Spatial Querying
External Tools
Web Services
Archiving
Import/ Export
Publishing
User Interface
• jQuery
• jQuery UI
No need to explain them 
BEXIS Tech Talk #4: The 3rd Party Libraries 3
User Interface
• Telerik Extensions for ASP.NET MVC
– Set of UI controls
– Server and Client side computation/binding
– Based on jQuery
– Extends the MVC’s HTML Helper
• Grid
• Chart
• Splitter & Slider
• TreeView
• …
BEXIS Tech Talk #4: The 3rd Party Libraries 4
User Interface->Telerik
• Telerik Extensions for ASP.NET MVC
– Set of UI controls
– Server and Client side computation/binding
– Based on jQuery
– Extends the MVC’s HTML Helper
• Grid
• Chart
• Splitter & Slider
• TreeView
• …
BEXIS Tech Talk #4: The 3rd Party Libraries 5
User Interface->Telerik
@(Html.Telerik().Grid(Model.Data).Name("PrimaryDataResultGrid")
.DataBinding(dataBinding => dataBinding
.Ajax()
.Select("_CustomPrimaryDataBinding", "Data", new
RouteValueDictionary { { "area", “ddm" }, {
"datasetID", id } })
.OperationMode(GridOperationMode.Server)
)
.EnableCustomBinding(true)
.HtmlAttributes(new {@class = "primaryDataResultGrid" })
.ClientEvents(events => events
.OnLoad("PrimaryDataResultGrid_OnLoad")
.OnDataBound("PrimaryData_OnCommand")
.OnColumnHide("PrimaryData_OnCommand")
.OnColumnShow("PrimaryData_OnCommand")
)
BEXIS Tech Talk #4: The 3rd Party Libraries 6
User Interface->Telerik
BEXIS Tech Talk #4: The 3rd Party Libraries 7
User Interface
• Bootstrap
– A framework for
• HTML
• CSS
• JS
– Responsive design
– On client side
BEXIS Tech Talk #4: The 3rd Party Libraries 8
User Interface->Bootstrap
<div id="navbarCollapse" class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li>@Html.ActionLink("Dashboard", "Index", "Home",
new {area = "" }, null)</li>
<li>@Html.ActionLink("Search", "Index", "Home",
new {area = "ddm" }, null)</li>
</ul>
…
BEXIS Tech Talk #4: The 3rd Party Libraries 9
Framework
• Unity IoC
– Inversion of Control
– Dependency Injection
• Factory Pattern
– Service Locator
• Object life cycle mgmt.
– Configuration Based
– Version 2
– URL: https://github.com/unitycontainer/unity
BEXIS Tech Talk #4: The 3rd Party Libraries 10
Framework -> Unity
<alias alias="Logger" type="Vaiona.Logging.ILogger, Vaiona.Logging" />
<alias alias="DatabaseLogger"
type="Vaiona.Logging.Loggers.DatabaseLogger, Vaiona.Logging" />
<register type="Logger" mapTo="DatabaseLogger"
name="Diagnostics.Logging">
<lifetime type="singleton" />
</register>
<register type="Logger" mapTo="DatabaseLogger" name="General.Logging">
<lifetime type="singleton" />
</register>
return IoC.IoCFactory.Container.Resolve<ILogger>();
return IoC.IoCFactory.Container.Resolve<ILogger>("General.Logging");
BEXIS Tech Talk #4: The 3rd Party Libraries 11
Framework
• PostSharp
– Post Compilation Code Weaving
– Used in:
• Logging
• MVC Action handling
• Authorization
– Version: 2.x (community)
– URL: https://www.postsharp.net/
BEXIS Tech Talk #4: The 3rd Party Libraries 12
Framework->PostSharp
public class DiagnoseAttribute : OnMethodBoundaryAspect
{
public override void OnEntry(MethodExecutionArgs args)
{
var sw = new Stopwatch();
sw.Start();
args.MethodExecutionTag = sw;
}
…
BEXIS Tech Talk #4: The 3rd Party Libraries 13
Framework
• NHibernate
– Object Relational Mapping (ORM)
– Configuration Based Mappings
– …
– Version 4
– URL: http://nhibernate.info/
BEXIS Tech Talk #4: The 3rd Party Libraries 14
Vaiona
• IoC
• Logging
• Entities
• Persistence
• Serialization
• Web
BEXIS Tech Talk #4: The 3rd Party Libraries 15
https://github.com/javadch/VWF.Mvc
Vaiona -> IoC
• Provides IoC services
• Decouples the clients from any concrete IoC
provider
• Used in Logging, Persistence, Search
• Configuration based for easy alteration
• Multiple Mappings for each
interface/implementation pair, suing
namespaces
BEXIS Tech Talk #4: The 3rd Party Libraries 16
Vaiona -> Logging
• AOP, cross-cutting functionality
• Uses code interception and weaving techniques
(PostSharp)
• Aspects (intercept functions’ execution)
– Trace: records call to methods
– Performance: records methods’ execution time
– Diagnose: records methods’ arguments & return
values
– Exception: records not caught exceptions
• And log to a DB table using the loggers
BEXIS Tech Talk #4: The 3rd Party Libraries 17
Vaiona -> Logging
//[RecordCall]
//[LogExceptions]
[Diagnose]
[MeasurePerformance]
public ActionResult Index(Int64 id=0)
{
LoggerFactory.LogCustom("Hi, I am a custom message!");
return View();
}
BEXIS Tech Talk #4: The 3rd Party Libraries 18
Vaiona -> Logging
• Entity Logging
– What happened to an entity
– What happened to the relation between 2 entities
• Custom Logging
– Free style programmer friendly logging
BEXIS Tech Talk #4: The 3rd Party Libraries 19
Vaiona -> Logging
• Log records capture information about the:
– Web request (URL, agent, etc.)
– User information (username)
– Action performed (CRUD)
– Call context (assembly, class, method)
– Entity affected (id, type, relations affected)
– Performance (execution time)
– Diagnostics (parameters, arguments, return values)
– General (date, time)
BEXIS Tech Talk #4: The 3rd Party Libraries 20
Vaiona -> Logging
• Log management
– Web.config switches
<appSettings>
<add key="IsLoggingEnable" value="false" />
<add key="IsCallLoggingEnable" value="true" />
<add key="IsPerformanceLoggingEnable" value="true" />
<add key="IsDiagnosticLoggingEnable" value="true" />
<add key="IsExceptionLoggingEnable" value="true" />
</appSettings>
Custom logs are always written!
BEXIS Tech Talk #4: The 3rd Party Libraries 21
Vaiona -> Logging
• Usage scenarios
– System behavior monitoring
– Bottleneck detection
– Logical bug detection
– User studies
– Software improvement planning
– Auditing
– …
BEXIS Tech Talk #4: The 3rd Party Libraries 22
Vaiona -> Logging
• Limitations
– Not possible to turn it on/off on individual
functions
– Exceptions on the logging itself are not caught
– Log records are persisted async; no guarantee on
writing
BEXIS Tech Talk #4: The 3rd Party Libraries 23
Vaiona -> Entities
• Base classes for:
– Persisting Data Entities
– Data Modification Auditing
– Versioning and Concurrency Control
– State Mgmt.
BEXIS Tech Talk #4: The 3rd Party Libraries 24
Vaiona -> Entities
public class Party : BaseEntity
{
}
public class Dataset : BusinessEntity
{
}
BEXIS Tech Talk #4: The 3rd Party Libraries 25
Vaiona -> Entities
public abstract class BaseEntity :
ISystemVersionedEntity
{
public virtual XmlNode Extra { get; set; }
public virtual long Id { get; set; }
public virtual int VersionNo { get; set; }
BEXIS Tech Talk #4: The 3rd Party Libraries 26
public virtual void Dematerialize(bool
includeChildren = true);
public virtual void Materialize(bool
includeChildren = true);
}
Vaiona -> Entities
public abstract class BusinessEntity :
BaseEntity, IStatefullEntity,
IAuditableEntity
{
public virtual EntityAuditInfo
CreationInfo { get; set; }
public virtual EntityAuditInfo
ModificationInfo { get; set; }
public virtual EntityStateInfo
StateInfo { get; set; }
}
BEXIS Tech Talk #4: The 3rd Party Libraries 27
Vaiona -> Persistence
• Persistence Mgmt.
– Schema Export
– DB creation
– DB activity logging
– Caching
– Configuration
– Session Sharing
BEXIS Tech Talk #4: The 3rd Party Libraries 28
Vaiona -> Persistence->Mappings
(NHibernate)
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="BExIS.Dlm.Entities" namespace="BExIS.Dlm.Entities.DataStructure">
<class xmlns="urn:nhibernate-mapping-2.2" name="Unit" table="Units"
dynamic-update="true" select-before-update="true">
<id name="Id" type="Int64">
<column name="Id" />
<generator class="native" />
</id>
<version name="VersionNo" type="Int32">
<column name="VersionNo" />
</version>
<property name="Name" type="String">
<column name="Name" />
</property>
<property name="Abbreviation" type="String">
<column name="Abbreviation" />
</property>
<property name="Description" type="String">
<column name="Description" />
</property>
…
BEXIS Tech Talk #4: The 3rd Party Libraries 29
Vaiona -> Persistence->
Arrangement
BEXIS Tech Talk #4: The 3rd Party Libraries 30
Vaiona -> Persistence->Setup
Starting up the IoC
protected void Application_Start()
{
IoCFactory.StartContainer
(Path.Combine(AppConfiguration.AppRo
ot, "IoC.config")
, "DefaultContainer");
…
BEXIS Tech Talk #4: The 3rd Party Libraries 31
Vaiona -> Persistence->Setup
Exporting the schema
protected void Application_Start()
{
IPersistenceManager pManager =
PersistenceFactory.GetPersistenceManager();
pManager.Configure(AppConfiguration.DefaultApp
licationConnection.ConnectionString,
AppConfiguration.DatabaseDialect, "Default",
AppConfiguration.ShowQueries);
if (AppConfiguration.CreateDatabase)
pManager.ExportSchema();
pManager.Start();
BEXIS Tech Talk #4: The 3rd Party Libraries 32
Vaiona -> Persistence->Setup
Registering the DB session manager for MVC
actions
public static void RegisterGlobalFilters
(GlobalFilterCollection filters)
{
filters.Add(new PersistenceContextProviderFilterAttribute());
BEXIS Tech Talk #4: The 3rd Party Libraries 33
Vaiona -> Persistence
• Unit of Work
– Transaction Mgmt.
– Bulk operations
using (IUnitOfWork uow =
persistenceManager.GetUnitOfWork())
{
IRepository<Unit> repo =
uow.GetRepository<Unit>();
// more repos, more changes
repo.Put(u);
uow.Commit(); // applies all the changes
}
BEXIS Tech Talk #4: The 3rd Party Libraries 34
Vaiona -> Persistence
• Repository
– CRUD operations on data entities
– Keeps track of changes
– Can return IQueryable for:
• further querying
• Dynamic querying
– Accepts:
• LINQ expressions
• named queries
• native queries
BEXIS Tech Talk #4: The 3rd Party Libraries 35
Vaiona -> Persistence
using (IUnitOfWork uow =
persistenceManager.GetUnitOfWork())
{
var x = new Unit();
IRepository<Unit> repo =
uow.GetRepository<Unit>();
repo.Get(p => p.Id == 21).First()
.ConversionsIamTheSource.ToList()
.ForEach(c => c.Source = x);
var q = repo.Query(p => p.Abbreviation.StartsWith("m"));
var w = from a in q
where a.Dimension.Equals("Length")
select (a);
}
BEXIS Tech Talk #4: The 3rd Party Libraries 36
Vaiona -> Serialization
• Entities need to be de/serialized in XML
• Entities have attributes and relationships
• Object graphs may create cycles
BEXIS Tech Talk #4: The 3rd Party Libraries 37
Vaiona -> Serialization
[AutomaticMaterializationInfo(
"Amendments", typeof(List<Amendment>),
"XmlAmendments", typeof(XmlDocument))]
public abstract class DataTuple : BaseEntity
BEXIS Tech Talk #4: The 3rd Party Libraries 38
public abstract class BaseEntity
{
public virtual void Dematerialize(bool
includeChildren=true){…}
public virtual void Materialize(bool
includeChildren=true){…}
}
Vaiona -> Web
• Web Request Interception
• MVC Action Interception
–Authorization
–Ambient Transaction Mgmt.
• Web Session Mgmt.
–Per session culture settings
–Multi tenancy
BEXIS Tech Talk #4: The 3rd Party Libraries 39
Vaiona -> Web
• Layout Mgmt.
– Pages inherit layout from masters
– Masters separate between arrangement and
content
– Arrangement in layout.cshtml file
• HTML + placeholders
– Content from services
• Registered in layout.xml
BEXIS Tech Talk #4: The 3rd Party Libraries 40
Vaiona -> Web
Layout.cshtml
<body>
<div id="informationContainer">
@Html.RenderAuto("Menu")
</div>
…
BEXIS Tech Talk #4: The 3rd Party Libraries 41
Vaiona -> Web
Layout.xml
<MapItem ContentKey="Menu">
<ContentProviders>
<ContentProvider Area="Site" Controller="Nav"
Action="Menu" Type="Action" Enabled="true">
<Parameters>
<Parameter Name="oreintation" Value="1"/>
</Parameters>
</ContentProvider>
</ContentProviders>
</MapItem>
BEXIS Tech Talk #4: The 3rd Party Libraries 42
Lucene
• Apache Lucene.Net
• Search on
– Metadata
• Datasets created between 2010 and 2015
• Datasets in project sWEEP
– Primary data
• Datasets that contain value 22
• Datasets that contain information about “temperature”
• Datasets that have a “temperature” column and that
column contains values >= 22
BEXIS Tech Talk #4: The 3rd Party Libraries 43
Outlook
Whats next in the talk series?
How to develop a module for BExIS
BEXIS Tech Talk #4: The 3rd Party Libraries 44
4545
Thanks!
Questions?
Contact:
javad.chamanara@uni-jena.de
http://bexis2.uni-jena.de
BEXIS Tech Talk #4: The 3rd Party Libraries
Acknowledgment

Weitere ähnliche Inhalte

Was ist angesagt?

Keycloak for Science Gateways - SGCI Technology Sampler Webinar
Keycloak for Science Gateways - SGCI Technology Sampler WebinarKeycloak for Science Gateways - SGCI Technology Sampler Webinar
Keycloak for Science Gateways - SGCI Technology Sampler Webinarmarcuschristie
 
Building RESTfull Data Services with WebAPI
Building RESTfull Data Services with WebAPIBuilding RESTfull Data Services with WebAPI
Building RESTfull Data Services with WebAPIGert Drapers
 
Integrating Security Roles into Microsoft Silverlight Applications
Integrating Security Roles into Microsoft Silverlight ApplicationsIntegrating Security Roles into Microsoft Silverlight Applications
Integrating Security Roles into Microsoft Silverlight ApplicationsDan Wahlin
 
Watson IoT Platform Embedded Rules Concepts & APIs Overview
Watson IoT Platform Embedded Rules Concepts & APIs OverviewWatson IoT Platform Embedded Rules Concepts & APIs Overview
Watson IoT Platform Embedded Rules Concepts & APIs Overviewsmithson.martin
 
Intro to Apache Shiro
Intro to Apache ShiroIntro to Apache Shiro
Intro to Apache ShiroClaire Hunsaker
 
6. hibernate
6. hibernate6. hibernate
6. hibernateAnusAhmad
 
Introduction to the SharePoint 2013 REST API
Introduction to the SharePoint 2013 REST APIIntroduction to the SharePoint 2013 REST API
Introduction to the SharePoint 2013 REST APISparkhound Inc.
 

Was ist angesagt? (8)

Keycloak for Science Gateways - SGCI Technology Sampler Webinar
Keycloak for Science Gateways - SGCI Technology Sampler WebinarKeycloak for Science Gateways - SGCI Technology Sampler Webinar
Keycloak for Science Gateways - SGCI Technology Sampler Webinar
 
netbeans
netbeansnetbeans
netbeans
 
Building RESTfull Data Services with WebAPI
Building RESTfull Data Services with WebAPIBuilding RESTfull Data Services with WebAPI
Building RESTfull Data Services with WebAPI
 
Integrating Security Roles into Microsoft Silverlight Applications
Integrating Security Roles into Microsoft Silverlight ApplicationsIntegrating Security Roles into Microsoft Silverlight Applications
Integrating Security Roles into Microsoft Silverlight Applications
 
Watson IoT Platform Embedded Rules Concepts & APIs Overview
Watson IoT Platform Embedded Rules Concepts & APIs OverviewWatson IoT Platform Embedded Rules Concepts & APIs Overview
Watson IoT Platform Embedded Rules Concepts & APIs Overview
 
Intro to Apache Shiro
Intro to Apache ShiroIntro to Apache Shiro
Intro to Apache Shiro
 
6. hibernate
6. hibernate6. hibernate
6. hibernate
 
Introduction to the SharePoint 2013 REST API
Introduction to the SharePoint 2013 REST APIIntroduction to the SharePoint 2013 REST API
Introduction to the SharePoint 2013 REST API
 

Andere mochten auch

Ciudades mayas luis
Ciudades mayas luisCiudades mayas luis
Ciudades mayas luisLuis Velasquez
 
PresentaciĂłn SlideShare
PresentaciĂłn SlideSharePresentaciĂłn SlideShare
PresentaciĂłn SlideSharextremetecpc
 
6 The UI Structure and The Web API
6 The UI Structure and The Web API6 The UI Structure and The Web API
6 The UI Structure and The Web APIjavadch
 
Deber 1 estadistica
Deber 1 estadisticaDeber 1 estadistica
Deber 1 estadisticaCand Jof
 
Teresa Parent
Teresa ParentTeresa Parent
Teresa Parentparen1tl
 
CatĂĄlogo Industria GrĂĄfica
CatĂĄlogo Industria GrĂĄficaCatĂĄlogo Industria GrĂĄfica
CatĂĄlogo Industria GrĂĄficaUnibind Spain
 
Teresa Parent
Teresa ParentTeresa Parent
Teresa Parentparen1tl
 
Aprendizaje colaborativo
Aprendizaje colaborativoAprendizaje colaborativo
Aprendizaje colaborativoAnwarMiranda1973
 
AcompaĂąamiento primaria semana del 31 de agosto al 4 de septiembre
AcompaĂąamiento primaria semana del 31 de agosto al 4 de septiembreAcompaĂąamiento primaria semana del 31 de agosto al 4 de septiembre
AcompaĂąamiento primaria semana del 31 de agosto al 4 de septiembrecolegiommc
 
Keynote (DE): Beyond Budgeting, at AK UnternehmensfĂźhrung, Heilbronn
Keynote (DE): Beyond Budgeting, at AK UnternehmensfĂźhrung, HeilbronnKeynote (DE): Beyond Budgeting, at AK UnternehmensfĂźhrung, Heilbronn
Keynote (DE): Beyond Budgeting, at AK UnternehmensfĂźhrung, HeilbronnGebhard Borck
 
Comment valoriser sa location de vacances?
Comment valoriser sa location de vacances? Comment valoriser sa location de vacances?
Comment valoriser sa location de vacances? Ludivine Blanchard
 

Andere mochten auch (13)

Logosuunnittelu
LogosuunnitteluLogosuunnittelu
Logosuunnittelu
 
3D-mallinnus
3D-mallinnus3D-mallinnus
3D-mallinnus
 
Ciudades mayas luis
Ciudades mayas luisCiudades mayas luis
Ciudades mayas luis
 
PresentaciĂłn SlideShare
PresentaciĂłn SlideSharePresentaciĂłn SlideShare
PresentaciĂłn SlideShare
 
6 The UI Structure and The Web API
6 The UI Structure and The Web API6 The UI Structure and The Web API
6 The UI Structure and The Web API
 
Deber 1 estadistica
Deber 1 estadisticaDeber 1 estadistica
Deber 1 estadistica
 
Teresa Parent
Teresa ParentTeresa Parent
Teresa Parent
 
CatĂĄlogo Industria GrĂĄfica
CatĂĄlogo Industria GrĂĄficaCatĂĄlogo Industria GrĂĄfica
CatĂĄlogo Industria GrĂĄfica
 
Teresa Parent
Teresa ParentTeresa Parent
Teresa Parent
 
Aprendizaje colaborativo
Aprendizaje colaborativoAprendizaje colaborativo
Aprendizaje colaborativo
 
AcompaĂąamiento primaria semana del 31 de agosto al 4 de septiembre
AcompaĂąamiento primaria semana del 31 de agosto al 4 de septiembreAcompaĂąamiento primaria semana del 31 de agosto al 4 de septiembre
AcompaĂąamiento primaria semana del 31 de agosto al 4 de septiembre
 
Keynote (DE): Beyond Budgeting, at AK UnternehmensfĂźhrung, Heilbronn
Keynote (DE): Beyond Budgeting, at AK UnternehmensfĂźhrung, HeilbronnKeynote (DE): Beyond Budgeting, at AK UnternehmensfĂźhrung, Heilbronn
Keynote (DE): Beyond Budgeting, at AK UnternehmensfĂźhrung, Heilbronn
 
Comment valoriser sa location de vacances?
Comment valoriser sa location de vacances? Comment valoriser sa location de vacances?
Comment valoriser sa location de vacances?
 

Ähnlich wie 4 the 3rd party libraries

Developing your first application using FI-WARE
Developing your first application using FI-WAREDeveloping your first application using FI-WARE
Developing your first application using FI-WAREFermin Galan
 
Developing your first application using FIWARE
Developing your first application using FIWAREDeveloping your first application using FIWARE
Developing your first application using FIWAREFIWARE
 
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0Arun Gupta
 
CUST-1 Share Document Library Extension Points
CUST-1 Share Document Library Extension PointsCUST-1 Share Document Library Extension Points
CUST-1 Share Document Library Extension PointsAlfresco Software
 
FIWARE Wednesday Webinars - How to Debug IoT Agents
FIWARE Wednesday Webinars - How to Debug IoT AgentsFIWARE Wednesday Webinars - How to Debug IoT Agents
FIWARE Wednesday Webinars - How to Debug IoT AgentsFIWARE
 
Maximizer 2018 API training
Maximizer 2018 API trainingMaximizer 2018 API training
Maximizer 2018 API trainingMurylo Batista
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and ActivatorKevin Webber
 
MWLUG 2015 - AD114 Take Your XPages Development to the Next Level
MWLUG 2015 - AD114 Take Your XPages Development to the Next LevelMWLUG 2015 - AD114 Take Your XPages Development to the Next Level
MWLUG 2015 - AD114 Take Your XPages Development to the Next Levelbalassaitis
 
C# .NET Developer Portfolio
C# .NET Developer PortfolioC# .NET Developer Portfolio
C# .NET Developer Portfoliocummings49
 
Breaking a monolith: In-place refactoring with service-oriented architecture ...
Breaking a monolith: In-place refactoring with service-oriented architecture ...Breaking a monolith: In-place refactoring with service-oriented architecture ...
Breaking a monolith: In-place refactoring with service-oriented architecture ...Ryan M Harrison
 
LF_APIStrat17_Breaking a Monolith: In-Place Refactoring with Service-Oriented...
LF_APIStrat17_Breaking a Monolith: In-Place Refactoring with Service-Oriented...LF_APIStrat17_Breaking a Monolith: In-Place Refactoring with Service-Oriented...
LF_APIStrat17_Breaking a Monolith: In-Place Refactoring with Service-Oriented...LF_APIStrat
 
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010Arun Gupta
 
TechDays 2013 Jari Kallonen: What's New WebForms 4.5
TechDays 2013 Jari Kallonen: What's New WebForms 4.5TechDays 2013 Jari Kallonen: What's New WebForms 4.5
TechDays 2013 Jari Kallonen: What's New WebForms 4.5Tieturi Oy
 
Solving anything in VCL
Solving anything in VCLSolving anything in VCL
Solving anything in VCLFastly
 
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)Red Hat Developers
 
Securing Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTPSecuring Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTPRafal Gancarz
 

Ähnlich wie 4 the 3rd party libraries (20)

Developing your first application using FI-WARE
Developing your first application using FI-WAREDeveloping your first application using FI-WARE
Developing your first application using FI-WARE
 
Developing your first application using FIWARE
Developing your first application using FIWAREDeveloping your first application using FIWARE
Developing your first application using FIWARE
 
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
Spark IT 2011 - Simplified Web Development using Java Server Faces 2.0
 
Activiti bpm
Activiti bpmActiviti bpm
Activiti bpm
 
CUST-1 Share Document Library Extension Points
CUST-1 Share Document Library Extension PointsCUST-1 Share Document Library Extension Points
CUST-1 Share Document Library Extension Points
 
Local Storage
Local StorageLocal Storage
Local Storage
 
What's new in the July 2017 Update for Dynamics 365 - Developer features
What's new in the July 2017 Update for Dynamics 365 - Developer featuresWhat's new in the July 2017 Update for Dynamics 365 - Developer features
What's new in the July 2017 Update for Dynamics 365 - Developer features
 
FIWARE Wednesday Webinars - How to Debug IoT Agents
FIWARE Wednesday Webinars - How to Debug IoT AgentsFIWARE Wednesday Webinars - How to Debug IoT Agents
FIWARE Wednesday Webinars - How to Debug IoT Agents
 
Maximizer 2018 API training
Maximizer 2018 API trainingMaximizer 2018 API training
Maximizer 2018 API training
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and Activator
 
MWLUG 2015 - AD114 Take Your XPages Development to the Next Level
MWLUG 2015 - AD114 Take Your XPages Development to the Next LevelMWLUG 2015 - AD114 Take Your XPages Development to the Next Level
MWLUG 2015 - AD114 Take Your XPages Development to the Next Level
 
Log4j2
Log4j2Log4j2
Log4j2
 
C# .NET Developer Portfolio
C# .NET Developer PortfolioC# .NET Developer Portfolio
C# .NET Developer Portfolio
 
Breaking a monolith: In-place refactoring with service-oriented architecture ...
Breaking a monolith: In-place refactoring with service-oriented architecture ...Breaking a monolith: In-place refactoring with service-oriented architecture ...
Breaking a monolith: In-place refactoring with service-oriented architecture ...
 
LF_APIStrat17_Breaking a Monolith: In-Place Refactoring with Service-Oriented...
LF_APIStrat17_Breaking a Monolith: In-Place Refactoring with Service-Oriented...LF_APIStrat17_Breaking a Monolith: In-Place Refactoring with Service-Oriented...
LF_APIStrat17_Breaking a Monolith: In-Place Refactoring with Service-Oriented...
 
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
 
TechDays 2013 Jari Kallonen: What's New WebForms 4.5
TechDays 2013 Jari Kallonen: What's New WebForms 4.5TechDays 2013 Jari Kallonen: What's New WebForms 4.5
TechDays 2013 Jari Kallonen: What's New WebForms 4.5
 
Solving anything in VCL
Solving anything in VCLSolving anything in VCL
Solving anything in VCL
 
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
Boost Development With Java EE7 On EAP7 (Demitris Andreadis)
 
Securing Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTPSecuring Microservices using Play and Akka HTTP
Securing Microservices using Play and Akka HTTP
 

Mehr von javadch

Data Lifecycle is not a Cycle, but a Plane!
Data Lifecycle is not a Cycle, but a Plane!Data Lifecycle is not a Cycle, but a Plane!
Data Lifecycle is not a Cycle, but a Plane!javadch
 
Scrum Project Management with Jira as showcase
Scrum Project Management with Jira as showcaseScrum Project Management with Jira as showcase
Scrum Project Management with Jira as showcasejavadch
 
8 implementation notes
8 implementation notes8 implementation notes
8 implementation notesjavadch
 
7 Source Control and Release Management
7 Source Control and Release Management7 Source Control and Release Management
7 Source Control and Release Managementjavadch
 
5 BEXIS Extensibility
5 BEXIS Extensibility5 BEXIS Extensibility
5 BEXIS Extensibilityjavadch
 
An Itroduction to the QUIS Language
An Itroduction to the QUIS LanguageAn Itroduction to the QUIS Language
An Itroduction to the QUIS Languagejavadch
 
Research Data Management, BExIS Hands-On Workshop
Research Data Management, BExIS Hands-On WorkshopResearch Data Management, BExIS Hands-On Workshop
Research Data Management, BExIS Hands-On Workshopjavadch
 
Added Value of Conceptual Modeling in Geosciences
Added Value of Conceptual Modeling in GeosciencesAdded Value of Conceptual Modeling in Geosciences
Added Value of Conceptual Modeling in Geosciencesjavadch
 
3 the system architecture
3 the system architecture3 the system architecture
3 the system architecturejavadch
 
2 the conceptual model
2 the conceptual model2 the conceptual model
2 the conceptual modeljavadch
 
1 the big picture
1 the big picture1 the big picture
1 the big picturejavadch
 
SciQL: A Scientific Query Language
SciQL: A Scientific Query LanguageSciQL: A Scientific Query Language
SciQL: A Scientific Query Languagejavadch
 

Mehr von javadch (12)

Data Lifecycle is not a Cycle, but a Plane!
Data Lifecycle is not a Cycle, but a Plane!Data Lifecycle is not a Cycle, but a Plane!
Data Lifecycle is not a Cycle, but a Plane!
 
Scrum Project Management with Jira as showcase
Scrum Project Management with Jira as showcaseScrum Project Management with Jira as showcase
Scrum Project Management with Jira as showcase
 
8 implementation notes
8 implementation notes8 implementation notes
8 implementation notes
 
7 Source Control and Release Management
7 Source Control and Release Management7 Source Control and Release Management
7 Source Control and Release Management
 
5 BEXIS Extensibility
5 BEXIS Extensibility5 BEXIS Extensibility
5 BEXIS Extensibility
 
An Itroduction to the QUIS Language
An Itroduction to the QUIS LanguageAn Itroduction to the QUIS Language
An Itroduction to the QUIS Language
 
Research Data Management, BExIS Hands-On Workshop
Research Data Management, BExIS Hands-On WorkshopResearch Data Management, BExIS Hands-On Workshop
Research Data Management, BExIS Hands-On Workshop
 
Added Value of Conceptual Modeling in Geosciences
Added Value of Conceptual Modeling in GeosciencesAdded Value of Conceptual Modeling in Geosciences
Added Value of Conceptual Modeling in Geosciences
 
3 the system architecture
3 the system architecture3 the system architecture
3 the system architecture
 
2 the conceptual model
2 the conceptual model2 the conceptual model
2 the conceptual model
 
1 the big picture
1 the big picture1 the big picture
1 the big picture
 
SciQL: A Scientific Query Language
SciQL: A Scientific Query LanguageSciQL: A Scientific Query Language
SciQL: A Scientific Query Language
 

KĂźrzlich hochgeladen

Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfYashikaSharma391629
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxRTS corp
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...Akihiro Suda
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 

KĂźrzlich hochgeladen (20)

Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 

4 the 3rd party libraries

  • 1. BEXIS Tech Talk Series #4: The 3rd Party Libraries Javad Chamanara April 2016
  • 2. Recall BEXIS Tech Talk #4: The 3rd Party Libraries 2 DB2 PgS Data Access Core Functions UI UI Framework ... Modularity Integration Synthesis Work Semantic Search Analytics User Defined Spatial Querying External Tools Web Services Archiving Import/ Export Publishing
  • 3. User Interface • jQuery • jQuery UI No need to explain them  BEXIS Tech Talk #4: The 3rd Party Libraries 3
  • 4. User Interface • Telerik Extensions for ASP.NET MVC – Set of UI controls – Server and Client side computation/binding – Based on jQuery – Extends the MVC’s HTML Helper • Grid • Chart • Splitter & Slider • TreeView • … BEXIS Tech Talk #4: The 3rd Party Libraries 4
  • 5. User Interface->Telerik • Telerik Extensions for ASP.NET MVC – Set of UI controls – Server and Client side computation/binding – Based on jQuery – Extends the MVC’s HTML Helper • Grid • Chart • Splitter & Slider • TreeView • … BEXIS Tech Talk #4: The 3rd Party Libraries 5
  • 6. User Interface->Telerik @(Html.Telerik().Grid(Model.Data).Name("PrimaryDataResultGrid") .DataBinding(dataBinding => dataBinding .Ajax() .Select("_CustomPrimaryDataBinding", "Data", new RouteValueDictionary { { "area", “ddm" }, { "datasetID", id } }) .OperationMode(GridOperationMode.Server) ) .EnableCustomBinding(true) .HtmlAttributes(new {@class = "primaryDataResultGrid" }) .ClientEvents(events => events .OnLoad("PrimaryDataResultGrid_OnLoad") .OnDataBound("PrimaryData_OnCommand") .OnColumnHide("PrimaryData_OnCommand") .OnColumnShow("PrimaryData_OnCommand") ) BEXIS Tech Talk #4: The 3rd Party Libraries 6
  • 7. User Interface->Telerik BEXIS Tech Talk #4: The 3rd Party Libraries 7
  • 8. User Interface • Bootstrap – A framework for • HTML • CSS • JS – Responsive design – On client side BEXIS Tech Talk #4: The 3rd Party Libraries 8
  • 9. User Interface->Bootstrap <div id="navbarCollapse" class="collapse navbar-collapse"> <ul class="nav navbar-nav"> <li>@Html.ActionLink("Dashboard", "Index", "Home", new {area = "" }, null)</li> <li>@Html.ActionLink("Search", "Index", "Home", new {area = "ddm" }, null)</li> </ul> … BEXIS Tech Talk #4: The 3rd Party Libraries 9
  • 10. Framework • Unity IoC – Inversion of Control – Dependency Injection • Factory Pattern – Service Locator • Object life cycle mgmt. – Configuration Based – Version 2 – URL: https://github.com/unitycontainer/unity BEXIS Tech Talk #4: The 3rd Party Libraries 10
  • 11. Framework -> Unity <alias alias="Logger" type="Vaiona.Logging.ILogger, Vaiona.Logging" /> <alias alias="DatabaseLogger" type="Vaiona.Logging.Loggers.DatabaseLogger, Vaiona.Logging" /> <register type="Logger" mapTo="DatabaseLogger" name="Diagnostics.Logging"> <lifetime type="singleton" /> </register> <register type="Logger" mapTo="DatabaseLogger" name="General.Logging"> <lifetime type="singleton" /> </register> return IoC.IoCFactory.Container.Resolve<ILogger>(); return IoC.IoCFactory.Container.Resolve<ILogger>("General.Logging"); BEXIS Tech Talk #4: The 3rd Party Libraries 11
  • 12. Framework • PostSharp – Post Compilation Code Weaving – Used in: • Logging • MVC Action handling • Authorization – Version: 2.x (community) – URL: https://www.postsharp.net/ BEXIS Tech Talk #4: The 3rd Party Libraries 12
  • 13. Framework->PostSharp public class DiagnoseAttribute : OnMethodBoundaryAspect { public override void OnEntry(MethodExecutionArgs args) { var sw = new Stopwatch(); sw.Start(); args.MethodExecutionTag = sw; } … BEXIS Tech Talk #4: The 3rd Party Libraries 13
  • 14. Framework • NHibernate – Object Relational Mapping (ORM) – Configuration Based Mappings – … – Version 4 – URL: http://nhibernate.info/ BEXIS Tech Talk #4: The 3rd Party Libraries 14
  • 15. Vaiona • IoC • Logging • Entities • Persistence • Serialization • Web BEXIS Tech Talk #4: The 3rd Party Libraries 15 https://github.com/javadch/VWF.Mvc
  • 16. Vaiona -> IoC • Provides IoC services • Decouples the clients from any concrete IoC provider • Used in Logging, Persistence, Search • Configuration based for easy alteration • Multiple Mappings for each interface/implementation pair, suing namespaces BEXIS Tech Talk #4: The 3rd Party Libraries 16
  • 17. Vaiona -> Logging • AOP, cross-cutting functionality • Uses code interception and weaving techniques (PostSharp) • Aspects (intercept functions’ execution) – Trace: records call to methods – Performance: records methods’ execution time – Diagnose: records methods’ arguments & return values – Exception: records not caught exceptions • And log to a DB table using the loggers BEXIS Tech Talk #4: The 3rd Party Libraries 17
  • 18. Vaiona -> Logging //[RecordCall] //[LogExceptions] [Diagnose] [MeasurePerformance] public ActionResult Index(Int64 id=0) { LoggerFactory.LogCustom("Hi, I am a custom message!"); return View(); } BEXIS Tech Talk #4: The 3rd Party Libraries 18
  • 19. Vaiona -> Logging • Entity Logging – What happened to an entity – What happened to the relation between 2 entities • Custom Logging – Free style programmer friendly logging BEXIS Tech Talk #4: The 3rd Party Libraries 19
  • 20. Vaiona -> Logging • Log records capture information about the: – Web request (URL, agent, etc.) – User information (username) – Action performed (CRUD) – Call context (assembly, class, method) – Entity affected (id, type, relations affected) – Performance (execution time) – Diagnostics (parameters, arguments, return values) – General (date, time) BEXIS Tech Talk #4: The 3rd Party Libraries 20
  • 21. Vaiona -> Logging • Log management – Web.config switches <appSettings> <add key="IsLoggingEnable" value="false" /> <add key="IsCallLoggingEnable" value="true" /> <add key="IsPerformanceLoggingEnable" value="true" /> <add key="IsDiagnosticLoggingEnable" value="true" /> <add key="IsExceptionLoggingEnable" value="true" /> </appSettings> Custom logs are always written! BEXIS Tech Talk #4: The 3rd Party Libraries 21
  • 22. Vaiona -> Logging • Usage scenarios – System behavior monitoring – Bottleneck detection – Logical bug detection – User studies – Software improvement planning – Auditing – … BEXIS Tech Talk #4: The 3rd Party Libraries 22
  • 23. Vaiona -> Logging • Limitations – Not possible to turn it on/off on individual functions – Exceptions on the logging itself are not caught – Log records are persisted async; no guarantee on writing BEXIS Tech Talk #4: The 3rd Party Libraries 23
  • 24. Vaiona -> Entities • Base classes for: – Persisting Data Entities – Data Modification Auditing – Versioning and Concurrency Control – State Mgmt. BEXIS Tech Talk #4: The 3rd Party Libraries 24
  • 25. Vaiona -> Entities public class Party : BaseEntity { } public class Dataset : BusinessEntity { } BEXIS Tech Talk #4: The 3rd Party Libraries 25
  • 26. Vaiona -> Entities public abstract class BaseEntity : ISystemVersionedEntity { public virtual XmlNode Extra { get; set; } public virtual long Id { get; set; } public virtual int VersionNo { get; set; } BEXIS Tech Talk #4: The 3rd Party Libraries 26 public virtual void Dematerialize(bool includeChildren = true); public virtual void Materialize(bool includeChildren = true); }
  • 27. Vaiona -> Entities public abstract class BusinessEntity : BaseEntity, IStatefullEntity, IAuditableEntity { public virtual EntityAuditInfo CreationInfo { get; set; } public virtual EntityAuditInfo ModificationInfo { get; set; } public virtual EntityStateInfo StateInfo { get; set; } } BEXIS Tech Talk #4: The 3rd Party Libraries 27
  • 28. Vaiona -> Persistence • Persistence Mgmt. – Schema Export – DB creation – DB activity logging – Caching – Configuration – Session Sharing BEXIS Tech Talk #4: The 3rd Party Libraries 28
  • 29. Vaiona -> Persistence->Mappings (NHibernate) <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="BExIS.Dlm.Entities" namespace="BExIS.Dlm.Entities.DataStructure"> <class xmlns="urn:nhibernate-mapping-2.2" name="Unit" table="Units" dynamic-update="true" select-before-update="true"> <id name="Id" type="Int64"> <column name="Id" /> <generator class="native" /> </id> <version name="VersionNo" type="Int32"> <column name="VersionNo" /> </version> <property name="Name" type="String"> <column name="Name" /> </property> <property name="Abbreviation" type="String"> <column name="Abbreviation" /> </property> <property name="Description" type="String"> <column name="Description" /> </property> … BEXIS Tech Talk #4: The 3rd Party Libraries 29
  • 30. Vaiona -> Persistence-> Arrangement BEXIS Tech Talk #4: The 3rd Party Libraries 30
  • 31. Vaiona -> Persistence->Setup Starting up the IoC protected void Application_Start() { IoCFactory.StartContainer (Path.Combine(AppConfiguration.AppRo ot, "IoC.config") , "DefaultContainer"); … BEXIS Tech Talk #4: The 3rd Party Libraries 31
  • 32. Vaiona -> Persistence->Setup Exporting the schema protected void Application_Start() { IPersistenceManager pManager = PersistenceFactory.GetPersistenceManager(); pManager.Configure(AppConfiguration.DefaultApp licationConnection.ConnectionString, AppConfiguration.DatabaseDialect, "Default", AppConfiguration.ShowQueries); if (AppConfiguration.CreateDatabase) pManager.ExportSchema(); pManager.Start(); BEXIS Tech Talk #4: The 3rd Party Libraries 32
  • 33. Vaiona -> Persistence->Setup Registering the DB session manager for MVC actions public static void RegisterGlobalFilters (GlobalFilterCollection filters) { filters.Add(new PersistenceContextProviderFilterAttribute()); BEXIS Tech Talk #4: The 3rd Party Libraries 33
  • 34. Vaiona -> Persistence • Unit of Work – Transaction Mgmt. – Bulk operations using (IUnitOfWork uow = persistenceManager.GetUnitOfWork()) { IRepository<Unit> repo = uow.GetRepository<Unit>(); // more repos, more changes repo.Put(u); uow.Commit(); // applies all the changes } BEXIS Tech Talk #4: The 3rd Party Libraries 34
  • 35. Vaiona -> Persistence • Repository – CRUD operations on data entities – Keeps track of changes – Can return IQueryable for: • further querying • Dynamic querying – Accepts: • LINQ expressions • named queries • native queries BEXIS Tech Talk #4: The 3rd Party Libraries 35
  • 36. Vaiona -> Persistence using (IUnitOfWork uow = persistenceManager.GetUnitOfWork()) { var x = new Unit(); IRepository<Unit> repo = uow.GetRepository<Unit>(); repo.Get(p => p.Id == 21).First() .ConversionsIamTheSource.ToList() .ForEach(c => c.Source = x); var q = repo.Query(p => p.Abbreviation.StartsWith("m")); var w = from a in q where a.Dimension.Equals("Length") select (a); } BEXIS Tech Talk #4: The 3rd Party Libraries 36
  • 37. Vaiona -> Serialization • Entities need to be de/serialized in XML • Entities have attributes and relationships • Object graphs may create cycles BEXIS Tech Talk #4: The 3rd Party Libraries 37
  • 38. Vaiona -> Serialization [AutomaticMaterializationInfo( "Amendments", typeof(List<Amendment>), "XmlAmendments", typeof(XmlDocument))] public abstract class DataTuple : BaseEntity BEXIS Tech Talk #4: The 3rd Party Libraries 38 public abstract class BaseEntity { public virtual void Dematerialize(bool includeChildren=true){…} public virtual void Materialize(bool includeChildren=true){…} }
  • 39. Vaiona -> Web • Web Request Interception • MVC Action Interception –Authorization –Ambient Transaction Mgmt. • Web Session Mgmt. –Per session culture settings –Multi tenancy BEXIS Tech Talk #4: The 3rd Party Libraries 39
  • 40. Vaiona -> Web • Layout Mgmt. – Pages inherit layout from masters – Masters separate between arrangement and content – Arrangement in layout.cshtml file • HTML + placeholders – Content from services • Registered in layout.xml BEXIS Tech Talk #4: The 3rd Party Libraries 40
  • 41. Vaiona -> Web Layout.cshtml <body> <div id="informationContainer"> @Html.RenderAuto("Menu") </div> … BEXIS Tech Talk #4: The 3rd Party Libraries 41
  • 42. Vaiona -> Web Layout.xml <MapItem ContentKey="Menu"> <ContentProviders> <ContentProvider Area="Site" Controller="Nav" Action="Menu" Type="Action" Enabled="true"> <Parameters> <Parameter Name="oreintation" Value="1"/> </Parameters> </ContentProvider> </ContentProviders> </MapItem> BEXIS Tech Talk #4: The 3rd Party Libraries 42
  • 43. Lucene • Apache Lucene.Net • Search on – Metadata • Datasets created between 2010 and 2015 • Datasets in project sWEEP – Primary data • Datasets that contain value 22 • Datasets that contain information about “temperature” • Datasets that have a “temperature” column and that column contains values >= 22 BEXIS Tech Talk #4: The 3rd Party Libraries 43
  • 44. Outlook Whats next in the talk series? How to develop a module for BExIS BEXIS Tech Talk #4: The 3rd Party Libraries 44

Hinweis der Redaktion

  1. I will go into the details here because, 1) BExIS is using it heavily and 2) It is not documented somewhere else
  2. Virtual properties for NH transparent proxy-ing Virtual methods to be overridden by concrete classes