We require someone with good skills in: Silverlight, WCF, C#, SQL and ADO.NET.
We have a requirement to be able to display very large tabular sets of data from [url removed, login to view] data sources (possibly several million rows) in a Silverlight client application. These data sources are not known at design-time and have to be dynamically displayed at runtime.
We are looking for a reference implementation of a data grid that enables drill-down, sorting and potentially aggregation, and the associated back-end code.
We are developing a data analysis product with C# .NET 4.0, using Silverlight as the client technology and following the best practices outlined in the Microsoft Patterns and Practices Prism (Composite Application Guidance for WPF and Silverlight). The server end consists of WCF running within IIS.
At the moment we display in the client statistics that we generate from the sets of data being analysed but our customers would like to be able to view the actual data alongside these statistics and also drill-down to filter the sets of data. They also would like to be able to sort the data by clicking on the column header.
We therefore have a requirement to be able to display possibly very large tabular sets of data from [url removed, login to view] data sources (possibly several million rows). Clearly, we cannot download the set of data into the client initially, as this would take an unacceptably long time. Data needs to paged into the client, as the user moves the scroll bar on the grid.
Additionally, sorting and filter operations should happen at the server end. Sorting should take into account the datatype of the column, e.g. numeric columns should sort numerically, date time columns should sort into date order.
Initially we will be loading the data from SQLite databases but in the future we will want to support other databases too, e.g. SQL Server, DB2, Oracle, ODBC.
We are creating a generic tool, therefore we must able to attach to the source data at runtime. We need to be able to programmatically specify the connection details (provider, connection string, username and password), the SQL to use to create the dataset (e.g. "SELECT * FROM TABLEA"), the list of columns to display and any initial filter criteria. It should be possible to programmatically introduce a filter subsequently, for example.
The SQL will initially be relatively simple; single tables with filtering and sorting. Ideally the solution should allow arbitrary SQL specifying more complex datasets, involving multiple tables and complex aggregations.
Initially we would display the sets of data in a read-only fashion but a future requirement might be to allow the user to update the values from within the datagrid. Any proposed solution should not exclude this possibility.
The data must be secured during the transfer to the client. It should use HTTPS. It must also require the appropriate authentication to prevent unauthorised access.
We currently use the ComponentOne DataGrid (<[url removed, login to view]>) but are open to using other grids if the resulting solution would be better, for example:
<[url removed, login to view]>
<[url removed, login to view]>
The solution should support data in Unicode format and potentially right-to-left data. It should also gracefully handle binary data, in case the user inadvertently attempts to view such data.
We will provide a number of test databases.
Code should adequately commented and a document should be provided giving an overview of the design of the solution.
We are open to a custom solution but would prefer something based on standards such as: oData, IQueryable, etc.
As part of the proposal we want to understand the technical details of the proposed solution.
Once we have understood and agreed how the solution will work, we require a reference implementation of a Silverlight application containing a datagrid, along with the required back-end code to generically provide data to the client.
The delivery should include documentation of the final design of the solution and all source code as a Visual Studio solution, that compiles and runs successfully. At project completion we will take full ownership and copyright of the source code and other materials.
The demonstration Silverlight application must show how to:
* Open a dataset by specifying the [url removed, login to view] connection details and specifying the SQL.
* Apply a filter programmatically.
* Allow sorting of the data.
Additionally it should ideally allow:
* Grouping data
Agree design early January. Full delivery mid-February.
**Update - 4th January 2011:
We have been asked for some further information/clarification by various bidders. We have added the attached information (zipped .pdf) and extended the deadline by a week to the 12th January.
**Update - 24th January 2011:
In response to some further questions, we have added some further information to the attached zip file. It contains two pdf documents and some example SQLite snapshot databases. The previous update is included as vWorker seems to only allow one attachment per project.
Server: Windows .net 4.0 under IIS.
Client: Silverlight 4.0