Quantcast
Channel: Category Name
Viewing all 10804 articles
Browse latest View live

Introducing the redesigned Security Center Overview dashboard

$
0
0

Azure Security Center’s dashboard has been redesigned to provide cross-subscription, organizational level reports of the most important metrics that influence the organizational security posture, as well providing actionable insights to help organizations improve their overall security posture.

The redesigned dashboard also introduces two new concepts in Security Center:

Subscription Coverage: This metric presents the Security Center status of all subscriptions the user has (at least) read access to and helps identify subscriptions lack adequate security controls. NOTE: In order to gain visibility to all subscriptions under your AAD tenant, it is required to set either a Reader, Security Reader or Security Administrator role on the root Management Group. To learn more about the Azure Management Groups integration with Security Center, visit Integrate Security Center security policies with Azure Policy.

Policy Compliance: This metric conveys the organization’s adherence to the security policies assigned to its resources. Security Center1
Actionable insights reside on the right-hand side of each of their respective areas and include the following:

Policy and compliance: Policy compliance over time, connecting Security Center to a SIEM solution and a guide to using security policies in Security Center

Resource security hygiene: Most prevalent recommendations and highest impact recommendations

Threat protection: Most prevalent alerts, subscriptions that have no security contact defined

Policy Compliance
 
These insights highlight areas that can assist an organization identify the actions the organization may take in order the improve its overall security posture, for example:

  • A common security hygiene issue that affects a large number of resources – the organization can launch a campaign to deploy an endpoint protection solution all across its VMs, or enabling encryption on its data/storage assets
  • A resource that is frequently getting attacked (therefore having many alerts) – strengthen the protection around it to reduce the attack surface
  • A change in the trend of the organization’s overall compliance in specific points in time – identify the events that cause the overall compliance to change and address them – for example, an event where a new application was launched, which included multiple resources that do not comply to the organizational security policy, and ensuring future launches will be compliant from the get go

For additional information about the new design, metrics and usage of Azure Policies in Security Center, please refer to the following articles:

Get started with Azure Security Center today.


Maven: Deploy Java Apps to Azure with Tomcat on Linux

$
0
0

We are pleased to announce a new feature in the Maven Plugin for Azure App Service. The plugin provides seamless integration of Azure services into Maven projects. With only one step, you can deploy your WAR file to Azure Web Apps on Linux with the built-in running stack of Java 8 and Tomcat 8.5 or 9.0. By leveraging Maven, the Azure App Service plugin is portable and can be integrated with your IDEs and CI/CD pipelines easily.

Web apps with Tomcat on Linux

A couple of months ago, we announced the preview release of built-in support for Java 8 and Tomcat 8.5/9.0 on Web Apps on Linux. This allows developers to get their Java apps up and running on Azure in a managed environment, benefitting from auto-scaling and high availability.

Getting started with Maven

After creating a new Azure Web App, choose Linux for OS and Tomcat as stack. Save the information of this new Web App to configurate the Maven plugin. Open the pom.xml file and add the following settings in the <configuration> section.

   <!-- Web App information -->
   <resourceGroup>your-resource-group</resourceGroup>
   <appName>your-app-name</appName>
             
   <!-- Java Running Stack for Web App on Linux-->
   <linuxRuntime>tomcat 8.5-jre8</linuxRuntime>
 
   <!-- Deployment Type -->
   <deploymentType>war</deploymentType>

More detailed configurations are available on GitHub.  

Run it

Open your command line tool and sign in with the Azure CLI 2.0. Type the following command and it will build the project to a .war file and deploy it to your Azure Web App automatically.

$ mvn clean package azure-webapp:deploy

Terminal

It’s done! You can now open a browser to the URL of your app to visit your Java website running on Azure.

Check out our project on GitHub and learn about advanced features of Maven plugin for Azure App Service.

Next steps

More information about building Java apps on Azure:

Feedback

Please share your feedback and ask questions to help us improve below or on GitHub.

Azure Data ingestion made easier with Azure Data Factory’s Copy Data Tool

$
0
0

Azure Data Factory (ADF) is the fully-managed data integration service for analytics workloads in Azure. Using ADF users can load the lake from 70+ data sources, on premises and in the cloud, use rich set of transform activities to prep, cleanse, process the data using Azure analytics engines, and finally land the curated data into a data warehouse for reporting and app consumption. With ADF you can iteratively develop, debug, and continuously integrate and deploy into dev, QA, and production environments, enabling you to achieve productivity during development phrase as well as operationalize and manage your Extract Transform Load /Extract Load Transform workflows holistically.

All analytics solutions start with loading data from diverse data source into data lake. As part of January 2018 release of ADF Visual Tool, we released Copy Data Tool which allows you to easily set up a pipeline to accomplish the data loading task in minutes, without having to understand or explicitly set up Linked Services and datasets for source and destination. We continuously listened to your feedback and today we are happy to announce the latest set of enhancements to the Copy Data Tool making it easier to ingest data at scale:

Support ingesting data at scale for all 70+ on-prem and cloud data sources

Copy Data Tool now supports all 70+ on-prem and cloud data sources, and we will continue to add more connectors in the coming months. Tell us if you do not find the connector you are looking for in the list.

clip_image002

Ingest tens of thousands of tables into Azure at scale

Using Copy Data Tool you can now browse and select tens or thousands of tables from data sources to be loaded. Use default settings or customize per-table column mapping logic that best suites your specific needs. Upon deployment, Copy Data Tool automatically generates a parameterized pipeline containing each plus copy activity, which means you do not end up with large number of pipelines and datasets for loading multiple tables.

clip_image004

Support both schedule trigger and tumbling window trigger

clip_image006

Please send us your feedback as you get started on your modern data warehouse journey. Starting with building your data ingest pipelines! We are eagerly awaiting your feedback so we can continuously improve our feature set and experience offering. We look forward to hearing from you!

Enabling Smart Manufacturing with Edge Computing

$
0
0

Smart Manufacturing envisions a future where factory equipment can make autonomous decisions based on what’s happening on the factory floor. Businesses can more easily integrate all steps of the manufacturing process including design, manufacturing, supply chain and operation. This facilitates greater flexibility and reactivity when participating in competitive markets. Enabling this vision requires a combination of related technologies such as IoT, AI/machine learning, and Edge Computing. In this article, we will introduce Edge Computing and discuss its role in enabling Smart Manufacturing.

What is Edge Computing?

Put simply, Edge Computing is about taking code that runs in the cloud and running it on local devices or close to it. Like in a gateway device or a PC sitting next to the device.

To understand Edge Computing it helps to think of an IoT solution as generally having three components:

  • Things like IoT devices, which generate sensor data.
  • Insights you extract from this data.
  • Actions you perform based on these insights to deliver some sort of value.

With Edge Computing, you move the insights and actions components from the cloud to the device. In other words, you bring some of the code used to process and extract insights from the data, and perform some action in response to it right into the device.

image

Edge Computing model

You may still want to send data to the cloud for further processing and actions, but now you have the option of balancing your workloads more efficiently based on latency, compute power, or data privacy requirements. Notably, one of the things we can move to the edge is machine learning and AI algorithms. When we do this, we say that we have an intelligent edge.

When is Edge Computing useful?

Edge computing is useful in the following situations frequently found in manufacturing:

  • Mission-critical scenarios where you need real-time insights for quick decision making. Basically, when the electrons cannot travel fast enough to the cloud and back, to do what you need to do. Think about an autonomous vehicle approaching a red light. It can’t afford the second delay to route the message to the cloud and wait for a command back. When the car sees a red light, it needs to perform analytics in a closed loop and stop immediately. Increasingly, these insights are being provided by machine learning models running on the device, performing predictive analytics, anomaly detection, image recognition, and classification.
  • Remote sites where cloud connectivity is not stable or economical. For example, remote oil fields send data to the cloud only twice a day via satellite connection.
  • Geographies where compliance and data residency are critical. You can pre-process sensitive data locally within a sovereign or organizational boundary.
  • Avoiding transferring terabytes of raw data between devices and the cloud to reduce bandwidth costs. You can perform data cleaning and aggregation locally.

image
Remote oil fields are prime candidates for Edge Computing

How does Edge Computing compare to private cloud?

Private cloud is essentially a model of cloud where IT services are provisioned over private infrastructure for the dedicated use of the organization. Private cloud is best suited where you have cloud applications or application components that need to be deployed on-premises to overcome latency, connectivity, or regulatory requirements like when you need to isolate your environment from the public cloud.

Edge Computing, on the other hand, is about running computations on the device, and communicating to the cloud when needed. Now, the cloud these devices communicate with can be the public or private cloud. The device doesn’t really care.

Edge and private cloud can be operating in the same environment. A good example would be a cruise ship where passenger services and navigation apps would run on the private cloud, and engine maintenance would run on the edge.

Now, to make things more interesting, there is also the option of running a hybrid cloud. Which is a combination of private and public. In fact, many companies run their cloud environments this way because it gives them the best of both worlds. The latency and privacy of the private cloud, with the scalability and economies of scale of the public cloud. So, as you can imagine, you can have scenarios where you are running a hybrid cloud environment, with some things running in the public cloud and some things running in the private cloud. In addition, your IoT devices are running Edge Computing with some things running on the devices and some things running on the cloud.

image

Hybrid Cloud and Edge Computing Scenario

How does Edge Computing enable Smart Manufacturing?

The smart part of smart factory is about autonomy. The ability of some asset or piece of equipment to make decisions based on what’s going on in the factory floor without the need of human intervention, these are decisions that are not necessarily pre-programmed in some factory control system. The aim of Smart Manufacturing is to utilize a more programmatic data-led approach to develop new and higher quality goods faster. Edge Computing can enable this autonomy where machines in the factory floor extract insight and formulate actions at near real-time. Running AI/machine learning algorithms in their own electronics, almost as if they had their own brains!

Consider this example where you have two robots that are performing some task. The robots are connected to an edge device that is running a machine learning model listening to sensor data from the robots and whose mission is to predict an impending failure.

image

When the machine learning model determines that one of the robots is about to fail, it triggers actions. These actions may include stopping or slowing down the line that feeds the robot in trouble, and/or triggering a process in the cloud to create a service request in some line-of-business application.

What does Azure offer to enable Edge Computing?

The service Azure offers to enable Edge Computing is called Azure IoT Edge. IoT Edge is made up of three components:

  • Azure IoT Edge modules are containers that run Azure services, 3rd party services, or your own code. They are deployed to IoT Edge devices and execute locally on those devices.
  • The Azure IoT Edge runtime runs on each IoT Edge device and manages the modules deployed to each device. An interesting fact is this runtime will be open sourced to the developer community so that they can make changes and additions to it.
  • A cloud-based interface enables you to remotely monitor and manage IoT Edge devices.

image

Getting started

As with any new technology, our recommendation is to start small to quickly prove its value while limiting the risk to an acceptable level. Pick a business problem you want to solve, refer to the “When is Edge Computing useful?”section above for ideas and set up a team to work on it.

Learn more about IoT Edge, including quick starts and tutorials to get you started.

Immutable storage for Azure Storage Blobs now in public preview

$
0
0

Financial Services organizations regulated by SEC, CFTC, FINRA, IIROC, FCA etc. are required to retain business-related communication in a Write-Once-Read-Many (WORM) or immutable state that makes it non-erasable and non-modifiable for a certain retention interval. The immutable storage requirement is not limited to financial organizations, but also applies to industries such as healthcare, insurance, media, public safety, and legal services.

Today, we are excited to announce the public preview of immutable storage for Azure Storage Blobs to address this requirement. The feature is available in all Azure public regions. Through configurable policies, users can keep Azure Blob storage data in an immutable state where Blobs can be created and read, but not modified or deleted.

Typical applications include:

  • Regulatory compliance: Immutable storage for Azure Blobs is designed to help financial institutions and related industries address SEC 17a-4(f), CFTC 1.31©-(d), FINRA etc. A technical whitepaper with details on how the feature addresses these regulatory requirements will be available soon. The Azure Trust Center contains detailed information about our compliance certifications.
  • Secure document retention: Users receive maximum data protection as the immutable storage feature for Azure Blobs service ensures that data cannot be modified or deleted by any user including those with account administrative privileges.
  • Legal hold: Immutable storage for Azure Storage Blobs enables users to store sensitive information critical to a litigation, criminal investigation, and more in a tamper-proof state for the desired duration.

Immutable storage for Azure Storage Blobs enables:

  • Time-based retention policy support: Users set policies to store data immutably for a specified interval of time.
  • Legal hold policy support: When the retention interval is not known, users can set legal holds to store data immutably until the legal hold is cleared.
  • Support for all Blob tiers: WORM policies are independent of the Azure Blob Storage tier and will apply to all the tiers, hot, cool and archive. This allows customers to store the data in the most cost optimized tier for their workloads while maintaining the data immutability.
  • Blob Container level configuration: immutable storage for Azure Storage Blobs allows users to configure time-based retention policies and legal hold tags at the container level. Users can create time-based retention policies, lock policies, extend retention intervals, set legal holds, clear legal holds etc. through simple container level settings. The policies apply to all the Blobs in the container, both existing and new Blobs.

Immutable data is priced in the same way as mutable data and there is no additional charge for using this feature. Please refer to the Azure Storage Pricing page for the related pricing details.

How to get started

To use this feature, you must create a GPv2 account through the Azure Resource Manager. For more details on how to enable this feature, please refer to the immutable storage for Azure Storage Blobs documentation.

Immutable Storage for Azure Storage Blobs is supported on the most recent releases of Azure Portal, CLI 2.0, PowerShell (version 4.4.0-preview), .net Client Library (version 7.2.0-preview), node.js Client Library (version 4.0.0), and Python Client Library (version 2.0.0 Release Candidate 2).

