SlideShare uma empresa Scribd logo
1 de 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

Mais conteúdo relacionado

Mais procurados

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
 
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.
 

Mais procurados (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
 

Destaque

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
 
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
 

Destaque (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?
 

Semelhante a 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
 
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
 
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
 
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
 

Semelhante a 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
 
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...
 
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 ...
 
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
 

Mais de 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
 

Mais de 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
 

Último

MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...Jittipong Loespradit
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024VictoriaMetrics
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is insideshinachiaurasa2
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...masabamasaba
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in sowetomasabamasaba
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 

Último (20)

CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 

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

Notas do Editor

  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