dolittle / bifrost Goto Github PK
View Code? Open in Web Editor NEWThis is the stable release of Dolittle till its out of alpha->beta stages
License: Other
This is the stable release of Dolittle till its out of alpha->beta stages
License: Other
The mongo entitycontext is missing some functionality, like Delete.
Also, you can only retrieve all entities of a type at once, while it might have been nice to be able to use mongo specific features like findOne().
More specifically the MergeSubscribersFromRepository() method on EventSubscriptionManager is called often and has a substantial performance impact
Build the DocumentX project and publish the resulting HTML to the Bifrost Pages and also the CHM file for downloading from somewhere
Today the URL that is generated when navigating says : ?feature=[name of feature], it should be more like something :
?navigation={container1:[name of feature],container2:[name of another feature]}
And also work into this parameters for the features themselves for the loaded() function that should be supported
Ref discussion at the forums: https://groups.google.com/d/topic/bifrostproject/FemNljyt5Rc/discussion
As a part of pushing sagas forward, a chapter needs some sense of where it's transitioning to / from.
Similar functionality to what is known in Silverlight for handling this
In many cases you need to have additional information related to a command that does not exist in the client or the client should not be responsible for, for instance if you have a shopping cart and you want to add an item to it and you want it to be added with the current price of the product but don't want the price to come from the client as it can be tampered with. CommandMetaData could then fill this gap.
Bifrost should automatically pick up any classes implementing CommandMetaDataDescriptor or similar for the specific command and make sure it populates the meta-data on the command.
When a command is executed, it is being executed in a certain context. This context can contain anything. It should be a write-once object, which makes it only possible to write to when Bifrost asks for it to be populated. That way you can't populate it from anywhere and pollute it and make it a "god"-object.
Lets say you have a main page that handles all navigation, within it it binds a to a property for feature using the feature bindingHandler.
Within the features it navigates to, there are compositions that include other features, these will get initialized in the correct order when hitting the first time, but any subsequent navigation within memory will not guarantee the ordering of initialization for the binding contexts (ViewModels)
The hookup should support a way to create a start page that loads it all - the entry point of any applications.
When gathering MetaData for validation, today the gathering is only being done on first-level, not recursing through the properties. Some properties might not have validator rules directly on them, but have validators associated with them that has rules on second level properties and so forth..
Affects for now NHibernate and any other implementations that has a specific mapping towards its datasource
A way to hold meta data that will be attached to Commands and Events. This MetaData can typically contain tenant information and in a Web context is built on a per request basis. The MetaData is considered cross cutting through all concerns and can be read out by every aspect of the system, but only assigned by its owning application (IApplication)
Assembly version number needs to be updated during continuous integration build.
Possible strategy for versioning : http://semver.org/
Any server side validation errors as a result of a Command execute() should be put back into the parameters validators of the command as a result
Today the existing solution for passing values along to method arguments is only using FORM values in the request. This should be refactored into something that uses a value provider model with the opportunity of having multiple providers.
For now the natural ones would be :
Root of repository holds a Packages folder, within here there is a folder representing each package. Within each folder, there should be a file by convention holding information about what actual projects (By name) are involved in creating the package. For all the platforms, we will go by convention and get the binaries and put them in to the correct folder within the packages folder structure according to the Nuget convention for packages. Then the build will do a "nuget pack" based on the nuget spec.
When the revision number only changes (continuous build typically), we push the packages to our own nuget server. If the build number or any of the other numbers change (basically the revision is 0), we push to the official nuget repository.
For search engine crawlers that are not capable of executing the JavaScripts needed to render the composed page we need to execute the JavaScripts on the server - basically use something like Env.js and just throw it same URL and let it render everything and then spit out the HTML as a result.
One thing that is very important to make note of is that we need to be able to know when the composition is done - so Bifrost needs to publish a message/event in the DOM when it is done
Add .Get() method that takes an object as the key. The different implementations should throw an exception if the particular object type is not defined with a key or it has a composite key and it is not able to resolve the key from the single object going in.
Any internal implementations using .Any() or .Where(e => e.Id == id) or similar on the Entities queryable should be optimized to use this new approach.
Knockout 2.1.0 was released, it would be nice to upgrade bifrost to use it.
When the js files aren't in ANSI format, the resulting concatenated file get's some strange encoding marks.
This works fine with production code, but plays havoc when testing with jstestdriver / forseti.
Could be the runner, or could be the testing-framework (jasminebdd), but it certainly makes for some strange issues :)
When a command has gone through an event source and is ready to be committed, the client should be blissfully unaware of what happens next and we can return to the client from this point. By then making the commit async, we can return directly and just keep on processing on the server.
The implementation is using a cast after SingleOrDefault().
Look at casting during select instead :
public T Get(Guid id)
{
if( typeof(T).HasInterface<IHaveId>() )
{
var queryable = (IQueryable<IHaveId>)Query;
var instance = (from o in queryable
where o.Id == id
select o).SingleOrDefault();
return (T)instance;
}
throw new ObjectDoesNotHaveIdException();
}
public T Get(Guid id)
{
if( typeof(T).HasInterface<IHaveId>() )
{
var queryable = (IQueryable<IHaveId>)Query;
var instance = (from o in queryable
where o.Id == id
select (T)o) // LARS: note the addition of (T) cast here
.SingleOrDefault();
return instance; // LARS: (T) cast not necessary here anymore
}
throw new ObjectDoesNotHaveIdException();
}
Similar to what is in Silverlight, a manager for handling visual states :
<div data-visualstatemanager="[configuration]">
<div data-visualstate="[name of state]">
</div>
<div data-visualstate="[name of state]">
</div>
</div>
Configuration will contain information about all the states and configuration related to them, such as transitions between states. Animations and such.
Appears to be an extra slash in the URLs generated when requiring the view and the viewModel
GET http://localhost:2787/admin/services//view.html 400 (Bad Request) text.js:7
GET http://localhost:2787/admin/services//viewModel.js 400 (Bad Request)
Design a cross cutting caching mechanism that can be used for caching entities, especially designed for EntityContext, but not tied into specifics of how caching is done for concrete implementations such as nHibernate or others.
Figure out a good design that makes it possible to have one way of enabling caching across the board for EntityContext and Views
Abstract away the History plugin and add special purpose navigateTo() function
Sometimes you have strings that need formatting - they have things that need to be dynamically replaces. In order to make these "dependencies" explicit, we should have the support for methods that should be abstract and then have the signature return a string, and the arguments for the formatting explicitly sit on the method signature
Events, EventSubscriptions, Sagas and so forth should be able to be configured to persist to different storages. In addition, entities of different types should also be able to come from different storages.
Today we only support JSON in and out of services, I think it would be helpful if we could add XML and also investigate into supporting ProtoBuf
The reasoning behind protocol buffer support is for decreasing the bandwidth used in transferring data back and forth for a client. I think a good idea here would be to have a general service layer that can be configured for what content type to use by default. This basically to improve on developer experience during development. Its easier to look at a JSON response than a protocol buffer one. :)
Instead of doing a post back to the server for getting validation rules every time a command is created, cache it by type name/type
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.