You can also directly use the Storage Services REST API. This feature is supported on Blob Service REST API version 2017-11-09 and greater and on Azure Storage Resource Provider REST API version 2018-02-01 and greater. In general, we always recommend using the latest versions regardless of whether you are using the feature or not.

Preview feedback

We’re confident that immutable storage for Azure Storage Blobs will provide another critical element for optimizing your organization’s cloud data storage and compliance strategy. We look forward to hearing your feedback on this feature, please email us at AzureStorageFeedback@microsoft.com.

Bing Maps Location Recognition API Now Generally Available

$
0
0

Today, we are pleased to announce the general availability release of the Bing Maps Location Recognition API that we previewed in last month’s blog post. Supercharge your applications to provide users with more context about what is nearby. Given a location (latitude, longitude) the Bing Maps Location Recognition API returns a list of entities at the location. The different components of the API response provide a comprehensive description of the location. The API response consists of:

  • Business entities situated at the location. A wide variety of entity types are supported (e.g. restaurants, hotels, parks, gym, shopping malls and more).
  • Natural entities at the location (e.g. beaches, island, lakes and 9 other types).
  • Reverse geocoded address of the input location, with neighborhood and street intersection information where available.
  • Type of property (e.g. residential, commercial) situated at the location.

For more details on the entities returned please see the Bing Maps Location Recognition Entity Types documentation.

The Bing Maps Location Recognition API is a high-powered reverse geocoding service that is great for use cases where you want to provide users with insightful details about what is at or near a specified lat/long. The Bing Maps Location Recognition API helps answer questions such as what are the businesses and points of interest near a real estate property that I am interested in buying? What is the address associated with a given lat/long? Is it a private residence? What neighborhood am I in?

A good example of the Bing Maps Location Recognition API in use is the trip labeling feature of MileIQ. MileIQ is a leading mileage tracking app using the Location Recognition API to make it easy for users to label the start and end of their trips. The Location Recognition API is providing friendly names of locations visited by a user in their trip, using these suggestions MileIQ users can easily label their trips.

Bing Maps Location Recognition API

Get Started

We encourage you to try the Bing Maps Location Recognition API using your Bing Maps API key and explore the useful location data it provides for use in your applications.

For more information about the Bing Maps Platform, how to get licensed, and frequently asked questions, visit our website. Please connect with us on the Bing Maps Forum to share your thoughts and let us know what additional features you’d like to see us support.

- Bing Maps Team

Improved JavaScript and WebAssembly performance in EdgeHTML 17

$
0
0

In every release of Microsoft Edge, we tune the Chakra JavaScript engine to provide better startup and execution performance, with a leaner memory footprint, and with improved responsiveness on real-world workloads.

As EdgeHTML 17 rolls out to users as part of the Windows 10 April 2018 Update, we’d like to dive into some of the optimizations we’ve made in the Chakra engine in this release. These ongoing optimizations can have a dramatic impact on the day-to-day browsing experience for end users, resulting in faster sites and web apps.

Leaner memory footprint

(Re-)defer parsing for arrow functions and object literals methods

Over the past two Windows releases, we have been improving Chakra’s defer- and re-defer-parsing pipeline, allowing pages to start up faster while consuming less memory.

When given a script, Chakra performs a quick pre-parse check for syntax errors and defers the full parsing of any eligible function until it is first called. Re-deferring happens at a later point when Chakra heuristics determines that a fully parsed function is unlikely to be called again, in which case Chakra releases the memory holding the metadata generated during full parsing and leaves the function effectively in a state as if it had been just pre-parsed and deferred.

In EdgeHTML 17, we have continued to invest in this pipeline, and extended the list of functions eligible to include arrow functions and methods on object literals.

// parsing of these functions are deferred until called
// arrow functions
let addOne = (x) => {x + 1};
 
// object literal methods   
let john = {
  name: 'John Doe',
  get name() {return this.name}, 
  greet() {console.log('Hello')}
};

The impact of this change can vary depending on the sites, but our early experiments show an average memory savings of 7% on from this and a few other memory improvements in EdgeHTML 17.

RegExp bytecode refactoring

Many Microsoft Edge users rely on extensions for ad blocking and related scenarios to control their experience while browsing the internet. Some ad blocking extensions are built using a considerable amount of RegExp logic, which motivated us to make a series of bytecode refactoring changes for a leaner experience when running with these extensions enabled in Microsoft Edge.

Most significant among those changes is that Chakra condensed RegExp opcodes from 4 bytes to 1 and packed the structs. While the consequential unalignment might imply a performance slowdown, data collected on various scenarios indicates that it shouldn’t cause any visible performance regression.

Bar chart showing bytecode before (68 bytes) and after (41 bytes) condensing

As a result of this refactoring, Chakra was able to reduce RegExp bytecode memory in some popular extensions in this release by up to 10%, savings that should be reflected in other apps or sites using RegExp as well.

Faster JavaScript built-ins

In addition to memory savings, EdgeHTML 17 brings improvements to several JavaScript built-ins, building on optimizations initially enabled in EdgeHTML 16.

Type sharing for Object.create

Object.create is used to support JavaScript inheritance and null is also often tossed in to create a lean and mean dictionary/property bag. Chakra has an internal type system, and each object in Chakra is represented with an internal dynamic type. Many Chakra optimizations depend on objects with similar layout sharing types with each other. For example, inline caches can store fast paths for various types encountered at call sites, and objects with the same or an equivalent type are able use the same fast path as the cached type.

Diagram illustrating type sharing for Object.create in Chakra

Type sharing between {x: 1}, {x: 2, y: 2}, {x: 3, z: 3}

Previously, however, objects created by Object.create were associated with a special null type handler in Chakra that cannot share types with other objects, so these optimizations didn’t apply to objects created using Object.create.

let dict1 = Object.create(null);
let dict2 = Object.create(null);
let dict3 = Object.create(null);
dict1.x = 1;
dict2.x = 2; dict2.y = 2;
dict3.x = 3; dict3.z = 3;
// because Object.create cannot share types, o.x in 2nd/3rd calls are cache misses
foo(dict1);
foo(dict2);
foo(dict3);

Beginning with EdgeHTML 17, Object.create returns objects with sharable types. Object.create(Object) now has the normal Object type, and Object.create(null) uses a new null type handler sharable with other Object.create(null) and compatible objects. dict1, 2 and 3 in the above example can now share types and have equivalent types, hence o.x in foo(dict2) and foo(dict3) are cache hits. This change results in an up to 25% speedup in some AngularJS workloads.

Polymorphic inline cache for Object.assign

Object.assign is an ES2015 feature often used to merge or clone objects. In EdgeHTML 16, we improved bracket access (o[prop]) by deploying polymorphic inline cache, which is able to cache multiple types and their associated fast paths at a given call site. With EdgeHTML 17, we’ve propagated the same optimization to benefit Object.assign, which upon de-sugaring involves a sequence of o[prop] style calls.

// an illustrative Object.assign polyfill
function assign(target, ...sources) {
  sources.forEach(src => {
    for (let prop in src) {
      // multiple types and fast paths can now be cached at target/src call sites
      // therefore improves Object.assign performance
      target[prop] = src[prop]
    }
  });
  return target;
}

This simple optimization results in a roughly 2% improvement in some React/Redux workflows, and we expect to further improve performance for this pattern in the next release.

JSON.parse/stringify optimizations

JSON.parse and JSON.stringify are your handy JSON serialization tools in JavaScript. Interestingly, it is also a fairly common pattern to make nested JSON.parse(JSON.stringify(obj)) calls to clone data objects.

Previously, Chakra implemented JSON.stringify by first scaning the object to be serialized, creating the necessary metadata, allocating a large enough buffer for the output string, creating intermediate sub-strings (for each quote, comma, key, value, etc.), and concatenating them together one-by-one.

