|By Heidi Bautista||
|February 2, 2004 12:00 AM EST||
If you're using Dreamweaver to build ASP.NET-driven Web sites, you've undoubtedly encountered DataSets. The DataSet tag, one of Macromedia's custom tags, interacts with a database via SQL statements like SELECT, INSERT, UPDATE, DELETE. You can also use it to execute stored procedures. The DataSet is to ASP.NET what the recordset is to ASP. Except that it's better, of course.
The most obvious application of the DataSet tag is to select data from a table in your database. The resulting dataset can be displayed in a variety of ways: in a DataGrid, DropdownList, or pretty much wherever you want in your page.
Another handy, though less obvious, function of the DataSet tag is to change data in a table (e.g., insert, update, or delete). In this case, the DataSet tag doesn't need to create an actual dataset, just perform some function.
In this article you'll learn about the attributes and methods available with the DataSet tag. I assume you've already set up an ASP.NET site within Dreamweaver - using either the Visual Basic or C# ASP.NET server model. (If you're not sure how this is done, select "Getting Started and Tutorials" from the Help menu. )
What's in a Name?
The DataSet tag written by Macromedia shouldn't be confused with the DataSet class included in the .NET Framework. Sure, they share the same name, but the two are quite different. Macromedia's DataSet is a custom tag. The Microsoft DataSet is a class in the .NET Framework. Macromedia's DataSet tag actually uses the .NET DataSet class within its implementation. In this article, the term DataSet can refer either to the DataSet tag or to the set of data created by the DataSet tag (I'll try to make it crystal clear which one I mean). But DataSet will not refer to the .NET DataSet class unless it is explicitly qualified by being preceded with ".NET."
The DataSet tag has several attributes that return commonly needed information like the number of records, the current page, etc. Even though the DataSet has a slew of attributes, only three are required: CommandText, ConnectionString, and runat. (Table 1 lists all of the DataSet attributes.)
The CommandText attribute can be either a SQL statement or the name of a stored procedure. If you want to use a stored procedure, you also have to use the IsStoredProcedure attribute. Set the Boolean IsStoredProcedure attribute to true to indicate that the string in the CommandText attribute is the name of a stored procedure. It turns out that the default value of IsStoredProcedure is false, so if you just leave it off the CommandText is automatically interpreted as a SQL statement.
Here's an example of using a SQL statement for the CommandText:
"SELECT LastName, FirstName FROM
dbo.Employees ORDER BY LastName"
Tip: The CommandText can also contain a binding expression. For example:
<%# (bUseNickname) ?
"SELECT RealName, Nickname
FROM dbo.Employees ORDER BY Nickname" :
"SELECT RealName, Nickname
FROM dbo.Employees ORDER BY RealName" %>'
This ternary expression stipulates that:
- If bUseNickname is true, the SELECT statement will be ordered according to the Nickname field.
- If bUseNickname is false, the SELECT statement will be ordered according to the RealName field.
You cannot break up the binding expression over multiple lines the way it's shown here. The entire binding expression has to be on one line. (You'll get a nasty runtime error otherwise.)
Parameterized SQL Statements
Certain portions of the SQL statement used in the CommandText can be parameterized. Parameterization can simplify the SQL statement, making it easier to read.
Only the value in a name/value pair within the SQL statement is legal for parameterization. Table II lists some of the name/value pairs that are candidates for parameterization.
The WHERE clause is a prime example of where a name/value pair is used. Keep in mind that the name and value need not be adjacent to each other (see the INSERT example). The ORDER BY clause cannot be parameterized since it doesn't follow the name/value paradigm.
The syntax for the parameter depends on which type of connection you are using: OLE DB or SQL Server.
Consider the following example of a SELECT statement:
WHERE col1="one" AND col2="two"
ORDER BY col2
If you replace the values in the name/value pairs in the WHERE clause with parameters, the statement becomes:
- Parameters must be uniquely named and start with the @ symbol.
- SQL Server connection parameters can be in any order.
WHERE col1=? and col2=?
ORDER BY col2
- All parameters use the ? symbol.
- With OLE DB connections, the order of the parameters is important. The placeholders used in the name/value pairs must correspond exactly to the order of the <Parameter> tags used to define the placeholders.
Continuing with the example given above, here are the required <Parameter> tags to define the parameters (depending on the connection type used).
SQL Server connection
<Parameter Name="@param1" Value='one'
<Parameter Name="@param2" Value='two'
OLE DB connection
<Parameter Value='one' Type="String" />
<Parameter Value='two' Type="String" />
- Notice that the <Parameter> tags for the OLE DB connection appear in the same order as the parameters are used in the SELECT statement. This is very important since all the parameters share the same name (the question mark, ?).
- The data type stipulated for the parameters must match the data type of the parameter. For example, in the <Parameter> tags above, the type is "String" but if the Value of @param1 was the integer 1, then the data type would be Integer (OLE DB) or Int (SQL Server).
The required ConnectionString parameter contains instructions for connecting to the database. You could hand-code this information, but the easier way to handle it is to create a connection. (Unless otherwise specified, the examples in this article use a SQL Server connection.)
In the DataSet dialog all you have to do is select one of the predefined connections from the Connection dropdown menu and voilá, the ConnectionString attribute is written for you (see Image I).
Here's an example of a ConnectionString:
(Keep in mind that you can't put a carriage return in the middle of a binding expression. Refer to the tip on page 12 for an explanation.)
The DataSet tag is a server-side control; it is processed on the server before being sent to the client. The default value for the runat attribute is "client" so you must explicitly set it to "server." Dreamweaver does this for you when it creates a DataSet tag.
The DataSet's optional attributes are grouped according to their function:
- Attributes that further refine the CommandText attribute
- Post-processing attributes
- Paging attributes
- Culling attributes
- Record-counting attributes
- Computed or created attributes
This optional Boolean attribute determines whether or not a dataset is created. That might seem odd since you'd think that the DataSet tag's whole purpose is to create sets of data. But remember that you can also use the DataSet tag to insert, update, delete, etc. Turns out that nothing bad will happen when you leave the CreateDataSet attribute at its default value of true when no records are returned. But it's good practice to set it to false in these cases.
The DataSet dialog does not have a checkbox for you to specify this value. If you want to set it to false, you have to do it directly in code view.
Tip: Notice that the value for this Boolean attribute is in double quotes. In order to be XHTML compliant, the values in all name/value pairs must be quoted (even if the value is a Boolean).
The Expression attribute is a particularly powerful one. It's also a Boolean whose default value is true. The value of the Expression attribute determines if the CommandText is executed.
If a DataSet tag is sitting on your page and its Expression attribute is either absent or set to true, it will execute when the page loads. But what if the purpose of the DataSet tag is to update the database based on values the user is supposed to enter on the page? Instead of running each time the page loads, what you really want is for the DataSet to execute after the page has been submitted (e.g., posted back). You can accomplish that goal with the following:
Expression='<%# IsPostBack %>'
(Of course, you'll probably want to do some error checking to make sure all the required information is available first.)
The DataSet dialog does not have a checkbox for you to specify the value of the Expression attribute. You'll have to type it directly into the code if you want its value to be anything other than the default value of true.
And yet another Boolean attribute. The IsStoredProcedure attribute (default is false) is used in conjunction with the CommandText attribute. If your CommandText is the name of a stored procedure, then this attribute must be true.
I bet you can't find a place on the DataSet dialog to set the IsStored- Procedure value. That's because Dreamweaver has an entirely separate Server Behavior for DataSets that execute stored procedures (see Image II).
It's still a DataSet, but Dreamweaver has simplified matters by providing a specific Server Behavior just for DataSets that execute stored procedures (see Image III).
Notice that it looks very similar to the DataSet dialog shown in Image I, but it prompts for the name of the stored procedure and its parameters rather than asking you to select a table and columns. In addition, the Stored Procedure dialog has a checkbox labeled Returns DataSet. The default is unchecked, which means that a DataSet is not created (in other words, the CreateDataSet attribute is false).
Dreamweaver's user interface separates the DataSet and Stored Procedure server behaviors into two separate commands for convenience and clarity in the dialogs. But keep in mind that they share the underlying code that supports the DataSet tag. Read through the DreamweaverCtrls.cs file to convince yourself.
If you installed Dreamweaver MX 2004 in the default location, you will find the Dreamweaver Ctrl.cs file in C:\Program\Files\Macromdia\DreamweaverMX 2004\Configuration\ServerBehaviors\Shared\ASP.net\Sripts\Source.
The TableName attribute is the name of the table that data is drawn from (default value is theTable). When you want information about the dataset most often you'll refer to the dataset's name rather than the table name. But the attribute is here for you in case you want to get into the guts of the custom DataSet tag. (Not surprisingly, the DataSet dialog doesn't have a spot on it for you to indicate the TableName. If you want to stipulate the name of the table you'll have to make this change directly in the code.)
The Debug attribute should be used during development only. The default value is false. When you set Debug to true and an exception is thrown you'll get some fairly intelligible comments from Dreamweaver to assist you in debugging the problem. You'll want to set this attribute to false (or just delete it altogether) before deploying the final version of the page so your site visitors don't get what looks like gobbledygook to them. The DataSet dialog has a checkbox for this attribute.
Also keep in mind that if you set Debug to true, the FailureURL attribute is ignored. When an exception is thrown, you'll get the debugging information instead of being redirected to the page specified by FailureURL.
Code 1 is an example of a DataSet tag with a problem with the ConnectionString attribute (it doesn't exist). Image IV shows the debugging information you'll see when you run the page.
Obviously Dreamweaver hasn't pinpointed the exact problem, but it does give you a pretty broad hint that you should look at the ConnectionString attribute.
The FailureURL attribute specifies the page that will display when an exception is thrown from the DataSet tag. If you have Debug="true", the FailureURL attribute is ignored. Once you have the bugs worked out, set Debug to false and create a user-friendly FailureURL page.
This attribute indicates the page to display when the DataSet's Command- Text has executed successfully. For example, suppose that the purpose of your DataSet tag is to update data in the database. Once it has done that successfully the SuccessURL page will appear saying that the update was successful. If you don't set this attribute, the page simply redisplays again.
CurrentPage and PageSize
When you have CreateDataSet="true" the DataSet tag returns all the records corresponding to the SQL statement specified in the CommandText attribute. If you're working with large amounts of data the size of the resulting dataset can easily bog down the performance of your page. Since you're probably not going to display a zillion rows on the page anyway, why get all the records?
The CurrentPage and PageSize attributes are meant to be used together. They tell the DataSet tag how many rows to get (the PageSize) and from where in the table to get them (CurrentPage). Note that the PageSize is zero-based so the first page corresponds to CurrentPage="0".
Consider the following example: let's say that your CommandText's SQL statement returns 63 rows. If you specify a PageSize of 10, that means you will have seven pages. The first six pages will have 10 rows each and the seventh page will have the remaining 3 rows. If you want to see the page with the 22nd row, then the CurrentPage would be 2.
Tip: If you're creating a dataset to be used as the data source for a DataGrid, be sure to use Dreamweaver's user interface to create the DataGrid. They've built in the correspondence between the DataSet's PageSize attribute and the DataGrid's PageSize attribute.
StartRecord and MaxRecords
Another way to indicate that you want just a subset of records rather than all the records corresponding to the SQL statement specified in the CommandText attribute is to use the StartRecord and MaxRecords attributes.
StartRecord is zero-based, so if you want the 10th through 25th record, then StartRecord="9" and MaxRecords="16". That is, StartRecord indicates the first record to get and MaxRecords indicates the total number of records to get.
Tip: Regarding the usage of the PageSize/CurrentPage and StartRecord/MaxRecords attributes:
- Use either PageSize and CurrentPage or StartRecord and MaxRecords, not both pairs of attributes. If both sets of attributes are specified, PageSize and CurrentPage are used and StartRecord and MaxRecords are ignored.
- If PageSize is greater than zero StartRecord is calculated automatically as (PageSize * CurrentPage).
This Boolean attribute defaults to true, meaning that the number of records in the DataSet will be calculated. If you don't need this value for your application, set the GetRecordCount to false. In fact, under certain circumstances you can improve performance with GetRecordCount=false.
The RecordCountCommandText attribute allows you to specify an explicit SQL statement to compute the record count. Typically, the statement is something like this:
Using the RecordCountCommand Text attribute is particularly important (performance-wise) when you've set PageSize to be greater than zero.
It turns out that under the hood Dreamweaver uses the DbDataAdapter.Fill method to fill the .NET DataSet object with rows from the data source. The Fill method returns the number of rows added to the .NET DataSet (e.g., the record count). If PageSize is greater than zero, the value returned from DbDataAdapter.Fill is exactly equal to the PageSize. When you're looking for the record count, that's not the number you want. That means that the MM:DataSet code has to do some extra work to compute the actual record count.
This is how Dreamweaver handles record counting when PageSize is greater than zero:
- If defined, the SQL statement in the RecordCountCommandText attribute is used to compute the record count.
- Lacking the RecordCountCommandText attribute, Dreamweaver next attempts to parse the string in the CommandText attribute of the DataSet tag. This method works only if the CommandText uses a SELECT statement and doesn't contain a UNION operator.
- Last and slowest, Dreamweaver will actually loop over the records in the .NET DataSet and count them.
One last note on the RecordCountCommandText: you can't parameterize it.
Computed or Created Attributes
In order to get the record count, both the CreateDataSet (otherwise you don't have a dataset to count!) and GetRecordCount attributes must be true.
The simplest calculation for the record count occurs when both PageSize and MaxRecords are zero. The RecordCount corresponds to the number of records retrieved by the CommandText.
If MaxRecords is greater than zero, the value returned in the RecordCount attribute takes the MaxRecords and StartRecord values into account. RecordCount is equal to MaxRecords so long as MaxRecords is not greater than the number of records you actually have.
If PageSize is greater than zero, the RecordCount calculation totally ignores it. See the RecordCountCommandText section above, which describes how the record count is computed when the PageSize attribute is greater than zero.
Tip: For more information on the record count (including performance aspects), search the DreamweaverCtrls.cs file for the CalculateRecordCount method and the GetRecordCount attribute.
This calculated value is either [(CurrentPage + 1) * PageSize] or the RecordCount (whichever is smaller). You could easily compute this value yourself when you need it, but Macromedia decided to supply it for you.
The LastPage attribute is calculated only when the PageSize is greater than zero and GetRecordCount is true. It's zero-based and computed from the RecordCount and PageSize.
The data stored in the DataSet is just that: data. In order to use the data as a data source for another object (i.e., an asp:DataGrid or asp:DropdownList), you need to specify the DataSet's view. For example, to use an MM:DataSet in a DataGrid, the DataSource attribute would be:
DataSource="<%# myDataSet.DefaultView %>
The DefaultView represents all of the data retrieved by the DataSet tag and in the same order that it was retrieved. If you wanted a subset of the data and/or the data ordered differently, you would need to create a new view to associate with the DataSet or change the CommandText of the DataSet so that it gets the subset you want and/or orders it the way you want it ordered.
Tip: The MM:DataSet tag retrieves records from a single table in the database; but that's a limitation of the MM:DataSet tag, not of the .NET DataSet object. If you look at the documentation for the .NET DataSet object, you'll see that it can contain data from one or more tables. The theDS attribute of the MM:DataSet tag is equal to the DefaultView of the table 0 in the .NET dataset.
myDataSet.DefaultView <==> theDS.Tables.DefaultView
- myDataSet is the ID of your MM:DataSet tag
- myDataSet.DefaultView is the default view of the data retrieved by the MM:DataSet tag
- theDS is the .NET dataset object returned by the MM:DatatSet tag
- theDS.Tables indicates the first (and only) table within the .NET dataset object
- theDS.Tables.DefaultView is the default view of the first table of the .NET dataset object
Near the beginning of this article, I briefly mentioned that the Macromedia DataSet tag uses the .NET DataSet class. The theDS attribute is that .NET DataSet object. It holds the records obtained when the MM:DataSet CreateDataSet attribute is true. What's it good for, you ask? Well, truth is you probably won't need it on a regular basis, but theDS attribute does provide a powerful "hook" into the underlying .NET DataSet object.
Consider the following example: you have a dropdown list populated with the contents of a DataSet, but you want the first item (e.g., option tag) of the dropdown list to be "Please select one" and the option's value to be 0 (see Image V).
<select name="sizeDropdown" id="sizeDropdown">
<option value="0">Please select one</option>
<option value="1">Extra small</option>
You can programmatically add that first option tag by utilizing the theDS attribute to add a new row to the .NET dataset.
The DataSet tag has two methods to help you access particular pieces of data within a DataSet. The methods are FieldValue and FieldValueAtIndex (see Code II).
Both of the DataSet methods return a string corresponding to the value of a named field (FieldName) within some row in the DataSet.
The FieldValue method returns the value of the named field from the first row (row 0). FieldValueAtIndex takes an additional parameter that indicates the specific row number. Note that rows are zero-indexed.
Since FieldValue acts on row 0, the following two function calls are equivalent:
DS_uidAndPwd.FieldValueAtIndex(0, "emailaddr", null)
To Use a Container or Not
The last argument for both DataSet methods is the name of the container. You use either the word Container or null. If the call to FieldValue or FieldValueAtIndex is within a DataGrid, DataList, or Repeater tag, then use Container. Otherwise, use null. For example, if you're calling FieldValue from the Page_Load function, you don't have a container so you should use null as the last argument.
Here's a quick example: you have a page with a DataGrid. The data source for the DataGrid is a DataSet that contains a list of e-mail addresses. Each row of DataGrid corresponds to a row in the DataSet so you have one e-mail address on each row.
The first thing you need to do in Dreamweaver MX is change the column data type from Simple Data Field to Free Form. This allows you to use an ItemTemplate. This is where you use the FieldValue("FieldName", Container) form of the method:
<asp:TemplateColumn HeaderText="emailaddr" Visible="True">
<%# DataSet1.FieldValue("emailad dr", Container) %>
Using Container in the call to FieldValue ensures that the appropriate DataSet row is used.
Tip: Curious about the meaning of Container? Check out the .NET documentation for the Eval method of the DataBinder class. The Container used in FieldValue and FieldValueAtIndex is identical to the Container used when you call DataBinder.Eval.
On the other hand, you should use null when you want to use a value from the dataset somewhere outside of a DataGrid, DataList, or Repeater. The following example prints out a single e-mail address from the 5th row of the dataset.
<%# DataSet1.FieldValueAtIndex(4, "emailaddr", null) %>
Well, there you have it. All the background information you need to start using the MM:DataSet tag. In its simplest form, the DataSet tag is quite easy to use. In its more complicated forms, the DataSet tag is very flexible. Everything that the DataSet tag does could be done without using Macromedia's custom tag but why bother when they've already done the legwork for you?
|Wayne Mueller 06/21/07 05:58:04 PM EDT|
With respect to the following statement
"You can programmatically add that first option tag by utilizing the theDS attribute to add a new row to the .NET dataset."
This is exactly what I am trying to do at the moment and pulling my hair out trying to figure it out. Do you have any code samples of how to do this?
SYS-CON Events announced today that Ocean9will exhibit at SYS-CON's 20th International Cloud Expo®, which will take place on June 6-8, 2017, at the Javits Center in New York City, NY. Ocean9 provides cloud services for Backup, Disaster Recovery (DRaaS) and instant Innovation, and redefines enterprise infrastructure with its cloud native subscription offerings for mission critical SAP workloads.
Mar. 29, 2017 09:30 PM EDT Reads: 2,420
Things are changing so quickly in IoT that it would take a wizard to predict which ecosystem will gain the most traction. In order for IoT to reach its potential, smart devices must be able to work together. Today, there are a slew of interoperability standards being promoted by big names to make this happen: HomeKit, Brillo and Alljoyn. In his session at @ThingsExpo, Adam Justice, vice president and general manager of Grid Connect, will review what happens when smart devices don’t work togethe...
Mar. 29, 2017 06:30 PM EDT Reads: 2,734
SYS-CON Events announced today that SoftLayer, an IBM Company, has been named “Gold Sponsor” of SYS-CON's 18th Cloud Expo, which will take place on June 7-9, 2016, at the Javits Center in New York, New York. SoftLayer, an IBM Company, provides cloud infrastructure as a service from a growing number of data centers and network points of presence around the world. SoftLayer’s customers range from Web startups to global enterprises.
Mar. 29, 2017 03:15 PM EDT Reads: 2,249
SYS-CON Events announced today that CA Technologies has been named “Platinum Sponsor” of SYS-CON's 20th International Cloud Expo®, which will take place on June 6-8, 2017, at the Javits Center in New York City, NY, and the 21st International Cloud Expo®, which will take place October 31-November 2, 2017, at the Santa Clara Convention Center in Santa Clara, CA. CA Technologies helps customers succeed in a future where every business – from apparel to energy – is being rewritten by software. From ...
Mar. 29, 2017 02:30 PM EDT Reads: 2,305
SYS-CON Events announced today that Technologic Systems Inc., an embedded systems solutions company, will exhibit at SYS-CON's @ThingsExpo, which will take place on June 6-8, 2017, at the Javits Center in New York City, NY. Technologic Systems is an embedded systems company with headquarters in Fountain Hills, Arizona. They have been in business for 32 years, helping more than 8,000 OEM customers and building over a hundred COTS products that have never been discontinued. Technologic Systems’ pr...
Mar. 29, 2017 02:30 PM EDT Reads: 3,853
SYS-CON Events announced today that Auditwerx will exhibit at SYS-CON's 20th International Cloud Expo®, which will take place on June 6-8, 2017, at the Javits Center in New York City, NY. Auditwerx specializes in SOC 1, SOC 2, and SOC 3 attestation services throughout the U.S. and Canada. As a division of Carr, Riggs & Ingram (CRI), one of the top 20 largest CPA firms nationally, you can expect the resources, skills, and experience of a much larger firm combined with the accessibility and attent...
Mar. 29, 2017 02:30 PM EDT Reads: 751
SYS-CON Events announced today that HTBase will exhibit at SYS-CON's 20th International Cloud Expo®, which will take place on June 6-8, 2017, at the Javits Center in New York City, NY. HTBase (Gartner 2016 Cool Vendor) delivers a Composable IT infrastructure solution architected for agility and increased efficiency. It turns compute, storage, and fabric into fluid pools of resources that are easily composed and re-composed to meet each application’s needs. With HTBase, companies can quickly prov...
Mar. 29, 2017 02:15 PM EDT Reads: 3,305
SYS-CON Events announced today that Loom Systems will exhibit at SYS-CON's 20th International Cloud Expo®, which will take place on June 6-8, 2017, at the Javits Center in New York City, NY. Founded in 2015, Loom Systems delivers an advanced AI solution to predict and prevent problems in the digital business. Loom stands alone in the industry as an AI analysis platform requiring no prior math knowledge from operators, leveraging the existing staff to succeed in the digital era. With offices in S...
Mar. 29, 2017 01:30 PM EDT Reads: 1,783
Buzzword alert: Microservices and IoT at a DevOps conference? What could possibly go wrong? In this Power Panel at DevOps Summit, moderated by Jason Bloomberg, the leading expert on architecting agility for the enterprise and president of Intellyx, panelists peeled away the buzz and discuss the important architectural principles behind implementing IoT solutions for the enterprise. As remote IoT devices and sensors become increasingly intelligent, they become part of our distributed cloud enviro...
Mar. 29, 2017 12:15 PM EDT Reads: 7,948
SYS-CON Events announced today that T-Mobile will exhibit at SYS-CON's 20th International Cloud Expo®, which will take place on June 6-8, 2017, at the Javits Center in New York City, NY. As America's Un-carrier, T-Mobile US, Inc., is redefining the way consumers and businesses buy wireless services through leading product and service innovation. The Company's advanced nationwide 4G LTE network delivers outstanding wireless experiences to 67.4 million customers who are unwilling to compromise on ...
Mar. 29, 2017 11:45 AM EDT Reads: 2,610
SYS-CON Events announced today that Infranics will exhibit at SYS-CON's 20th International Cloud Expo®, which will take place on June 6-8, 2017, at the Javits Center in New York City, NY. Since 2000, Infranics has developed SysMaster Suite, which is required for the stable and efficient management of ICT infrastructure. The ICT management solution developed and provided by Infranics continues to add intelligence to the ICT infrastructure through the IMC (Infra Management Cycle) based on mathemat...
Mar. 29, 2017 11:00 AM EDT Reads: 3,476
SYS-CON Events announced today that Interoute, owner-operator of one of Europe's largest networks and a global cloud services platform, has been named “Bronze Sponsor” of SYS-CON's 20th Cloud Expo, which will take place on June 6-8, 2017 at the Javits Center in New York, New York. Interoute is the owner-operator of one of Europe's largest networks and a global cloud services platform which encompasses 12 data centers, 14 virtual data centers and 31 colocation centers, with connections to 195 add...
Mar. 29, 2017 10:15 AM EDT Reads: 1,770
SYS-CON Events announced today that Cloudistics, an on-premises cloud computing company, has been named “Bronze Sponsor” of SYS-CON's 20th International Cloud Expo®, which will take place on June 6-8, 2017, at the Javits Center in New York City, NY. Cloudistics delivers a complete public cloud experience with composable on-premises infrastructures to medium and large enterprises. Its software-defined technology natively converges network, storage, compute, virtualization, and management into a ...
Mar. 29, 2017 10:00 AM EDT Reads: 2,377
In his session at @ThingsExpo, Eric Lachapelle, CEO of the Professional Evaluation and Certification Board (PECB), will provide an overview of various initiatives to certifiy the security of connected devices and future trends in ensuring public trust of IoT. Eric Lachapelle is the Chief Executive Officer of the Professional Evaluation and Certification Board (PECB), an international certification body. His role is to help companies and individuals to achieve professional, accredited and worldw...
Mar. 29, 2017 08:45 AM EDT Reads: 974
In his General Session at 16th Cloud Expo, David Shacochis, host of The Hybrid IT Files podcast and Vice President at CenturyLink, investigated three key trends of the “gigabit economy" though the story of a Fortune 500 communications company in transformation. Narrating how multi-modal hybrid IT, service automation, and agile delivery all intersect, he will cover the role of storytelling and empathy in achieving strategic alignment between the enterprise and its information technology.
Mar. 29, 2017 08:00 AM EDT Reads: 7,585
Microservices are a very exciting architectural approach that many organizations are looking to as a way to accelerate innovation. Microservices promise to allow teams to move away from monolithic "ball of mud" systems, but the reality is that, in the vast majority of organizations, different projects and technologies will continue to be developed at different speeds. How to handle the dependencies between these disparate systems with different iteration cycles? Consider the "canoncial problem" ...
Mar. 29, 2017 06:00 AM EDT Reads: 9,103
The Internet of Things is clearly many things: data collection and analytics, wearables, Smart Grids and Smart Cities, the Industrial Internet, and more. Cool platforms like Arduino, Raspberry Pi, Intel's Galileo and Edison, and a diverse world of sensors are making the IoT a great toy box for developers in all these areas. In this Power Panel at @ThingsExpo, moderated by Conference Chair Roger Strukhoff, panelists discussed what things are the most important, which will have the most profound e...
Mar. 29, 2017 04:00 AM EDT Reads: 15,154
Keeping pace with advancements in software delivery processes and tooling is taxing even for the most proficient organizations. Point tools, platforms, open source and the increasing adoption of private and public cloud services requires strong engineering rigor - all in the face of developer demands to use the tools of choice. As Agile has settled in as a mainstream practice, now DevOps has emerged as the next wave to improve software delivery speed and output. To make DevOps work, organization...
Mar. 29, 2017 03:45 AM EDT Reads: 2,210
My team embarked on building a data lake for our sales and marketing data to better understand customer journeys. This required building a hybrid data pipeline to connect our cloud CRM with the new Hadoop Data Lake. One challenge is that IT was not in a position to provide support until we proved value and marketing did not have the experience, so we embarked on the journey ourselves within the product marketing team for our line of business within Progress. In his session at @BigDataExpo, Sum...
Mar. 29, 2017 03:30 AM EDT Reads: 3,290
Web Real-Time Communication APIs have quickly revolutionized what browsers are capable of. In addition to video and audio streams, we can now bi-directionally send arbitrary data over WebRTC's PeerConnection Data Channels. With the advent of Progressive Web Apps and new hardware APIs such as WebBluetooh and WebUSB, we can finally enable users to stitch together the Internet of Things directly from their browsers while communicating privately and securely in a decentralized way.
Mar. 29, 2017 03:00 AM EDT Reads: 6,128