The creation of intermediate strings caused a lot of redundancy in terms of both time and memory, so in EdgeHTML 17, Chakra skips creating those substrings altogether, and also delays filling up the output string from the metadata until it is actually needed. In the case of a JSON.parse(JSON.stringify(obj) call, the serialized object string is never actually created, and Chakra is able to construct the output object from the metadata generated during stringify.

let obj = {a: 1, b: 2};
let str = JSON.stringify(obj);   // scans obj & create metadata
let objClone = JSON.parse(str);  // re-construct obj from metadata, no string created
console.log(str);                // JSON string creation is delayed until here

This change leads to JSON.stringify being roughly 40% faster in internal performance tests and roughly 70% faster for nested parse/stringify calls.

Rewriting Array Iterators in JavaScript and faster for...of

For…of performance on array also received a major boost in the EdgeHTML 17, and is up to 2.5x faster according to our testing. This speedup is achieved through rewriting the C++ Array Iterators implementation in JavaScript.

We had contemplated a feature rewrite in JS before―many JS optimizations didn’t apply to the C++ implementation, plus next() calls in C++ allocate objects on the heap, which is more expensive than JS stack allocation. The major challenge with a JS implementation is that de-sugared for…of involves a try/catch/finally block to handle cases of abrupt completion, which would have disabled most Chakra optimizations.

To work around those limitations, we made efforts to turn on JIT optimizations for functions with try/catch/finally in EdgeHTML 16, and later enabled inlining for the same as well. With those pre-requisites in place, we were able to rewrite for...of in JS, which runs much faster on non-excepting path.

WebAssembly

Microsoft has been working closely with the WebAssembly Community Group (CG) to evolve this growing technology, and we shipped the WebAssembly MVP last year in EdgeHTML 16.

In EdgeHTML 17, WebAssembly (and asm.js) gets even faster with inlining support, which speeds up the workloads we’ve been tracking by about 4.5%. For ChakraCore embedders, WebAssembly is not only available on Windows, but also on Linux and MacOS, as we fixed calling convention issues.

A number of new and exciting WebAssembly features are being discussed within the CG, such as threads, reference types (for host interop), and ES modules integration. We look forward to continuing to collaborate with the CG to move this technology forward and to landing additional features as they progress on the standards track.

Get involved!

It’s always exciting to share more about performance enhancements to Chakra and Microsoft Edge. As always, we’ll continue to make enhancements in future releases, and your feedback is one of the key signals for us to decide what to do next.

We encourage you to dive in and try out these improvements for yourself, and be sure to share your thoughts with us on the ChakraCore repo, or via @MSEdgeDev and @ChakraCore on Twitter!

– Limin Zhu, Program Manager, Chakra

The post Improved JavaScript and WebAssembly performance in EdgeHTML 17 appeared first on Microsoft Edge Dev Blog.

Windows 10 SDK Preview Build 17692 available now!

$
0
0

Today, we released a new Windows 10 Preview Build of the SDK to be used in conjunction with Windows 10 Insider Preview (Build 17692 or greater). The Preview SDK Build 17692 contains bug fixes and under development changes to the API surface area.

The Preview SDK can be downloaded from developer section on Windows Insider.

For feedback and updates to the known issues, please see the developer forum. For new developer feature requests, head over to our Windows Platform UserVoice.

Things to note:

  • This build works in conjunction with previously released SDKs and Visual Studio 2017. You can install this SDK and still also continue to submit your apps that target Windows 10 build 1803 or earlier to the Store.
  • The Windows SDK will now formally only be supported by Visual Studio 2017 and greater. You can download Visual Studio 2017 here.
  • This build of the Windows SDK will only install on Windows 10 Insider Preview.

What’s New:

MSIX Support

It’s finally here! You can now package your applications as MSIX! These applications can be installed and run on any device with 17682 build or later.

To package your application with MSIX, use the MakeAppx tool. To install the application – just click on the MSIX file. To understand more about MSIX, watch this introductory video: link

Feedback and comments are welcome on our MSIX community: http://aka.ms/MSIXCommunity

MSIX is not currently supported by the App Certification Kit nor the Microsoft Store at this time.

MC.EXE

We’ve made some important changes to the C/C++ ETW code generation of mc.exe (Message Compiler):

The “-mof” parameter is deprecated. This parameter instructs MC.exe to generate ETW code that is compatible with Windows XP and earlier. Support for the “-mof” parameter will be removed in a future version of mc.exe.

As long as the “-mof” parameter is not used, the generated C/C++ header is now compatible with both kernel-mode and user-mode, regardless of whether “-km” or “-um” was specified on the command line. The header will use the _ETW_KM_ macro to automatically determine whether it is being compiled for kernel-mode or user-mode and will call the appropriate ETW APIs for each mode.

  • The only remaining difference between “-km” and “-um” is that the EventWrite[EventName] macros generated with “-km” have an Activity ID parameter while the EventWrite[EventName] macros generated with “-um” do not have an Activity ID parameter.

The EventWrite[EventName] macros now default to calling EventWriteTransfer (user mode) or EtwWriteTransfer (kernel mode). Previously, the EventWrite[EventName] macros defaulted to calling EventWrite (user mode) or EtwWrite (kernel mode).

  • The generated header now supports several customization macros. For example, you can set the MCGEN_EVENTWRITETRANSFER macro if you need the generated macros to call something other than EventWriteTransfer.
  • The manifest supports new attributes.
    • Event “name”: non-localized event name.
    • Event “attributes”: additional key-value metadata for an event such as filename, line number, component name, function name.
    • Event “tags”: 28-bit value with user-defined semantics (per-event).
    • Field “tags”: 28-bit value with user-defined semantics (per-field – can be applied to “data” or “struct” elements).
  • You can now define “provider traits” in the manifest (e.g. provider group). If provider traits are used in the manifest, the EventRegister[ProviderName] macro will automatically register them.
  • MC will now report an error if a localized message file is missing a string. (Previously MC would silently generate a corrupt message resource.)
  • MC can now generate Unicode (utf-8 or utf-16) output with the “-cp utf-8” or “-cp utf-16” parameters.

Known Issues:

The SDK headers are generated with types in the “ABI” namespace. This is done to avoid conflicts with C++/CX and C++/WinRT clients that need to consume types directly at the ABI layer[1]. By default, types emitted by MIDL are *not* put in the ABI namespace, however this has the potential to introduce conflicts from teams attempting to consume ABI types from Windows WinRT MIDL generated headers and non-Windows WinRT MIDL generated headers (this is especially challenging if the non-Windows header references Windows types).

To ensure that developers have a consistent view of the WinRT API surface, validation has been added to the generated headers to ensure that the ABI prefix is consistent between the Windows headers and user generated headers. If you encounter an error like:

5>c:program files (x86)windows kits10include10.0.17687.0winrtwindows.foundation.h(83): error C2220: warning treated as error – no ‘object’ file generated
5>c:program files (x86)windows kits10include10.0.17687.0winrtwindows.foundation.h(83): warning C4005: ‘CHECK_NS_PREFIX_STATE’: macro redefinition
5>g:<PATH TO YOUR HEADER HERE>(41): note: see previous definition of ‘CHECK_NS_PREFIX_STATE’

It means that some of your MIDL generated headers are inconsistent with the system generated headers.

There are two ways to fix this:

  • Preferred: Compile your IDL file with the /ns_prefix MIDL command line switch. This will cause all your types to be moved to the ABI namespace consistent with the Windows headers. This may require code changes in your code however.
  • Alternate: Add #define DISABLE_NS_PREFIX_CHECKS before including the Windows headers. This will suppress the validation.

API Spot Light:

Check out LauncherOptions.GroupingPreference.


namespace Windows.System {
  public sealed class FolderLauncherOptions : ILauncherViewOptions {
    ViewGrouping GroupingPreference { get; set; }
  }
  public sealed class LauncherOptions : ILauncherViewOptions {
    ViewGrouping GroupingPreference { get; set; }
  }

This release contains the new LauncherOptions.GroupingPreference property to assist your app in tailoring its behavior for Sets. Watch the presentation here: https://channel9.msdn.com/events/Build/2018/BRK2412

API Updates, Additions and Removals

When targeting new APIs, consider writing your app to be adaptive in order to run correctly on the widest number of Windows 10 devices. Please see Dynamically detecting features with API contracts (10 by 10) for more information.

The following APIs have been added to the platform since the release of 17134. The APIs listed below have been removed.

Additions:


namespace Windows.AI.MachineLearning {
  public interface ILearningModelFeatureDescriptor
  public interface ILearningModelFeatureValue
  public sealed class ImageFeatureDescriptor : ILearningModelFeatureDescriptor
  public sealed class ImageFeatureValue : ILearningModelFeatureValue
  public interface ITensor : ILearningModelFeatureValue
  public sealed class LearningModel : IClosable
  public sealed class LearningModelBinding : IIterable<IKeyValuePair<string, object>>, IMapView<string, object>
  public sealed class LearningModelDevice
  public enum LearningModelDeviceKind
  public sealed class LearningModelEvaluationResult
  public enum LearningModelFeatureKind
  public sealed class LearningModelSession : IClosable
  public struct MachineLearningContract
  public sealed class MapFeatureDescriptor : ILearningModelFeatureDescriptor
  public sealed class SequenceFeatureDescriptor : ILearningModelFeatureDescriptor
  public sealed class TensorBoolean : ILearningModelFeatureValue, ITensor
  public sealed class TensorDouble : ILearningModelFeatureValue, ITensor
  public sealed class TensorFeatureDescriptor : ILearningModelFeatureDescriptor
  public sealed class TensorFloat : ILearningModelFeatureValue, ITensor
  public sealed class TensorFloat16Bit : ILearningModelFeatureValue, ITensor
  public sealed class TensorInt16Bit : ILearningModelFeatureValue, ITensor
  public sealed class TensorInt32Bit : ILearningModelFeatureValue, ITensor
  public sealed class TensorInt64Bit : ILearningModelFeatureValue, ITensor
  public sealed class TensorInt8Bit : ILearningModelFeatureValue, ITensor
  public enum TensorKind
  public sealed class TensorString : ILearningModelFeatureValue, ITensor
  public sealed class TensorUInt16Bit : ILearningModelFeatureValue, ITensor
  public sealed class TensorUInt32Bit : ILearningModelFeatureValue, ITensor
  public sealed class TensorUInt64Bit : ILearningModelFeatureValue, ITensor
  public sealed class TensorUInt8Bit : ILearningModelFeatureValue, ITensor
}
namespace Windows.ApplicationModel {
  public sealed class AppInstallerInfo
  public sealed class LimitedAccessFeatureRequestResult
  public static class LimitedAccessFeatures
  public enum LimitedAccessFeatureStatus
  public sealed class Package {
    IAsyncOperation<PackageUpdateAvailabilityResult> CheckUpdateAvailabilityAsync();
    AppInstallerInfo GetAppInstallerInfo();
  }
  public enum PackageUpdateAvailability
  public sealed class PackageUpdateAvailabilityResult
}
namespace Windows.ApplicationModel.Calls {
  public sealed class VoipCallCoordinator {
    IAsyncOperation<VoipPhoneCallResourceReservationStatus> ReserveCallResourcesAsync();
  }
}
namespace Windows.ApplicationModel.Chat {
  public static class ChatCapabilitiesManager {
    public static IAsyncOperation<ChatCapabilities> GetCachedCapabilitiesAsync(string address, string transportId);
    public static IAsyncOperation<ChatCapabilities> GetCapabilitiesFromNetworkAsync(string address, string transportId);
  }
  public static class RcsManager {
    public static event EventHandler<object> TransportListChanged;
  }
}
namespace Windows.ApplicationModel.ComponentUI {
  public sealed class ComponentAddedEventArgs
  public enum ComponentLaunchError
  public sealed class ComponentLaunchOptions
  public sealed class ComponentLaunchResults
  public sealed class ComponentManager
  public sealed class ComponentRemovedEventArgs
  public sealed class ComponentReparentResults
  public sealed class ComponentSite
  public enum ComponentState
  public sealed class ComponentStateEventArgs
  public sealed class InputSitePrototype
}
namespace Windows.ApplicationModel.DataTransfer {
  public static class Clipboard {
    public static event EventHandler<ClipboardHistoryChangedEventArgs> HistoryChanged;
    public static event EventHandler<object> HistoryEnabledChanged;
    public static event EventHandler<object> RoamingEnabledChanged;
    public static bool ClearHistory();
    public static bool DeleteItemFromHistory(ClipboardHistoryItem item);
    public static IAsyncOperation<ClipboardHistoryItemsResult> GetHistoryItemsAsync();
    public static bool IsHistoryEnabled();
    public static bool IsRoamingEnabled();
    public static void SetContentForUser(DataPackage content, User user);
    public static void SetContentWithOptionsForUser(DataPackage content, User user, ClipboardContentOptions clipboardOptions);
    public static SetHistoryItemAsContentStatus SetHistoryItemAsContent(ClipboardHistoryItem item);
  }
  public sealed class ClipboardContentOptions
  public sealed class ClipboardHistoryChangedEventArgs
  public sealed class ClipboardHistoryItem
  public sealed class ClipboardHistoryItemsResult
  public enum ClipboardHistoryItemsResultStatus
  public sealed class DataPackagePropertySet : IIterable<IKeyValuePair<string, object>>, IMap<string, object> {
    bool CanIncludeInClipboardHistory { get; set; }
    bool CanUploadToCloudClipboard { get; set; }
    IVector<string> DataFormatsForClipboardHistory { get; }
    IVector<string> DataFormatsForCloudClipboard { get; }
  }
  public enum SetHistoryItemAsContentStatus
}
namespace Windows.ApplicationModel.Store.Preview {
  public enum DeliveryOptimizationDownloadMode
  public enum DeliveryOptimizationDownloadModeSource
  public sealed class DeliveryOptimizationSettings
  public static class StoreConfiguration {
    public static bool IsPinToDesktopSupported();
    public static bool IsPinToStartSupported();
    public static bool IsPinToTaskbarSupported();
    public static void PinToDesktop(string appPackageFamilyName);
    public static void PinToDesktopForUser(User user, string appPackageFamilyName);
  }
}
namespace Windows.ApplicationModel.Store.Preview.InstallControl {
  public enum AppInstallationToastNotificationMode
  public sealed class AppInstallItem {
    AppInstallationToastNotificationMode CompletedInstallToastNotificationMode { get; set; }
    AppInstallationToastNotificationMode InstallInProgressToastNotificationMode { get; set; }
    bool PinToDesktopAfterInstall { get; set; }
    bool PinToStartAfterInstall { get; set; }
    bool PinToTaskbarAfterInstall { get; set; }
  }
  public sealed class AppInstallManager {
    bool CanInstallForAllUsers { get; }
  }
  public sealed class AppInstallOptions {
    AppInstallationToastNotificationMode CompletedInstallToastNotificationMode { get; set; }
    bool InstallForAllUsers { get; set; }
    AppInstallationToastNotificationMode InstallInProgressToastNotificationMode { get; set; }
    bool PinToDesktopAfterInstall { get; set; }
    bool PinToStartAfterInstall { get; set; }
    bool PinToTaskbarAfterInstall { get; set; }
    bool StageButDoNotInstall { get; set; }
  }
  public sealed class AppUpdateOptions {
    bool AutomaticallyDownloadAndInstallUpdateIfFound { get; set; }
  }
}
namespace Windows.ApplicationModel.UserActivities {
  public sealed class UserActivity {
    bool IsRoamable { get; set; }
  }
}
namespace Windows.Data.Text {
  public sealed class TextPredictionGenerator {
    CoreTextInputScope InputScope { get; set; }
    IAsyncOperation<IVectorView<string>> GetCandidatesAsync(string input, uint maxCandidates, TextPredictionOptions predictionOptions, IIterable<string> previousStrings);
    IAsyncOperation<IVectorView<string>> GetNextWordCandidatesAsync(uint maxCandidates, IIterable<string> previousStrings);
  }
  public enum TextPredictionOptions : uint
}
namespace Windows.Devices.Enumeration {
  public sealed class DeviceInformation {
    string ContainerDeviceId { get; }
    DevicePhysicalInfo PhysicalInfo { get; }
  }
  public enum DeviceInformationKind {
    DevicePanel = 8,
  }
  public sealed class DeviceInformationPairing {
    public static bool TryRegisterForAllInboundPairingRequestsWithProtectionLevel(DevicePairingKinds pairingKindsSupported, DevicePairingProtectionLevel minProtectionLevel);
  }
  public sealed class DevicePhysicalInfo
  public enum PanelDeviceShape
}
namespace Windows.Devices.Enumeration.Pnp {
  public enum PnpObjectType {
    DevicePanel = 8,
  }
}
namespace Windows.Devices.Lights {
  public sealed class LampArray
  public enum LampArrayKind
  public sealed class LampInfo
  public enum LampPurposes : uint
}
namespace Windows.Devices.Lights.Effects {
  public interface ILampArrayEffect
  public sealed class LampArrayBitmapEffect : ILampArrayEffect
  public sealed class LampArrayBitmapRequestedEventArgs
  public sealed class LampArrayBlinkEffect : ILampArrayEffect
  public sealed class LampArrayColorRampEffect : ILampArrayEffect
  public sealed class LampArrayCustomEffect : ILampArrayEffect
  public enum LampArrayEffectCompletionBehavior
  public sealed class LampArrayEffectPlaylist : IIterable<ILampArrayEffect>, IVectorView<ILampArrayEffect>
  public enum LampArrayEffectStartMode
  public enum LampArrayRepetitionMode
  public sealed class LampArraySolidEffect : ILampArrayEffect
  public sealed class LampArrayUpdateRequestedEventArgs
}
namespace Windows.Devices.PointOfService {
  public sealed class BarcodeScannerCapabilities {
    bool IsVideoPreviewSupported { get; }
  }
  public sealed class ClaimedBarcodeScanner : IClosable {
    event TypedEventHandler<ClaimedBarcodeScanner, ClaimedBarcodeScannerClosedEventArgs> Closed;
  }
  public sealed class ClaimedBarcodeScannerClosedEventArgs
  public sealed class ClaimedCashDrawer : IClosable {
    event TypedEventHandler<ClaimedCashDrawer, ClaimedCashDrawerClosedEventArgs> Closed;
  }
  public sealed class ClaimedCashDrawerClosedEventArgs
  public sealed class ClaimedLineDisplay : IClosable {
    event TypedEventHandler<ClaimedLineDisplay, ClaimedLineDisplayClosedEventArgs> Closed;
  }
  public sealed class ClaimedLineDisplayClosedEventArgs
  public sealed class ClaimedMagneticStripeReader : IClosable {
    event TypedEventHandler<ClaimedMagneticStripeReader, ClaimedMagneticStripeReaderClosedEventArgs> Closed;
  }
  public sealed class ClaimedMagneticStripeReaderClosedEventArgs
  public sealed class ClaimedPosPrinter : IClosable {
    event TypedEventHandler<ClaimedPosPrinter, ClaimedPosPrinterClosedEventArgs> Closed;
  }
  public sealed class ClaimedPosPrinterClosedEventArgs
}
namespace Windows.Devices.PointOfService.Provider {
  public sealed class BarcodeScannerDisableScannerRequest {
    IAsyncAction ReportFailedAsync(int reason);
    IAsyncAction ReportFailedAsync(int reason, string failedReasonDescription);
  }
  public sealed class BarcodeScannerEnableScannerRequest {
    IAsyncAction ReportFailedAsync(int reason);
    IAsyncAction ReportFailedAsync(int reason, string failedReasonDescription);
  }
  public sealed class BarcodeScannerFrameReader : IClosable
  public sealed class BarcodeScannerFrameReaderFrameArrivedEventArgs
  public sealed class BarcodeScannerGetSymbologyAttributesRequest {
    IAsyncAction ReportFailedAsync(int reason);
    IAsyncAction ReportFailedAsync(int reason, string failedReasonDescription);
  }
  public sealed class BarcodeScannerHideVideoPreviewRequest {
    IAsyncAction ReportFailedAsync(int reason);
    IAsyncAction ReportFailedAsync(int reason, string failedReasonDescription);
  }
  public sealed class BarcodeScannerProviderConnection : IClosable {
    IAsyncOperation<BarcodeScannerFrameReader> CreateFrameReaderAsync();
    IAsyncOperation<BarcodeScannerFrameReader> CreateFrameReaderAsync(BitmapPixelFormat preferredFormat);
    IAsyncOperation<BarcodeScannerFrameReader> CreateFrameReaderAsync(BitmapPixelFormat preferredFormat, BitmapSize preferredSize);
  }
  public sealed class BarcodeScannerSetActiveSymbologiesRequest {
    IAsyncAction ReportFailedAsync(int reason);
    IAsyncAction ReportFailedAsync(int reason, string failedReasonDescription);
  }
  public sealed class BarcodeScannerSetSymbologyAttributesRequest {
    IAsyncAction ReportFailedAsync(int reason);
    IAsyncAction ReportFailedAsync(int reason, string failedReasonDescription);
  }
  public sealed class BarcodeScannerStartSoftwareTriggerRequest {
    IAsyncAction ReportFailedAsync(int reason);
    IAsyncAction ReportFailedAsync(int reason, string failedReasonDescription);
  }
  public sealed class BarcodeScannerStopSoftwareTriggerRequest {
    IAsyncAction ReportFailedAsync(int reason);
    IAsyncAction ReportFailedAsync(int reason, string failedReasonDescription);
  }
  public sealed class BarcodeScannerVideoFrame : IClosable
}
namespace Windows.Devices.Sensors {
  public sealed class SimpleOrientationSensor {
    public static IAsyncOperation<SimpleOrientationSensor> FromIdAsync(string deviceId);
    public static string GetDeviceSelector();
  }
}
namespace Windows.Devices.SmartCards {
  public static class KnownSmartCardAppletIds
  public sealed class SmartCardAppletIdGroup {
    string Description { get; set; }
    IRandomAccessStreamReference Logo { get; set; }
    ValueSet Properties { get; }
    bool SecureUserAuthenticationRequired { get; set; }
  }
  public sealed class SmartCardAppletIdGroupRegistration {
    string SmartCardReaderId { get; }
    IAsyncAction SetPropertiesAsync(ValueSet props);
  }
}
namespace Windows.Devices.WiFi {
  public enum WiFiPhyKind {
    HE = 10,
  }
}
namespace Windows.Globalization {
  public static class CurrencyIdentifiers {
    public static string MRU { get; }
    public static string SSP { get; }
    public static string STN { get; }
    public static string VES { get; }
  }
}
namespace Windows.Graphics.Capture {
  public sealed class Direct3D11CaptureFramePool : IClosable {
    public static Direct3D11CaptureFramePool CreateFreeThreaded(IDirect3DDevice device, DirectXPixelFormat pixelFormat, int numberOfBuffers, SizeInt32 size);
  }
  public sealed class GraphicsCaptureItem {
    public static GraphicsCaptureItem CreateFromVisual(Visual visual);
  }
}
namespace Windows.Graphics.Imaging {
  public sealed class BitmapDecoder : IBitmapFrame, IBitmapFrameWithSoftwareBitmap {
    public static Guid HeifDecoderId { get; }
    public static Guid WebpDecoderId { get; }
  }
  public sealed class BitmapEncoder {
    public static Guid HeifEncoderId { get; }
  }
}
namespace Windows.Management.Deployment {
  public enum DeploymentOptions : uint {
    ForceUpdateFromAnyVersion = (uint)262144,
  }
  public sealed class PackageManager {
    IAsyncOperationWithProgress<DeploymentResult, DeploymentProgress> DeprovisionPackageForAllUsersAsync(string packageFamilyName);
  }
  public enum RemovalOptions : uint {
    RemoveForAllUsers = (uint)524288,
  }
}
namespace Windows.Management.Policies {
  public static class NamedPolicy {
    public static IAsyncAction ClearAllPoliciesAsync(string accountId);
    public static IAsyncAction ClearAllPoliciesForAllAccountsAsync();
    public static void SetBinaryPolicyAtPath(string accountId, string area, string name, IBuffer policyValue);
    public static void SetBinaryPolicyAtPathForUser(User user, string accountId, string area, string name, IBuffer policyValue);
    public static void SetBooleanPolicyAtPath(string accountId, string area, string name, bool policyValue);
    public static void SetBooleanPolicyAtPathForUser(User user, string accountId, string area, string name, bool policyValue);
    public static void SetInt32PolicyAtPath(string accountId, string area, string name, int policyValue);
    public static void SetInt32PolicyAtPathForUser(User user, string accountId, string area, string name, int policyValue);
    public static void SetInt64PolicyAtPath(string accountId, string area, string name, long policyValue);
    public static void SetInt64PolicyAtPathForUser(User user, string accountId, string area, string name, long policyValue);
    public static void SetStringPolicyAtPath(string accountId, string area, string name, string policyValue);
    public static void SetStringPolicyAtPathForUser(User user, string accountId, string area, string name, string policyValue);
  }
}
namespace Windows.Media.Audio {
  public sealed class CreateAudioDeviceInputNodeResult {
    HResult ExtendedError { get; }
  }
  public sealed class CreateAudioDeviceOutputNodeResult {
    HResult ExtendedError { get; }
  }
  public sealed class CreateAudioFileInputNodeResult {
    HResult ExtendedError { get; }
  }
  public sealed class CreateAudioFileOutputNodeResult {
    HResult ExtendedError { get; }
  }
  public sealed class CreateAudioGraphResult {
    HResult ExtendedError { get; }
  }
  public sealed class CreateMediaSourceAudioInputNodeResult {
    HResult ExtendedError { get; }
  }
  public enum MixedRealitySpatialAudioFormatPolicy
  public sealed class SetDefaultSpatialAudioFormatResult
  public enum SetDefaultSpatialAudioFormatStatus
  public sealed class SpatialAudioDeviceConfiguration
  public sealed class SpatialAudioFormatConfiguration
  public static class SpatialAudioFormatSubtype
}
namespace Windows.Media.Control {
  public sealed class CurrentSessionChangedEventArgs
  public sealed class GlobalSystemMediaTransportControlsSession
  public sealed class GlobalSystemMediaTransportControlsSessionManager
  public sealed class GlobalSystemMediaTransportControlsSessionMediaProperties
  public sealed class GlobalSystemMediaTransportControlsSessionPlaybackControls
  public sealed class GlobalSystemMediaTransportControlsSessionPlaybackInfo
  public enum GlobalSystemMediaTransportControlsSessionPlaybackStatus
  public sealed class GlobalSystemMediaTransportControlsSessionTimelineProperties
  public sealed class MediaPropertiesChangedEventArgs
  public sealed class PlaybackInfoChangedEventArgs
  public sealed class SessionsChangedEventArgs
  public sealed class TimelinePropertiesChangedEventArgs
}
namespace Windows.Media.Core {
  public sealed class MediaStreamSample {
    IDirect3DSurface Direct3D11Surface { get; }
    public static MediaStreamSample CreateFromDirect3D11Surface(IDirect3DSurface surface, TimeSpan timestamp);
  }
}
namespace Windows.Media.Devices {
  public enum AudioRoutingPolicy
  public static class SystemAudioDeviceRoutingManager
  public sealed class SystemAudioDeviceRoutingSession : IClosable
}
namespace Windows.Media.Devices.Core {
  public sealed class CameraIntrinsics {
    public CameraIntrinsics(Vector2 focalLength, Vector2 principalPoint, Vector3 radialDistortion, Vector2 tangentialDistortion, uint imageWidth, uint imageHeight);
  }
}
namespace Windows.Media.Import {
  public enum PhotoImportContentTypeFilter {
    OnlyImagesAndVideosFromCameraRoll = 3,
  }
  public sealed class PhotoImportItem {
    string Path { get; }
  }
}
namespace Windows.Media.MediaProperties {
  public sealed class ImageEncodingProperties : IMediaEncodingProperties {
    public static ImageEncodingProperties CreateHeif();
  }
  public static class MediaEncodingSubtypes {
    public static string Heif { get; }
  }
}
namespace Windows.Media.Protection.PlayReady {
  public static class PlayReadyStatics {
    public static IReference<DateTime> HardwareDRMDisabledAtTime { get; }
    public static IReference<DateTime> HardwareDRMDisabledUntilTime { get; }
    public static void ResetHardwareDRMDisabled();
  }
}
namespace Windows.Media.Streaming.Adaptive {
  public enum AdaptiveMediaSourceResourceType {
    MediaSegmentIndex = 5,
  }
}
namespace Windows.Networking.Connectivity {
  public sealed class ConnectionProfile {
    bool CanDelete { get; }
    IAsyncOperation<ConnectionProfileDeleteStatus> TryDeleteAsync();
  }
  public enum ConnectionProfileDeleteStatus
}
namespace Windows.Networking.NetworkOperators {
  public enum ESimOperationStatus {
    CardGeneralFailure = 13,
    ConfirmationCodeMissing = 14,
    EidMismatch = 18,
    InvalidMatchingId = 15,
    NoCorrespondingRequest = 23,
    NoEligibleProfileForThisDevice = 16,
    OperationAborted = 17,
    OperationProhibitedByProfileClass = 21,
    ProfileNotAvailableForNewBinding = 19,
    ProfileNotPresent = 22,
    ProfileNotReleasedByOperator = 20,
  }
}
namespace Windows.Perception {
  public sealed class PerceptionTimestamp {
    TimeSpan SystemRelativeTargetTime { get; }
  }
  public static class PerceptionTimestampHelper {
    public static PerceptionTimestamp FromSystemRelativeTargetTime(TimeSpan targetTime);
  }
}
namespace Windows.Perception.Spatial {
  public sealed class SpatialAnchorExporter
  public enum SpatialAnchorExportPurpose
  public sealed class SpatialAnchorExportSufficiency
  public sealed class SpatialLocation {
    Vector3 AbsoluteAngularAccelerationAxisAngle { get; }
    Vector3 AbsoluteAngularVelocityAxisAngle { get; }
  }
}
namespace Windows.Perception.Spatial.Preview {
  public static class SpatialGraphInteropPreview
}
namespace Windows.Security.DataProtection {
  public enum UserDataAvailability
  public sealed class UserDataAvailabilityStateChangedEventArgs
  public sealed class UserDataBufferUnprotectResult
  public enum UserDataBufferUnprotectStatus
  public sealed class UserDataProtectionManager
  public sealed class UserDataStorageItemProtectionInfo
  public enum UserDataStorageItemProtectionStatus
}
namespace Windows.Security.Integrity {
  public static class WindowsIntegrityPolicy
}
namespace Windows.Services.Cortana {
  public sealed class CortanaActionableInsights
  public sealed class CortanaActionableInsightsOptions
}
namespace Windows.Services.Store {
  public sealed class StoreAppLicense {
    bool IsDiscLicense { get; }
  }
  public sealed class StoreContext {
    IAsyncOperation<StoreRateAndReviewResult> RequestRateAndReviewAppAsync();
    IAsyncOperation<IVectorView<StoreQueueItem>> SetInstallOrderForAssociatedStoreQueueItemsAsync(IIterable<StoreQueueItem> items);
  }
  public sealed class StoreQueueItem {
    IAsyncAction CancelInstallAsync();
    IAsyncAction PauseInstallAsync();
    IAsyncAction ResumeInstallAsync();
  }
  public sealed class StoreRateAndReviewResult
  public enum StoreRateAndReviewStatus
}
namespace Windows.Storage.Provider {
  public enum StorageProviderHydrationPolicyModifier : uint {
    AutoDehydrationAllowed = (uint)4,
  }
}
namespace Windows.System {
  public sealed class FolderLauncherOptions : ILauncherViewOptions {
    ViewGrouping GroupingPreference { get; set; }
  }
  public static class Launcher {
    public static IAsyncOperation<bool> LaunchFolderPathAsync(string path);
    public static IAsyncOperation<bool> LaunchFolderPathAsync(string path, FolderLauncherOptions options);
    public static IAsyncOperation<bool> LaunchFolderPathForUserAsync(User user, string path);
    public static IAsyncOperation<bool> LaunchFolderPathForUserAsync(User user, string path, FolderLauncherOptions options);
  }
  public sealed class LauncherOptions : ILauncherViewOptions {
    ViewGrouping GroupingPreference { get; set; }
  }
}
namespace Windows.System.Profile {
  public static class OutOfBoxExperienceInfo
  public enum OutOfBoxExperienceStatus
}
namespace Windows.System.Profile.SystemManufacturers {
  public sealed class SystemSupportDeviceInfo
  public static class SystemSupportInfo {
    public static SystemSupportDeviceInfo LocalDeviceInfo { get; }
  }
}
namespace Windows.System.RemoteSystems {
  public sealed class RemoteSystem {
    IVectorView<RemoteSystemApp> Apps { get; }
  }
  public sealed class RemoteSystemApp
  public sealed class RemoteSystemAppRegistration
  public enum RemoteSystemAppResourceAccessType
  public sealed class RemoteSystemAppResourceInfo
  public sealed class RemoteSystemConnectionRequest {
    RemoteSystemApp RemoteSystemApp { get; }
    public static RemoteSystemConnectionRequest CreateWithRemoteSystemApp(RemoteSystemApp remoteSystemApp);
  }
}
namespace Windows.System.Update {
  public enum SystemUpdateAttentionRequiredReason
  public sealed class SystemUpdateItem
  public enum SystemUpdateItemState
  public sealed class SystemUpdateLastErrorInfo
  public static class SystemUpdateManager
  public enum SystemUpdateManagerState
  public enum SystemUpdateStartInstallAction
}
namespace Windows.System.UserProfile {
  public sealed class AssignedAccessSettings
}
namespace Windows.UI.Accessibility {
  public sealed class ScreenReaderPositionChangedEventArgs
  public sealed class ScreenReaderService
}
namespace Windows.UI.Composition {
  public enum AnimationPropertyAccessMode
  public sealed class AnimationPropertyInfo : CompositionObject
  public sealed class BooleanKeyFrameAnimation : KeyFrameAnimation
  public class CompositionAnimation : CompositionObject, ICompositionAnimationBase {
    void SetAnimatableReferenceParameter(string parameterName, IAnimationObject source);
  }
  public enum CompositionBatchTypes : uint {
    AllAnimations = (uint)5,
    InfiniteAnimation = (uint)4,
  }
  public sealed class CompositionGeometricClip : CompositionClip
  public class CompositionGradientBrush : CompositionBrush {
    CompositionMappingMode MappingMode { get; set; }
  }
  public enum CompositionMappingMode
  public class CompositionObject : IAnimationObject, IClosable {
    void PopulatePropertyInfo(string propertyName, AnimationPropertyInfo propertyInfo);
    public static void StartAnimationGroupWithIAnimationObject(IAnimationObject target, ICompositionAnimationBase animation);
    public static void StartAnimationWithIAnimationObject(IAnimationObject target, string propertyName, CompositionAnimation animation);
  }
  public sealed class Compositor : IClosable {
    BooleanKeyFrameAnimation CreateBooleanKeyFrameAnimation();
    CompositionGeometricClip CreateGeometricClip();
    CompositionGeometricClip CreateGeometricClip(CompositionGeometry geometry);
    RedirectVisual CreateRedirectVisual();
    RedirectVisual CreateRedirectVisualWithSourceVisual(Visual source);
  }
  public interface IAnimationObject
  public sealed class RedirectVisual : ContainerVisual
}
namespace Windows.UI.Composition.Interactions {
  public sealed class InteractionSourceConfiguration : CompositionObject
  public enum InteractionSourceRedirectionMode
  public sealed class InteractionTracker : CompositionObject {
    bool IsInertiaFromImpulse { get; }
    int TryUpdatePosition(Vector3 value, InteractionTrackerClampingOption option);
    int TryUpdatePositionBy(Vector3 amount, InteractionTrackerClampingOption option);
  }
  public enum InteractionTrackerClampingOption
  public sealed class InteractionTrackerInertiaStateEnteredArgs {
    bool IsInertiaFromImpulse { get; }
  }
  public class VisualInteractionSource : CompositionObject, ICompositionInteractionSource {
    InteractionSourceConfiguration PointerWheelConfig { get; }
  }
}
namespace Windows.UI.Input.Inking.Preview {
  public sealed class PalmRejectionDelayZonePreview : IClosable
}
namespace Windows.UI.Notifications {
  public sealed class ScheduledToastNotificationShowingEventArgs
  public sealed class ToastNotifier {
    event TypedEventHandler<ToastNotifier, ScheduledToastNotificationShowingEventArgs> ScheduledToastNotificationShowing;
  }
}
namespace Windows.UI.Shell {
  public sealed class TaskbarManager {
    IAsyncOperation<bool> IsSecondaryTilePinnedAsync(string tileId);
    IAsyncOperation<bool> RequestPinSecondaryTileAsync(SecondaryTile secondaryTile);
    IAsyncOperation<bool> TryUnpinSecondaryTileAsync(string tileId);
  }
}
namespace Windows.UI.StartScreen {
  public sealed class StartScreenManager {
    IAsyncOperation<bool> ContainsSecondaryTileAsync(string tileId);
    IAsyncOperation<bool> TryRemoveSecondaryTileAsync(string tileId);
  }
}
namespace Windows.UI.Text {
  public sealed class RichEditTextDocument : ITextDocument {
    void ClearUndoRedoHistory();
  }
}
namespace Windows.UI.Text.Core {
  public sealed class CoreTextLayoutRequest {
    CoreTextLayoutBounds LayoutBoundsVisualPixels { get; }
  }
}
namespace Windows.UI.ViewManagement {
  public sealed class ApplicationView {
    bool IsTabGroupingSupported { get; }
  }
  public sealed class ApplicationViewTitleBar {
    void SetActiveIconStreamAsync(RandomAccessStreamReference activeIcon);
  }
  public enum ApplicationViewWindowingMode {
    CompactOverlay = 3,
    Maximized = 4,
  }
  public interface ISystemTray
  public interface ISystemTrayStatics
  public sealed class SystemTray : ISystemTray
  public enum ViewGrouping
  public sealed class ViewModePreferences {
    ViewGrouping GroupingPreference { get; set; }
  }
}
namespace Windows.UI.ViewManagement.Core {
  public sealed class CoreInputView {
    bool TryHide();
    bool TryShow();
    bool TryShow(CoreInputViewKind type);
  }
  public enum CoreInputViewKind
}
namespace Windows.UI.WebUI {
  public sealed class BackgroundActivatedEventArgs : IBackgroundActivatedEventArgs
  public delegate void BackgroundActivatedEventHandler(object sender, IBackgroundActivatedEventArgs eventArgs);
  public sealed class NewWebUIViewCreatedEventArgs
  public static class WebUIApplication {
    public static event BackgroundActivatedEventHandler BackgroundActivated;
    public static event EventHandler<NewWebUIViewCreatedEventArgs> NewWebUIViewCreated;
  }
  public sealed class WebUIView : IWebViewControl
}
namespace Windows.UI.Xaml {
  public class DataTemplate : FrameworkTemplate, IElementFactory {
    UIElement GetElement(ElementFactoryGetContext context);
    void RecycleElement(ElementFactoryRecycleContext context);
  }
  public sealed class DebugSettings {
    bool FailFastOnErrors { get; set; }
  }
  public sealed class EffectiveViewportChangedEventArgs
  public sealed class ElementFactoryGetContext
  public sealed class ElementFactoryRecycleContext
  public class FrameworkElement : UIElement {
    event TypedEventHandler<FrameworkElement, EffectiveViewportChangedEventArgs> EffectiveViewportChanged;
    void InvalidateViewport();
  }
  public interface IElementFactory
  public class UIElement : DependencyObject {
    bool CanBeScrollAnchor { get; set; }
    public static DependencyProperty CanBeScrollAnchorProperty { get; }
  }
  public sealed class UIElementWeakCollection : IIterable<UIElement>, IVector<UIElement>
}
namespace Windows.UI.Xaml.Automation {
  public sealed class AutomationElementIdentifiers {
    public static AutomationProperty IsDialogProperty { get; }
  }
  public sealed class AutomationProperties {
    public static DependencyProperty IsDialogProperty { get; }
    public static bool GetIsDialog(DependencyObject element);
    public static void SetIsDialog(DependencyObject element, bool value);
  }
}
namespace Windows.UI.Xaml.Automation.Peers {
  public class AppBarButtonAutomationPeer : ButtonAutomationPeer, IExpandCollapseProvider {
    ExpandCollapseState ExpandCollapseState { get; }
    void Collapse();
    void Expand();
  }
  public class AutomationPeer : DependencyObject {
    bool IsDialog();
    virtual bool IsDialogCore();
  }
  public class MenuBarAutomationPeer : FrameworkElementAutomationPeer
  public class MenuBarItemAutomationPeer : FrameworkElementAutomationPeer, IExpandCollapseProvider, IInvokeProvider
}
namespace Windows.UI.Xaml.Controls {
  public sealed class AnchorRequestedEventArgs
  public class AppBarElementContainer : ContentControl, ICommandBarElement, ICommandBarElement2
  public enum BackgroundSizing
  public sealed class Border : FrameworkElement {
    BackgroundSizing BackgroundSizing { get; set; }
    public static DependencyProperty BackgroundSizingProperty { get; }
  }
  public class ComboBox : Selector {
    bool IsEditable { get; set; }
    public static DependencyProperty IsEditableProperty { get; }
    string Text { get; set; }
    Style TextBoxStyle { get; set; }
    public static DependencyProperty TextBoxStyleProperty { get; }
    public static DependencyProperty TextProperty { get; }
    event TypedEventHandler<ComboBox, ComboBoxTextSubmittedEventArgs> TextSubmitted;
  }
  public sealed class ComboBoxTextSubmittedEventArgs
  public class ContentPresenter : FrameworkElement {
    BackgroundSizing BackgroundSizing { get; set; }
    public static DependencyProperty BackgroundSizingProperty { get; }
  }
  public class Control : FrameworkElement {
    BackgroundSizing BackgroundSizing { get; set; }
    public static DependencyProperty BackgroundSizingProperty { get; }
    CornerRadius CornerRadius { get; set; }
    public static DependencyProperty CornerRadiusProperty { get; }
    bool UseSystemValidationVisuals { get; set; }
    public static DependencyProperty UseSystemValidationVisualsProperty { get; }
  }
  public class DataTemplateSelector : IElementFactory {
    UIElement GetElement(ElementFactoryGetContext context);
    void RecycleElement(ElementFactoryRecycleContext context);
  }
  public class DatePicker : Control {
    IReference<DateTime> NullableDate { get; set; }
    public static DependencyProperty NullableDateProperty { get; }
  }
  public class DropDownButton : Button
  public class DropDownButtonAutomationPeer : ButtonAutomationPeer, IExpandCollapseProvider
  public class Frame : ContentControl, INavigate {
    bool IsNavigationStackEnabled { get; set; }
    public static DependencyProperty IsNavigationStackEnabledProperty { get; }
    bool NavigateToType(TypeName sourcePageType, object parameter, FrameNavigationOptions navigationOptions);
  }
  public class Grid : Panel {
    BackgroundSizing BackgroundSizing { get; set; }
    public static DependencyProperty BackgroundSizingProperty { get; }
  }
  public class IconSourceElement : IconElement
  public static class InputValidation
  public sealed class InputValidationError
  public enum InputValidationErrorEventAction
  public sealed class InputValidationErrorEventArgs : RoutedEventArgs
  public sealed class InputValidationTemplateSettings : DependencyObject
  public enum InputValidationVisualKind
  public interface IScrollAnchorProvider
  public class MenuBar : Control
  public class MenuBarItem : Control
  public class MenuBarItemFlyout : MenuFlyout
  public class NavigationView : ContentControl {
    UIElement ContentOverlay { get; set; }
    public static DependencyProperty ContentOverlayProperty { get; }
    bool IsPaneVisible { get; set; }
    public static DependencyProperty IsPaneVisibleProperty { get; }
    NavigationViewOverflowLabelMode OverflowLabelMode { get; set; }
    public static DependencyProperty OverflowLabelModeProperty { get; }
    UIElement PaneCustomContent { get; set; }
    public static DependencyProperty PaneCustomContentProperty { get; }
    NavigationViewPaneDisplayMode PaneDisplayMode { get; set; }
    public static DependencyProperty PaneDisplayModeProperty { get; }
    UIElement PaneHeader { get; set; }
    public static DependencyProperty PaneHeaderProperty { get; }
    NavigationViewSelectionFollowsFocus SelectionFollowsFocus { get; set; }
    public static DependencyProperty SelectionFollowsFocusProperty { get; }
    NavigationViewShoulderNavigationEnabled ShoulderNavigationEnabled { get; set; }
    public static DependencyProperty ShoulderNavigationEnabledProperty { get; }
    NavigationViewTemplateSettings TemplateSettings { get; }
    public static DependencyProperty TemplateSettingsProperty { get; }
  }
  public class NavigationViewItem : NavigationViewItemBase {
    bool SelectsOnInvoked { get; set; }
    public static DependencyProperty SelectsOnInvokedProperty { get; }
  }
  public sealed class NavigationViewItemInvokedEventArgs {
    NavigationViewItemBase InvokedItemContainer { get; }
    NavigationTransitionInfo RecommendedNavigationTransitionInfo { get; }
  }
  public enum NavigationViewOverflowLabelMode
  public enum NavigationViewPaneDisplayMode
  public sealed class NavigationViewSelectionChangedEventArgs {
    NavigationTransitionInfo RecommendedNavigationTransitionInfo { get; }
    NavigationViewItemBase SelectedItemContainer { get; }
  }
  public enum NavigationViewSelectionFollowsFocus
  public enum NavigationViewShoulderNavigationEnabled
  public class NavigationViewTemplateSettings : DependencyObject
  public sealed class PasswordBox : Control {
    bool CanPasteClipboardContent { get; }
    public static DependencyProperty CanPasteClipboardContentProperty { get; }
    FlyoutBase SelectionFlyout { get; set; }
    public static DependencyProperty SelectionFlyoutProperty { get; }
    void PasteFromClipboard();
  }
  public class RelativePanel : Panel {
    BackgroundSizing BackgroundSizing { get; set; }
    public static DependencyProperty BackgroundSizingProperty { get; }
  }
  public class RichEditBox : Control {
    FlyoutBase SelectionFlyout { get; set; }
    public static DependencyProperty SelectionFlyoutProperty { get; }
    RichEditTextDocument TextDocument { get; }
    event TypedEventHandler<RichEditBox, RichEditBoxSelectionChangingEventArgs> SelectionChanging;
  }
  public sealed class RichEditBoxSelectionChangingEventArgs
  public sealed class RichTextBlock : FrameworkElement {
    FlyoutBase SelectionFlyout { get; set; }
    public static DependencyProperty SelectionFlyoutProperty { get; }
    void CopySelectionToClipboard();
  }
  public sealed class ScrollViewer : ContentControl, IScrollAnchorProvider {
    UIElement CurrentAnchor { get; }
    double HorizontalAnchorRatio { get; set; }
    public static DependencyProperty HorizontalAnchorRatioProperty { get; }
    bool IsAnchoredAtHorizontalExtent { get; set; }
    public static DependencyProperty IsAnchoredAtHorizontalExtentProperty { get; }
    bool IsAnchoredAtVerticalExtent { get; set; }
    public static DependencyProperty IsAnchoredAtVerticalExtentProperty { get; }
    double VerticalAnchorRatio { get; set; }
    public static DependencyProperty VerticalAnchorRatioProperty { get; }
    event TypedEventHandler<ScrollViewer, AnchorRequestedEventArgs> AnchorRequested;
    void RegisterAnchorCandidate(UIElement element);
    void UnregisterAnchorCandidate(UIElement element);
  }
  public class SplitButton : ContentControl
  public class SplitButtonAutomationPeer : FrameworkElementAutomationPeer, IExpandCollapseProvider, IInvokeProvider
  public sealed class SplitButtonClickEventArgs
  public class StackPanel : Panel, IInsertionPanel, IScrollSnapPointsInfo {
    BackgroundSizing BackgroundSizing { get; set; }
    public static DependencyProperty BackgroundSizingProperty { get; }
  }
  public sealed class TextBlock : FrameworkElement {
    FlyoutBase SelectionFlyout { get; set; }
    public static DependencyProperty SelectionFlyoutProperty { get; }
    void CopySelectionToClipboard();
  }
  public class TextBox : Control {
    bool CanPasteClipboardContent { get; }
    public static DependencyProperty CanPasteClipboardContentProperty { get; }
    bool CanRedo { get; }
    public static DependencyProperty CanRedoProperty { get; }
    bool CanUndo { get; }
    public static DependencyProperty CanUndoProperty { get; }
    object Description { get; set; }
    public static DependencyProperty DescriptionProperty { get; }
    FlyoutBase SelectionFlyout { get; set; }
    public static DependencyProperty SelectionFlyoutProperty { get; }
    event TypedEventHandler<TextBox, TextBoxSelectionChangingEventArgs> SelectionChanging;
    void ClearUndoRedoHistory();
    void CopySelectionToClipboard();
    void CutSelectionToClipboard();
    void PasteFromClipboard();
    void Redo();
    void Undo();
  }
  public sealed class TextBoxSelectionChangingEventArgs
  public class TimePicker : Control {
    IReference<TimeSpan> NullableTime { get; set; }
    public static DependencyProperty NullableTimeProperty { get; }
  }
  public class ToggleSplitButton : SplitButton
  public class ToggleSplitButtonAutomationPeer : FrameworkElementAutomationPeer, IExpandCollapseProvider, IToggleProvider
  public sealed class ToggleSplitButtonIsCheckedChangedEventArgs
  public class ToolTip : ContentControl {
    Rect PlacementRect { get; set; }
    public static DependencyProperty PlacementRectProperty { get; }
  }
  public class TreeView : Control {
    bool CanDragItems { get; set; }
    public static DependencyProperty CanDragItemsProperty { get; }
    bool CanReorderItems { get; set; }
    public static DependencyProperty CanReorderItemsProperty { get; }
    Style ItemContainerStyle { get; set; }
    public static DependencyProperty ItemContainerStyleProperty { get; }
    StyleSelector ItemContainerStyleSelector { get; set; }
    public static DependencyProperty ItemContainerStyleSelectorProperty { get; }
    TransitionCollection ItemContainerTransitions { get; set; }
    public static DependencyProperty ItemContainerTransitionsProperty { get; }
    object ItemsSource { get; set; }
    public static DependencyProperty ItemsSourceProperty { get; }
    DataTemplate ItemTemplate { get; set; }
    public static DependencyProperty ItemTemplateProperty { get; }
    DataTemplateSelector ItemTemplateSelector { get; set; }
    public static DependencyProperty ItemTemplateSelectorProperty { get; }
    event TypedEventHandler<TreeView, TreeViewDragItemsCompletedEventArgs> DragItemsCompleted;
    event TypedEventHandler<TreeView, TreeViewDragItemsStartingEventArgs> DragItemsStarting;
    DependencyObject ContainerFromItem(object item);
    DependencyObject ContainerFromNode(TreeViewNode node);
    object ItemFromContainer(DependencyObject container);
    TreeViewNode NodeFromContainer(DependencyObject container);
  }
  public sealed class TreeViewCollapsedEventArgs {
    object Item { get; }
  }
  public sealed class TreeViewDragItemsCompletedEventArgs
  public sealed class TreeViewDragItemsStartingEventArgs
  public sealed class TreeViewExpandingEventArgs {
    object Item { get; }
  }
  public class TreeViewItem : ListViewItem {
    bool HasUnrealizedChildren { get; set; }
    public static DependencyProperty HasUnrealizedChildrenProperty { get; }
    object ItemsSource { get; set; }
    public static DependencyProperty ItemsSourceProperty { get; }
  }
  public class TwoPaneView : Control
  public enum TwoPaneViewConfiguration
  public enum TwoPaneViewPriority
  public enum TwoPaneViewTallConfiguration
  public enum TwoPaneViewWideConfiguration
  public sealed class WebView : FrameworkElement {
    event TypedEventHandler<WebView, WebViewWebResourceRequestedEventArgs> WebResourceRequested;
  }
  public sealed class WebViewWebResourceRequestedEventArgs
}
namespace Windows.UI.Xaml.Controls.Maps {
  public enum MapTileAnimationState
  public sealed class MapTileBitmapRequestedEventArgs {
    int FrameIndex { get; }
  }
  public class MapTileSource : DependencyObject {
    MapTileAnimationState AnimationState { get; }
    public static DependencyProperty AnimationStateProperty { get; }
    bool AutoPlay { get; set; }
    public static DependencyProperty AutoPlayProperty { get; }
    int FrameCount { get; set; }
    public static DependencyProperty FrameCountProperty { get; }
    TimeSpan FrameDuration { get; set; }
    public static DependencyProperty FrameDurationProperty { get; }
    void Pause();
    void Play();
    void Stop();
  }
  public sealed class MapTileUriRequestedEventArgs {
    int FrameIndex { get; }
  }
}
namespace Windows.UI.Xaml.Controls.Primitives {
  public class FlyoutBase : DependencyObject {
    bool DisableOpenCloseAnimations { get; set; }
    public static DependencyProperty DisableOpenCloseAnimationsProperty { get; }
    bool IsOpen { get; }
    public static DependencyProperty IsOpenProperty { get; }
    bool OpeningInputDevicePrefersQuickAccess { get; }
    public static DependencyProperty OpeningInputDevicePrefersQuickAccessProperty { get; }
    FlyoutShowMode ShowMode { get; set; }
    public static DependencyProperty ShowModeProperty { get; }
    public static DependencyProperty TargetProperty { get; }
    void ShowAt(DependencyObject placementTarget, FlyoutShowOptions showOptions);
  }
  public enum FlyoutPlacementMode {
    BottomEdgeAlignedLeft = 7,
    BottomEdgeAlignedRight = 8,
    LeftEdgeAlignedBottom = 10,
    LeftEdgeAlignedTop = 9,
    RightEdgeAlignedBottom = 12,
    RightEdgeAlignedTop = 11,
    TopEdgeAlignedLeft = 5,
    TopEdgeAlignedRight = 6,
  }
  public enum FlyoutShowMode
  public sealed class FlyoutShowOptions : DependencyObject
  public class NavigationViewItemPresenter : ContentControl
}
namespace Windows.UI.Xaml.Data {
  public sealed class DataErrorsChangedEventArgs
  public interface INotifyDataErrorInfo
}
namespace Windows.UI.Xaml.Hosting {
  public sealed class DesktopWindowXamlSource : IClosable
  public sealed class DesktopWindowXamlSourceGotFocusEventArgs
  public sealed class DesktopWindowXamlSourceTakeFocusRequestedEventArgs
  public sealed class WindowsXamlManager : IClosable
  public enum XamlSourceFocusNavigationReason
  public sealed class XamlSourceFocusNavigationRequest
  public sealed class XamlSourceFocusNavigationResult
}
namespace Windows.UI.Xaml.Input {
  public sealed class CanExecuteRequestedEventArgs
  public sealed class ExecuteRequestedEventArgs
  public sealed class FocusManager {
    public static event EventHandler<GettingFocusEventArgs> GettingFocus;
    public static event EventHandler<FocusManagerGotFocusEventArgs> GotFocus;
    public static event EventHandler<LosingFocusEventArgs> LosingFocus;
    public static event EventHandler<FocusManagerLostFocusEventArgs> LostFocus;
  }
  public sealed class FocusManagerGotFocusEventArgs
  public sealed class FocusManagerLostFocusEventArgs
  public sealed class GettingFocusEventArgs : RoutedEventArgs {
    Guid CorrelationId { get; }
  }
  public sealed class LosingFocusEventArgs : RoutedEventArgs {
    Guid CorrelationId { get; }
  }
  public class StandardUICommand : UICommand
  public enum StandardUICommandKind
  public class UICommand : DependencyObject, ICommand
}
namespace Windows.UI.Xaml.Markup {
  public sealed class FullXamlMetadataProviderAttribute : Attribute
  public interface IXamlBindScopeDiagnostics
  public interface IXamlType2 : IXamlType
}
namespace Windows.UI.Xaml.Media.Animation {
  public class BasicConnectedAnimationConfiguration : ConnectedAnimationConfiguration
  public sealed class ConnectedAnimation {
    ConnectedAnimationConfiguration Configuration { get; set; }
  }
  public class ConnectedAnimationConfiguration
  public class DirectConnectedAnimationConfiguration : ConnectedAnimationConfiguration
  public class GravityConnectedAnimationConfiguration : ConnectedAnimationConfiguration
  public enum SlideNavigationTransitionEffect
  public sealed class SlideNavigationTransitionInfo : NavigationTransitionInfo {
    SlideNavigationTransitionEffect Effect { get; set; }
    public static DependencyProperty EffectProperty { get; }
  }
}
namespace Windows.UI.Xaml.Navigation {
  public class FrameNavigationOptions
}
namespace Windows.Web.UI {
  public interface IWebViewControl2
  public sealed class WebViewControlNewWindowRequestedEventArgs {
    IWebViewControl TargetWebViewControl { get; set; }
    Deferral GetDeferral();
  }
}
namespace Windows.Web.UI.Interop {
  public sealed class WebViewControl : IWebViewControl, IWebViewControl2 {
    event TypedEventHandler<WebViewControl, object> GotFocus;
    event TypedEventHandler<WebViewControl, object> LostFocus;
    void AddPreLoadedScript(string script);
  }
  public sealed class WebViewControlProcess {
    string Partition { get; }
    string UserAgent { get; }
  }
  public sealed class WebViewControlProcessOptions {
    string Partition { get; set; }
    string UserAgent { get; set; }
  }
}

Removals:


namespace Windows.Gaming.UI {
  public sealed class GameMonitor
  public enum GameMonitoringPermission
}

The post Windows 10 SDK Preview Build 17692 available now! appeared first on Windows Developer Blog.


The RyuJIT transition is complete!

$
0
0

RyuJIT is the code name for the .NET just-in-time compiler, one of the foundational components of the .NET runtime. In contrast, the Roslyn C# compiler compiles C# code to IL byte code. The RyuJIT compiler compiles IL byte code to machine code for multiple processors.

With the recent merge of the dotnet/coreclr #18064 pull request, the remaining legacy code generation components (from older JIT implementations) have been removed from the RyuJIT source code. This PR removed almost 50k lines of code! All four of the processor architectures targeted by RyuJIT (x86, x64, ARM32, ARM64) are now built purely on the RyuJIT architecture.

It is interesting to consider a short history of RyuJIT, and how we’ve gotten here.

The RyuJIT architecture has designs originating almost nine years ago, with implementation work starting over seven years ago. RyuJIT was implemented as an evolution of the existing JIT32 compiler (which supported x86 and ARM32), and gradually replaced most of the “back end” of that compiler with a new register allocator and code generation code, as well as introducing many new and improved “front end” optimization components. Throughout this transition to a new code generation architecture, we maintained the old code side-by-side with RyuJIT. Doing so provided benefits, but was also very costly, both in terms of testing and maintenance cost, as well as developer confusion needing to deal with so much legacy code scattered around. Now, with RyuJIT functionally superior to the legacy code, it was finally time to remove the legacy code, simplify the JIT code overall, and focus on the future.

RyuJIT for x64 was introduced to the world as a Community Technology Preview for .NET Framework almost 5 years ago. This was unusual for us at the time. We provided pre-release updates of RyuJIT for multiple years for people to try, and to give us feedback before we released it as a product. RyuJIT for x64 was released with .NET Framework 4.6, replacing JIT64, a now-legacy code base, almost 3 years ago.

For x86, RyuJIT replaced JIT32 in .NET Core 2.0 last year. We announced the JIT32 replacement as part of the public development process and then shared the completion of the work in the .NET Core 2.0 release announcement.

.NET Core 2.0 included support for the ARM32 architecture as a preview, using the legacy backend code path. As of last December, with dotnet/coreclr #15134, RyuJIT became the ARM32 JIT for .NET Core 2.1. This change included many contributions from Samsung.

ARM64 architecture support in RyuJIT is close to preview quality in .NET Core 2.1, and was built from the start of its implementation on the RyuJIT architecture. We’ve actually been working on ARM64 support in RyuJIT for over four years, and this work was pushed forward more recently with significant work by Qualcomm contributors.

Overall, our RyuJIT investments have been focused on evolving the code base towards enabling better support for:

  • Multiple code generation targets (instruction sets and operating systems),
  • Improved optimizations,
  • Better and more flexible code generation, and
  • Open, flexible, and robust design and implementation.

We believe that the new RyuJIT compiler architecture is a major improvement over the (now-removed) legacy code generator for achieving these goals.

We have recently invested in new code generation technology solely in the RyuJIT code generator, for example, SIMD support, architecture-specific hardware intrinisics, and support for the Linux software conventions.

It’s very satisfying to get to this point, and we can already see how removing all this old code will free us to be more agile going forward.

Thanks to everyone who contributed to this long effort!

Using ASP.NET Core 2.1’s HttpClientFactory with Refit’s REST library

$
0
0

Strong by Lucyb_22 used under Creative Commons from FlickrWhen I moved my podcast site over to ASP.NET Core 2.1 I also started using HttpClientFactory and wrote up my experience. It's a nice clean way to centralize both settings and policy for your HttpClients, especially if you're using a lot of them to talk to a lot of small services.

Last year I explored Refit, an automatic type-safe REST library for .NET Standard. It makes it super easy to just declare the shape of a client and its associated REST API with a C# interface:

public interface IGitHubApi

{
[Get("/users/{user}")]
Task<User> GetUser(string user);
}

and then ask for an HttpClient that speaks that API's shape, then call it. Fabulous.

var gitHubApi = RestService.For<IGitHubApi>("https://api.github.com");


var octocat = await gitHubApi.GetUser("octocat");

But! What does Refit look like and how does it work in an HttpClientFactory-enabled world? Refit has recently been updated with first class support for ASP.NET Core 2.1's HttpClientFactory with the Refit.HttpClientFactory package.

Since you'll want to centralize all your HttpClient configuration in your ConfigureServices method in Startup, Refit adds a nice extension method hanging off of Services.

You add a RefitClient of a type, then add whatever other IHttpClientBuilder methods you want afterwards:

services.AddRefitClient<IWebApi>()

.ConfigureHttpClient(c => c.BaseAddress = new Uri("https://api.example.com"));
// Add additional IHttpClientBuilder chained methods as required here:
// .AddHttpMessageHandler<MyHandler>()
// .SetHandlerLifetime(TimeSpan.FromMinutes(2));

Of course, then you can just have your HttpClient automatically created and passed into the constructor. You'll see in this sample from their GitHub that you get an IWebAPI (that is, whatever type you want, like my IGitHubApi) and just go to town with a strongly typed interfaces of an HttpClient with autocomplete.

public class HomeController : Controller

{
public HomeController(IWebApi webApi)
{
_webApi = webApi;
}

private readonly IWebApi _webApi;

public async Task<IActionResult> Index(CancellationToken cancellationToken)
{
var thing = await _webApi.GetSomethingWeNeed(cancellationToken);

return View(thing);
}
}

Refit is easy to use, and even better with ASP.NET Core 2.1. Go get Refit and try it today!

* Strong image by Lucyb_22 used under Creative Commons from Flickr


Sponsor: Check out dotMemory Unit, a free unit testing framework for fighting all kinds of memory issues in your code. Extend your unit testing with the functionality of a memory profiler.



© 2018 Scott Hanselman. All rights reserved.
     

Disaster Recovery solution for Azure IaaS applications

$
0
0

On June 4th 2018, Corey Sanders announced the general availability of Disaster Recovery (DR) for Azure Virtual Machines (VMs) using Azure Site Recovery (ASR) in his blog post about why you should bet on Azure for your infrastructure needs today and in the future. Azure is the first public cloud to offer native Disaster Recovery solution for applications running on IaaS. With this offering, you can make your applications resilient to even region level failures by replicating VMs into another region. Along with Availability Sets and Availability Zones, Azure Site Recovery completes the resiliency continuum for applications running on Azure Virtual Machines.

blog

Key benefits

  • No infrastructure required: You do not need any additional software infrastructure (VMs or appliances) in your Azure subscription to enable this functionality. You avoid all the complexity and cost associated with deploying, monitoring, patching and maintaining any DR infrastructure.

"By using 'Azure to Azure DR', Microsoft’s Universal Store Team (UST), who develops and operates Microsoft’s core commerce Store and systems, was able to use its previously DR validated platform on-premises to perform the equivalent on Azure. Without ASR, the Universal Store team would have spent substantial resources deploying a new instance of the legacy platform in a DR site and spent more time validating DR."

- Kingston Hui, Principal Service Engineering Manager, Microsoft Universal Store

  • User flexibility to select DR region: You can replicate and protect IaaS based applications running on Azure to a different Azure region of your choice within a geographical cluster.
  • Best-in-class RPO and RTO: Azure Site Recovery is backed by a 99.9 percent SLA and 24/7 support to keep your enterprise running smoothly. With best-in-class recovery point objective (RPO) and recovery time objective (RTO), you can feel confident that your Azure applications will be available and compliant.

“ASR has helped Finastra refine our DR posture through intuitive configuration of replication between Azure regions.  It’s currently our standard platform for disaster recovery and handling thousands of systems with no issues regarding scale or adherence to our tight RPO/RTO requirements."

- Bryan Heymann, Director, Systems & Architecture, D+H

  • Simplified experience with automatic DR resource creation: Enabling cross-region DR for an application is so simple that all you need to do is select the VMs you want to protect, choose a target Azure region, review replication settings and you are good to go. The required target resources such as virtual network and storage are automatically created by ASR.
  • Non-disruptive DR drills: With ASR’s test failover capability, you can easily perform a DR drill anytime without any impact to the primary production application or to ongoing replication, giving you the confidence that your DR solution will work when you need it.

“Azure Site Recovery efficiently provides DR protection to our Azure global infrastructure. With 'Azure to Azure DR', we can accommodate application criticality and data movement requirements of each application environment independently. ASR offers a powerful approach to a complex issue. It works well with our hybrid network model and we can perform DR drills in a simple way." 

- Roberto Corradini, Global CTO of Luxottica

  • Orchestrated application recovery: ASR's powerful Recovery Plans allows you to orchestrate the recovery of your entire application so that you can meet the strict recovery time requirements that your business demands.
  • Comprehensive monitoring and troubleshooting: ASR’s advanced monitoring capabilities such as the vault dashboard and email notifications let you easily monitor DR health and failover readiness, and troubleshoot any issues quickly.
  • Comprehensive OS coverage: ASR supports both Windows and Linux operating systems. ASR’s monthly release cadence ensures the latest Linux OS versions are supported.
  • In-built compression to reduce network egress: ASR continually replicates data from source region to target region. The in-built compression technology reduces the network egress data by about 40 to 80 percent.
  • Support for latest Azure features: As a fully integrated offering, ASR is updated with new Azure features as they’re released. ASR supports all Azure features such as classic and resource manager virtual machines, managed and unmanaged disks and large disks.
  • Automatic updates: Azure Site Recovery has a monthly release cadence where enhancements to existing features or new ones are added and known issues, if any, are fixed. You can configure automatic updates to be always on the latest version and also avoid overhead of managing deployment of patches.

Disaster Recovery between Azure regions is available in all Azure regions where ASR is available. Get started with Azure Site Recovery today.

Related links and additional content

Column-Level Security is now supported in Azure SQL Data Warehouse

$
0
0

Today we’re announcing Column-Level Security (CLS) for Azure SQL Data Warehouse, an additional capability for managing security for sensitive data. Azure SQL Data Warehouse is a fast, flexible and secure cloud data warehouse tuned for running complex queries fast and across petabytes of data.

As you move data to the cloud, securing your data assets is critical to building trust with your customers and partners. With the introduction of CLS, you can adjust permissions to view sensitive data by limiting user access to specific columns in your tables without having to redesign your data warehouse. This simplifies the overall security implementation as the access restriction logic is located in the database tier itself rather than away from the data in another application. CLS eliminates the need to introduce views to filter out columns for access control management.

Some examples of how this is being used today:

  • A financial services firm allows only account managers to have access to customer social security numbers (SSN), phone numbers, and other personally identifiable information (PII).
  • A health care provider allows only doctors and nurses to have access to sensitive medical records while not allowing members of the billing department to view this data.

CLS-blog

Access to the table columns can be controlled based on the user's execution context or their group membership with the standard GRANT T-SQL statement. To secure your data, you simply define a security policy via the GRANT statement to your table columns. For example, if you would like to limit access to PII data in your customers table, you can simply GRANT SELECT permissions on specific columns to the ContractEmp role:

GRANT SELECT ON dbo.Customers (CustomerId, FirstName, LastName) TO ContractEmp;

This capability is available now in all Azure regions with no additional charge. Azure SQL Data Warehouse continues to lead in the areas of security, compliance, privacy and auditing. For more information, refer to this whitepaper on Microsoft Trust Center.

Next Steps

Azure Service Bus is now offering support for Availability Zones in preview

$
0
0

Azure Availability Zones support for Service Bus Premium provides an industry-leading, financially-backed SLA with fault-isolated locations within an Azure region, providing redundant power, cooling, and networking. This preview begins with Central US, East US 2, and France Central.

This feature adds even more resiliency and fault tolerance capabilities to organizations in Finance, Healthcare, Retail, or other verticals that handle sensitive mission-critical data and transactions that simply cannot be lost or significantly impacted when using cloud messaging services.

Also, support for Availability Zones (AZ) combined with disaster recovery features offers high availability and fault tolerance that can withstand zone and regional outages.

Availability Zone support for Service Bus takes another step in the direction of keeping to our commitments in making sure customer cloud messaging between applications and services run as smoothly as possible. 

What regions will this be offered in during preview?

  • Central US
  • East US 2
  • France Central

Support for additional regions will be offered soon. Learn more about Availability Zones.  

How can you enable AZ on your Service Bus premium namespace?

You can enable Availability Zones on new namespaces only, we do not support migration of existing namespaces. 

If using an ARM template to create a Service Bus Premium namespace it is as simple as specifying an AZ supported region and setting the zoneRedundant property to true in the template:

"resources": [

     {
       "apiVersion": "2018-01-01-preview",
       "name": "[parameters('serviceBusNamespaceName')]",
       "type": "Microsoft.ServiceBus/namespaces",
       "location": "[parameters('location')]",
       "sku": {
         "name": "Premium"
       },
   "properties": {
   "zoneRedundant":true
   }
     }
   ],

You can also enable zone-redundancy by creating a new namespace in the portal as shown below. It’s important to note that you cannot disable zone redundancy after enabling it on your namespace.

Availability Zones

Learn more about Azure Service Bus

Azure Event Hubs is now offering support for Availability Zones in preview

$
0
0

Azure Event Hubs makes streaming data effortless because of its simplicity and ability to scale easily. The sheer volume of data that goes through the Event Hubs platform is a testament to how reliable the service is. In fact, by the time you finish reading this sentence, Event Hubs will have ingested over 100 million events globally.

Today, we are adding to the durability of the service and offering support for Availability Zones in public preview for Standard Event Hubs. This new feature adds even greater resiliency and fault tolerance to the top event streaming service. Support for Availability Zones partners nicely with our disaster recovery feature to offer a highly available service that can withstand both a zone outage and a regional one when both are properly utilized.

Event Hubs has customers in Retail, Auto, Finance, and other verticals that use its streaming capabilities for scenarios such as predictive analytics and financial trading. Availability Zones support further enhances our commitment to keeping our customers’ workloads running as smoothly as possible. We hope you try out this new feature.

What regions will this be offered?

  • Central US
  • East US 2
  • France Central

We’ll be offering support for additional Availability Zones enabled regions soon. Learn more about Availability Zones.

How can you enable Availability Zones on your Standard Event Hubs namespace?

You can enable Availability Zones on new namespaces only. We do not support migration of existing namespaces.

If using an ARM template to create a Standard Event Hubs namespace, it is as simple as specifying an Availability Zone supported region and setting the zoneRedundant property to true in the template:

"resources": [

{

"apiVersion": "2018-01-01-preview",

"name": "[parameters('eventHubNamespaceName')]",

"type": "Microsoft.EventHub/namespaces",

"location": "[parameters('location')]",

"sku": {

"name": "Standard"

},

"properties": {

"zoneRedundant":true

}

}

],

You can also enable zone-redundancy by creating a new namespace in the portal as shown below. It’s important to note that you cannot disable zone redundancy after enabling it on your namespace.

Enable Availability Zones on your Event Hubs in the Azure portal

 

Learn more about Azure Event Hubs.

Traffic Analytics now generally available

$
0
0

We are excited to announce the general availability (GA) of the Traffic Analytics, a SaaS solution that provides visibility into user and application traffic on your cloud networks.

Since the public preview, three months ago, the solution has analyzed several terabytes of Flow logs on a regular basis for network activity across virtual subnets, VNets, Azure data center regions and VPNs, and provided actionable insights that helped our customers:

  • Audit their networks and root out shadow-IT and non-compliant workloads.
  • Optimize the placement of their workloads and improve the user experience for their end users.
  • Detect security issues and improve application and data security.
  • Reduce costs and right size their deployments by eliminating the issue of over-provisioning or under-utilization.
  • Gain visibility into their public cloud networks spanning multiple Azure regions across numerous subscriptions.

This GA release includes enhancements that help you detect issues and secure/optimize your network, faster and more intuitively than before.

Some of the enhancements in this release are:

  • Your environment: Provides a view into your entire Azure network, identifies inactive regions, virtual networks, and subnets – for example, network locations with VMs and no network activity for further analysis. Detects malicious flows as they flow across application gateways, subnets, and networks. Indicate open ports conversing over the Internet and hosts sending traffic to the Internet to qualify possible threats.

Your environment

Figure 1: Your environment provides an overview of your cloud network with drill-down into regions, VNets, and subnets with intuitive and visually rich network maps.

  • Summary view: Provides a summary of allowed, blocked, benign, and malicious flows across inbound and outbound traffic. Unusual increase in traffic types merit forensic investigations, such as higher number of allowed malicious flows and higher number of benign blocked flows.

Dashboard_1 Blog

Figure 2: Traffic Summary highlights the allowed malicious flows and large number of benign, but blocked, flows.

  • Application activity: Identify workload activity including applications generating or consuming the most flows and the top VM conversation pairs at granularities ranging from VNets to hosts. Secure your network using insights from malicious and blocked traffic by the application/port, or update your network security groups (NSG) to allow normal traffic. For example, identify which ports are open for communication and allowing malicious flows. These merit further investigation and possible update in NSG configuration.

Host Blog

Figure 3: Traffic flow distribution at host, subnet, and VNet granularity.

Application Port Blog

Figure 4: Flow by port determines the top applications on the network and the top consumers.

  • Capacity planning: VPNs constitute an important medium for hybrid and inter-VNet connectivity. View utilization across your gateways, and detect under-utilized or maxed-out gateways. Use the list of top VPN connections per gateway to understand your traffic patterns, distribute  traffic load, and eliminate downtime due to under provisioning.

VPN GW Blog

Figure 5: Capacity utilization of VPN gateways.

  • Application Gateway and Load Balancer support: Traffic Analytics now extends its analytics capabilities to include traffic flowing through Azure Application Gateways and Load Balancers. Get insights on traffic pattern, resources impacted by malicious traffic, and traffic distribution to backend pool instances and hosts.

Flow statistics

Figure 6: Flow statistics for Application Gateways and Load Balancers.

  • Secure your cloud network with NSG insights: Gain detailed statistics ranging from the top five NSGs and NSG rules to detailed flow information, allowing you to answer the questions, “How effective are your NSGs?”, “What are the top rules per NSG?”, “Are they allowing traffic from malicious sources?”, “What are the flow statistics per NSG?”, “What are the top talking pairs per NSG?”, and more.

NSG2 Blog

Figure 7: Detailed statistics on NSGs and time series charts.

  • Automate your deployment: Have several NSGs across regions that need to be enabled for analysis? Traffic Analytics now supports PowerShell (v6.2.1 and higher) to get you up and analyzing in minutes. To learn more, check out our documentation.
  • More regions: You can now add a workspace in South East Asia and/or analyze NSGs in this Azure region. Check out the FAQ for the complete list of supported regions.

Get started

To get started, see the detailed instructions on how to setup Traffic Analytics.

We are listening!

Thank you for trying out Traffic Analytics and providing feedback. Continue to send us your suggestions via the UserVoice page.

Have a question?

Check out the Traffic Analytics FAQ.


Microsoft deepens its commitment to Apache Hadoop and open source analytics

$
0
0

DATAWORKS SUMMIT, SAN JOSE, Calif., June 18, 2018 – Earlier today, the Microsoft Corporation deepened its commitment to the Apache Hadoop ecosystem and its partnership with Hortonworks that has brought the best of Apache Hadoop and the open source big data analytics to the Cloud. Since the start of the partnership nearly six years ago, hundreds of the largest enterprises have chosen to use Azure HDInsight and Hortonworks to run Hadoop, Spark and other Open Source analytics workloads on Azure. Also, during this time, Microsoft has become one of the leading committers to Apache projects, sharing its experience running one of largest data lakes on the planet, with the open source community.

Azure HDInsight

Azure HDInsight is a fully managed cluster service that enables customers to process and gain insights from massive amounts of data using Hadoop, Spark, Hive, HBase, Kafka, Storm and distributed R. Azure HDInsight offers the latest Hortonworks Data Platform (HDP) distribution and related Open Source projects on the Linux OS. The service is available in 26 public regions and Azure Government Clouds in the US and Germany.
 
The Big Data and Hadoop community has rapidly evolved over the past few years. Azure HDInsight has supported these innovations and made them available to enterprise customers by adding support for projects like Apache Spark, Apache Kafka (for scalable data ingestion) and Hive LLAP (for data warehousing and interactive querying) to the service.

Enterprises looking to “lift and shift” their on-premises Hadoop and Spark workloads to Azure HDInsight value the industry leading 99.9 percent availability SLA, integration with Azure Log Analytics, Active Directory and automated self-healing services. With its support for Virtual Network (VNET) based network isolation, transparent data encryption and a wide array of industry standard certifications (incl. GDPR), Azure HDInsight is well-suited for some of the most security and compliance focused enterprises in highly regulated industries such as healthcare, finance, banking etc.

For developers, data scientists and analysts, who are at the core of any big data application, Azure HDInsight offers rich development and debugging capabilities in a tool of their choice; IntelliJ, Eclipse, VSCode, Jupyter and Zeppelin notebooks, and more. 

The Hadoop world has always had a rich and varied ecosystem of projects and applications supported by many commercial software providers. Azure HDInsight supports this ecosystem by making the most popular big data applications available on Azure Marketplace to customers through a simple one-click install experience.

“Open source analytics solutions are at the core of Microsoft’s analytics strategy,” said Ryan Waite, Director of Big Data Analytics for Azure. “We are continuing to invest in Azure HDInsight to make it easier and more efficient for customers to adopt Hadoop in Azure. In December 2017, we announced up to a 52 percent price reduction in Azure HDInsight and today we are delighted to reaffirm our commitment to the Hadoop community. Within Microsoft, we have not only adopted Apache YARN for our internal data lake, we have enhanced it to meet the increased scale and efficiency requirements. All of these improvements have been contributed back to the open source community, most recently in the Apache YARN 2.9 release.”

Hadoop on IaaS

While Azure HDInsight is the best suited for customers looking for a PaaS-like service offering where they can focus on their applications, some customers may want to run their own Hadoop/Spark distributions or want more control over how they operate their clusters.
 
Azure is still the best platform for such do-it-yourself (DIY) customers. With access to a very broad set of VM SKUs, Premium Disks for performance and Reserved Instances or Low Priority VMs for cost control, customers can balance performance and cost within the same Azure environment.

Microsoft is contributing to Hadoop

Microsoft’s commitment to Apache projects in general and Hadoop and Spark go beyond just making these services available on Azure. Services like Azure Data Lake Analytics and the largest internal data lake now run on Apache Hadoop and YARN. Its seven committers have added nearly 200,000 lines of code in YARN, actively contributing back all the learnings and improvements needed to run YARN efficiently and reliably across data center scale clusters (10s of 1000s of nodes). This includes leading the Apache Hadoop 2.9 release where Microsoft contributed new capabilities such as YARN federation (dealing with scale), opportunistic tokens (pushing higher cluster utilization), deadline-based scheduling and resource prediction (enabling SLA bound jobs), together with numerous big fixes and performance improvements.

Get started with Azure HDInsight today

"At Johnson Controls, we use Azure HDInsight for performing real-time and batch analysis of sensor data that we collect from over 6,000 Connected Industrial Chillers deployed across the world. Azure HDInsight offers us the scalability, reliability, high-availability, performance, security and ease of deployment that we need in our production infrastructure to consistently deliver value to our customers," said Vaidhyanathan Venkiteswaran, Platform Engineering Manager, Data Enabled Business, Johnson Controls.

Come join the many enterprises that are already using Hadoop and Spark on Azure to build a variety of different applications such as batch processing, ETL, Data Warehousing, Machine Learning, IoT and more.

We hope you take full advantage of today’s announcements and are excited to see what you will build with Azure. Read this developer guide to learn more about implementing big data pipelines and architectures on Azure HDInsight. Stay up-to-date on the latest Azure HDInsight news and features by following us on Twitter #HDInsight and @AzureHDInsight. For questions and feedback – please reach out to AskHDInsight@microsoft.com.

Location and Maps in Azure IoT Central powered by Azure Maps

$
0
0

Azure IoT Central brings the simplicity of SaaS for IoT with built-in support for IoT best practices and world class security and scalability with no cloud expertise required. We have been constantly adding features and true to the promise of SaaS applications, you can just start using new features right away to build production-grade applications without worrying about managing infrastructure.

This blog post is part of a series of blog posts you will start seeing for new features in Azure IoT Central in the upcoming weeks.

Azure IoT Central now leverages Azure Maps. A portfolio of geospatial functionalities natively integrated into Azure to enable users with fresh mapping data necessary to provide geographic context to their location aware IoT applications. We received several interests from public preview customers to leverage geospatial services for various use cases ranging from simply localizing their devices, validating location information, spatially referencing device locations on a map, to geofencing use cases around their devices. As any other property in Azure IoT Central, location metadata can be persisted on the cloud and updated either by the device itself (device properties) or the user (application properties). By integrating with Azure Maps, user can now give geographic context to their location property and map any latitude and longitude of a street address, or simply latitude and longitude coordinates.

For this first release, Azure IoT Central customers can configure a location property in their device template and pass addresses or coordinates as values. This feature uses the Azure Maps Search Service, to find addresses and places from around the world. Azure Maps supports address level geocoding in 38 regions, cascading to house numbers, street-level, and city level geocoding for other regions of the world.

locationcloudproperty2

After configuring a location property, in the Device dashboard, an Azure IoT Central customer will also be able to add map tiles. For this, IoT Central uses the Azure Maps JavaScript Control Services to allow layering the configured location property atop of Azure’s Maps right in the Device Dashboards. User can interact with the map tiles.

locationcloudproperty7map

Similarly, Azure IoT Central users can add a location map tile in the Device Sets dashboard which will display the configured location for all the devices in the set on a map.

Device Sets Dashboard

In addition, if you are a device developer get started with the MXChip IoT DevKit device using the Azure IoT Central Sample DevKits which will contain an example of device location property and maps, all powered by Azure Maps!

Further Reading

To explore the full set of features and capabilities, start your 30-day free trial and learn more on our website. Check out our documentation including tutorials to connect your first device. Have feedback or questions? Don’t hesitate to write to us at iotcfeedback@microsoft.com.

To learn more about the Azure IoT portfolio including latest news, visit the Microsoft Azure IoT page.

What’s new in VSTS Sprint 135 Update

$
0
0
The Sprint 135 Update of Visual Studio Team Services (VSTS) has rolled out to all accounts. In this Update release progress gets a lot more visual. With the new release progress views, artifacts, environments, and deployment progress are now presented in a much more rich and graphical way so that you can spot problems or... Read More

.NET Core 2.0 will reach End of Life on September 1, 2018

$
0
0

.NET Core 2.0 was released on August 14, 2017. As a non-LTS release, it is supported for 3 months after the next release. .NET Core 2.1 was released on May 30th, 2018. As a result, .NET Core 2.0 will be supported until September 1, 2018.

After that time, .NET Core patch updates will no longer include updated packages of container images for .NET Core 2.0. You should plan your upgrade from .NET Core 2.0 to 2.1 now.

Upgrade to .NET Core 2.1

The supported upgrade path from .NET Core 2.0 is via .NET Core 2.1. Instructions for upgrading can be found in the following documents:

.NET Core 2.1 will be a long-term support release. We recommend that you make .NET Core 2.1 your new standard for .NET Core development.

Microsoft Support Policy

Microsoft has a published support policy for .NET Core. It includes policies for two release types: LTS and Current. .NET Core 2.0 is a Current release.

  • LTS releases include features and components that have been stabilized, requiring few updates over a longer support release lifetime. These releases are a good choice for hosting applications that you do not intend to update often.
  • Current releases include features and components that are new and that may undergo future change based on feedback. These releases are a good choice for applications in active development, giving you access to the latest features and improvements. You need to upgrade to later .NET Core releases more often to stay in support.

Both types of releases receive critical fixes throughout their lifecycle, for security, reliability, or to add support for new operating system versions. You must stay up-to-date with the latest patches to qualify for support.

See .NET Core Supported OS Lifecycle Policy to learn about Windows, macOS and Linux versions that are supported for each .NET Core release.

PYPL Language Rankings: Python ranks #1, R at #7 in popularity

$
0
0

The new PYPL Popularity of Programming Languages (June 2018) index ranks Python at #1 and R at #7.

PYPLJune018

Like the similar TIOBE language index, the PYPL index uses Google search activity to rank language popularity. PYPL, however, fcouses on people searching for tutorials in the respective languages as a proxy for popularity. By that measure, Python has always been more popular than R (as you'd expect from a more general-purpose language), but both have been growing at similar rates. The chart below includes the three data-oriented languages tracked by the index (and note the vertical scale is logarithmic).

PYPL trend Jun 2018

Another language ranking was also released recently: the annual KDnuggets Analytics, Data Science and Machine Learning Poll. These rankings, however, are derived not from search trends but by self-selected poll respondents, which perhaps explains the presence of Rapidminer at the #2 spot.

Kdnuggets

Viewing all 10804 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>